VirtualBox

Changeset 93254 in vbox


Ignore:
Timestamp:
Jan 16, 2022 11:15:57 PM (3 years ago)
Author:
vboxsync
Message:

/Config.kmk,Support/Makefile.kmk: Extra 5 support files from libcmt.lib for use with SUPR3HardeningStatic that allows us to compile with /GS and /guard. This also includes a load config. bugref:10162

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r93252 r93254  
    35003500
    35013501#
     3502# Version dependent Visual C++ stuff.
     3503#
     3504if1of (win, $(KBUILD_TARGET) $(KBUILD_HOST))
     3505 ifn1of ($(VBOX_VCC_TOOL_STEM), VCC100 VCC110 VCC120)
     3506  ifndef VBOX_WITHOUT_CONTROL_FLOW_GUARD
     3507   VBOX_VCC_CC_GUARD_CF        = -guard:cf
     3508   VBOX_VCC_LD_GUARD_CF        = -Guard:CF
     3509  else
     3510   VBOX_VCC_CC_GUARD_CF        =
     3511   VBOX_VCC_LD_GUARD_CF        =
     3512  endif
     3513  VBOX_VCC_LD_HIGH_ENTRYOPY_VA = /HighEntropyVA
     3514 else
     3515  VBOX_VCC_CC_GUARD_CF         =
     3516  VBOX_VCC_LD_GUARD_CF         =
     3517  VBOX_VCC_LD_HIGH_ENTRYOPY_VA =
     3518 endif
     3519 ifn1of ((VBOX_VCC_TOOL_STEM), VCC100 VCC110 VCC120 VCC140 VCC141)
     3520  # 16.7 and later, so not in our linker yet.
     3521  ## @todo BUGBUG! Update VCC before 7.0 is released.
     3522  #VBOX_VCC_LD_CET_COMPAT       = /CetCompat
     3523  VBOX_VCC_LD_CET_COMPAT       =
     3524 else
     3525  VBOX_VCC_LD_CET_COMPAT       =
     3526 endif
     3527endif
     3528
     3529#
    35023530# Compiler optimization flags.
    35033531#
     
    50075035TEMPLATE_VBoxR0_RCDEFS              = VBOX_SVN_REV=$(VBOX_SVN_REV) VBOX_SVN_REV_MOD_5K=$(expr $(VBOX_SVN_REV) % 50000)
    50085036TEMPLATE_VBoxR0_CXXFLAGS            = -Zi -Zl -GR- -EHs- -GF -GS- -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP) \
    5009         -Gy $(VBOX_VCC_WARN_ALL) -wd4505 $(VBOX_VCC_WERR)
     5037        -Gy $(VBOX_VCC_CC_GUARD_CF) $(VBOX_VCC_WARN_ALL) -wd4505 $(VBOX_VCC_WERR)
    50105038 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC120"
    50115039TEMPLATE_VBoxR0_CXXFLAGS           += -Gw
    50125040 endif
    5013  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5014 TEMPLATE_VBoxR0_CXXFLAGS           += -guard:cf
    5015  endif
    50165041 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    50175042TEMPLATE_VBoxR0_CXXFLAGS           += /analyze
     
    50195044TEMPLATE_VBoxR0_CFLAGS              = $(TEMPLATE_VBoxR0_CXXFLAGS)
    50205045TEMPLATE_VBoxR0_LDFLAGS             = -Ignore:4197 \
    5021         -Driver -Subsystem:NATIVE -Incremental:NO -Align:4096 -MapInfo:Exports -NoD $(VBOX_VCC_LD_WERR) -Release -Debug -Opt:Ref -Opt:Icf \
     5046        -Driver -Subsystem:NATIVE -Incremental:NO -Align:4096 -MapInfo:Exports -NoD $(VBOX_VCC_LD_WERR) \
     5047        -Release -Debug -Opt:Ref -Opt:Icf $(VBOX_VCC_LD_GUARD_CF) \
    50225048        -Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    50235049        -Stub:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com
     
    50285054  TEMPLATE_VBoxR0_LDFLAGS          += -IntegrityCheck
    50295055 endif
    5030  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5031 TEMPLATE_VBoxR0_LDFLAGS            += -Guard:CF
    5032  endif
     5056TEMPLATE_VBoxR0_LDFLAGS.win.amd64   = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    50335057TEMPLATE_VBoxR0_LIBS                = \
    50345058        $(PATH_STAGE_LIB)/RuntimeR0Stub$(VBOX_SUFF_LIB)
     
    51915215 TEMPLATE_VBOXR0DRV_DEFS.win           = IPRT_NT_MAP_TO_ZW
    51925216 TEMPLATE_VBOXR0DRV_CXXFLAGS           = -Zi -Zl -GR- -EHs- -GF -Gz -GS- -Zc:wchar_t- $(VBOX_VCC_FP) -Gs4096 $(VBOX_VCC_OPT) \
    5193         -Gy $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
     5217        -Gy $(VBOX_VCC_CC_GUARD_CF) $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
    51945218 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC120"
    51955219  TEMPLATE_VBOXR0DRV_CXXFLAGS         += -Gw
    5196  endif
    5197  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5198   TEMPLATE_VBOXR0DRV_CXXFLAGS         += -guard:cf
    51995220 endif
    52005221 ifdef VBOX_WITH_MSC_ANALYZE_THIS
     
    52045225 TEMPLATE_VBOXR0DRV_LDFLAGS            = -Ignore:4197 \
    52055226        -Driver -Subsystem:NATIVE -Incremental:NO -Align:4096 -MapInfo:Exports -NoD -Release -Debug -Opt:Ref -Opt:Icf \
     5227        $(VBOX_VCC_LD_GUARD_CF) \
    52065228        -Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    52075229        -Stub:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com
     
    52125234  TEMPLATE_VBOXR0DRV_LDFLAGS          += -IntegrityCheck
    52135235 endif
    5214  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5215   TEMPLATE_VBOXR0DRV_LDFLAGS          += -Guard:CF
    5216  endif
     5236 TEMPLATE_VBOXR0DRV_LDFLAGS.win.amd64  = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    52175237 TEMPLATE_VBOXR0DRV_ORDERDEPS          = $(VBOX_SIGN_DRIVER_ORDERDEPS)
    52185238 TEMPLATE_VBOXR0DRV_POST_CMDS          = $(VBOX_SIGN_DRIVER_CMDS)
     
    57545774 endif
    57555775 TEMPLATE_VBOXR3EXE_CXXFLAGS           = -Zi -Zl -GR- -EHsc -GF -MD$(VBOX_VCC_CRT_TYPE) -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP) \
    5756         -Gy $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
     5776        -Gy $(VBOX_VCC_CC_GUARD_CF) $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
    57575777 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC120"
    57585778  TEMPLATE_VBOXR3EXE_CXXFLAGS         += -Gw
    5759  endif
    5760  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5761   TEMPLATE_VBOXR3EXE_CXXFLAGS         += -guard:cf
    57625779 endif
    57635780 ifdef VBOX_WITH_MSC_ANALYZE_THIS
     
    57775794 TEMPLATE_VBOXR3EXE_LDFLAGS            = -Ignore:4197 \
    57785795        /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LargeAddressAware /DynamicBase /NxCompat /Release /Debug /Opt:Ref /Opt:Icf \
     5796        $(VBOX_VCC_LD_GUARD_CF) \
    57795797        /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    57805798        /STUB:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com \
     
    57915809   TEMPLATE_VBOXR3EXE_LDFLAGS         += -IntegrityCheck
    57925810 endif
    5793  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    5794   TEMPLATE_VBOXR3EXE_LDFLAGS          += -Guard:CF
    5795  endif
     5811 TEMPLATE_VBOXR3EXE_LDFLAGS.win.amd64   = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    57965812
    57975813 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC140"
     
    67856801  TEMPLATE_VBOXMAINEXE_SDKS              = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
    67866802 endif
    6787  TEMPLATE_VBOXMAINEXE_CXXFLAGS           = -Zi -Zl -GR -EHsc -GF -MD$(VBOX_VCC_CRT_TYPE) -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
     6803 TEMPLATE_VBOXMAINEXE_CXXFLAGS           = -Zi -Zl -GR -EHsc -GF -MD$(VBOX_VCC_CRT_TYPE) -Zc:wchar_t- \
     6804        $(VBOX_VCC_OPT) $(VBOX_VCC_FP) $(VBOX_VCC_CC_GUARD_CF)
    67886805 #    -wd4625: 'DisplaySourceBitmap' : copy constructor could not be generated because a base class copy constructor is inaccessible
    67896806 #    -wd4626: 'DisplaySourceBitmap' : assignment operator could not be generated because a base class assignment operator is inaccessible
     
    67946811 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC120"
    67956812  TEMPLATE_VBOXMAINEXE_CXXFLAGS         += -Gw
    6796  endif
    6797  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    6798   TEMPLATE_VBOXMAINEXE_CXXFLAGS         += -guard:cf
    67996813 endif
    68006814 ifdef VBOX_WITH_MSC_ANALYZE_THIS
     
    68146828 TEMPLATE_VBOXMAINEXE_LDFLAGS            = -Ignore:4197 \
    68156829        /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LargeAddressAware /DynamicBase /NxCompat /Release /Debug /Opt:Ref /Opt:Icf \
     6830        $(VBOX_VCC_LD_GUARD_CF) \
    68166831        /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    68176832        /STUB:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com \
     
    68316846  TEMPLATE_VBOXMAINEXE_LDFLAGS          += -IntegrityCheck
    68326847 endif
    6833  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    6834   TEMPLATE_VBOXMAINEXE_LDFLAGS          += -Guard:CF
    6835  endif
    68366848 ifdef VBOX_WITH_DTRACE_R3_MAIN
    68376849  TEMPLATE_VBOXMAINEXE_LDFLAGS          += -Merge:VTGPrLc.Data=VTGPrLc.Begin -Merge:VTGPrLc.End=VTGPrLc.Begin -Merge:VTGPrLc.Begin=VTGObj
    68386850 endif
     6851 TEMPLATE_VBOXMAINEXE_LDFLAGS.win.amd64  = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    68396852 TEMPLATE_VBOXMAINEXE_LIBS               = \
    68406853        $(LIB_RUNTIME)
     
    74387451     QT_DLL _CRT_SECURE_NO_DEPRECATE \
    74397452     $(QMAKE_PRL_DEFINES)
    7440   TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = -nologo -Zm200 -MD -Zi -EHsc -Zc:wchar_t-
     7453  TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = -nologo -Zm200 -MD -Zi -EHsc -Zc:wchar_t- $(VBOX_VCC_CC_GUARD_CF)
    74417454  #    -wd4481: nonstandard extension used: override specifier 'override'
    74427455  #    -wd4625: 'QRubberBand' : copy constructor could not be generated because a base class copy constructor is inaccessible
     
    74647477  TEMPLATE_VBOXQTGUIEXE_CXXFLAGS += -Gw
    74657478  endif
    7466   if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    7467    TEMPLATE_VBOXR0DRV_CXXFLAGS += -guard:cf
    7468   endif
    74697479  ifdef VBOX_WITH_MSC_ANALYZE_THIS
    74707480   TEMPLATE_VBOXR0DRV_CXXFLAGS += /analyze
     
    74797489  TEMPLATE_VBOXQTGUIEXE_LDFLAGS = -Ignore:4197 \
    74807490        /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LargeAddressAware /DynamicBase /NxCompat /Release /Debug /Opt:Ref /Opt:Icf \
     7491        $(VBOX_VCC_LD_GUARD_CF) \
    74817492        /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    74827493        /STUB:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com
     
    74847495   TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -IntegrityCheck
    74857496  endif
    7486   if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    7487    TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -Guard:CF
    7488   endif
     7497  TEMPLATE_VBOXQTGUIEXE_LDFLAGS.win.amd64 = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    74897498
    74907499  TEMPLATE_VBOXQTGUIEXE_SDKS += $(VBOX_WINPSDK)
     
    77477756  TEMPLATE_VBoxBldProg_SDKS             := ReorderCompilerIncs $(VBOX_WINPSDK)
    77487757 endif
    7749  TEMPLATE_VBoxBldProg_CXXFLAGS          := -Zi -Zl -GR- -EHsc -GF -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP) -MT$(VBOX_VCC_CRT_TYPE) \
    7750         -Gy $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
     7758 TEMPLATE_VBoxBldProg_CXXFLAGS          := -Zi -Zl -GR- -EHsc -GF -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP) \
     7759        -MT$(VBOX_VCC_CRT_TYPE) -Gy $(VBOX_VCC_CC_GUARD_CF) $(VBOX_VCC_WARN_ALL) $(VBOX_VCC_WERR)
    77517760 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC120"
    77527761  TEMPLATE_VBoxBldProg_CXXFLAGS         += -Gw
    7753  endif
    7754  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    7755   TEMPLATE_VBoxBldProg_CXXFLAGS         += -guard:cf
    77567762 endif
    77577763 ifdef VBOX_WITH_MSC_ANALYZE_THIS
     
    77767782 TEMPLATE_VBoxBldProg_LDFLAGS            = -Ignore:4197 \
    77777783        /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LargeAddressAware /DynamicBase /NxCompat /Release /Debug /Opt:Ref /Opt:Icf \
     7784        $(VBOX_VCC_LD_GUARD_CF) \
    77787785        /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
    77797786        /DISALLOWLIB:libc$(VBOX_VCC_CRT_TYPE_N).lib \
     
    77897796        /DISALLOWLIB:ucrt.lib \
    77907797        /DISALLOWLIB:ucrtd.lib
    7791  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
    7792   TEMPLATE_VBoxBldProg_LDFLAGS           += -Guard:CF
    7793  endif
     7798 TEMPLATE_VBoxBldProg_LDFLAGS.win.amd64  = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA)
    77947799 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC140"
    77957800  TEMPLATE_VBoxBldProg_LIBS               = \
  • trunk/src/VBox/HostDrivers/Support/Makefile.kmk

    r93239 r93254  
    432432  SUPR3HardenedStatic_SOURCES.win += \
    433433        $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/chkstk.obj
     434
     435  # And a few extracted from the static libc to support -guard and cookes.
     436  # In 14.2 these files does not import anything from the win32 API and are
     437  # mostly tiny bits of code. Needs not initialization that I can spot.
     438  ifneq ($(VBOX_VCC_LD_GUARD_CF),)
     439   SUPR3HardenedStatic_SOURCES.win += \
     440        $(SUPR3HardenedStatic_0_OUTDIR)/loadcfg.obj \
     441        $(SUPR3HardenedStatic_0_OUTDIR)/gs_cookie.obj \
     442        $(SUPR3HardenedStatic_0_OUTDIR)/guard_support.obj \
     443        $(SUPR3HardenedStatic_0_OUTDIR)/guard_dispatch.obj \
     444        $(SUPR3HardenedStatic_0_OUTDIR)/guard_xfg_dispatch.obj
     445
     446$$(SUPR3HardenedStatic_0_OUTDIR)/loadcfg.obj \
     447$$(SUPR3HardenedStatic_0_OUTDIR)/gs_cookie.obj \
     448$$(SUPR3HardenedStatic_0_OUTDIR)/guard_support.obj \
     449$$(SUPR3HardenedStatic_0_OUTDIR)/guard_dispatch.obj \
     450$$(SUPR3HardenedStatic_0_OUTDIR)/guard_xfg_dispatch.obj \
     451        : \
     452                $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/libcmt.lib | $$(dir $$@)
     453        set -x; $(TOOL_$(VBOX_VCC_TOOL)_AR) "/EXTRACT:$$($(TOOL_$(VBOX_VCC_TOOL)_AR) /LIST "$<" | $(SED_EXT) -e '/$(notdir $@)/!d' )" "/OUT:$@" "$<"
     454  endif
    434455 endif
    435456endif
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette