summaryrefslogtreecommitdiffstats
path: root/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
diff options
context:
space:
mode:
Diffstat (limited to 'UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc')
-rw-r--r--UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc9
1 files changed, 7 insertions, 2 deletions
diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
index 5217de31e4..b8068fd91c 100644
--- a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
+++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
@@ -37,7 +37,7 @@
# MSFT
#
MSFT:*_*_*_CC_FLAGS = /EHsc
- MSFT:*_*_*_DLINK_FLAGS == /out:"$(BIN_DIR)\$(MODULE_NAME_GUID).exe" /pdb:"$(BIN_DIR)\$(MODULE_NAME_GUID).pdb" /IGNORE:4001 /NOLOGO /SUBSYSTEM:CONSOLE /DEBUG /STACK:0x40000,0x40000 /NODEFAULTLIB:libcmt.lib libcmtd.lib
+ MSFT:*_*_*_DLINK_FLAGS == /out:"$(BIN_DIR)\$(MODULE_NAME_GUID).exe" /pdb:"$(BIN_DIR)\$(MODULE_NAME_GUID).pdb" /IGNORE:4001 /NOLOGO /SUBSYSTEM:CONSOLE /DEBUG /STACK:0x40000,0x40000 /WHOLEARCHIVE
MSFT:*_*_IA32_DLINK_FLAGS = /MACHINE:I386
MSFT:*_*_X64_DLINK_FLAGS = /MACHINE:AMD64
@@ -56,7 +56,12 @@
#
GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/$(MODULE_NAME_GUID) -m32 -no-pie
GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(MODULE_NAME_GUID) -m64 -no-pie
- GCC:*_*_*_DLINK2_FLAGS == -lgcov -lpthread -lstdc++ -lm
+ #
+ # Surround our static libraries with whole-archive, so constructor-based test registration works properly.
+ # Note that we need to --no-whole-archive before linking system libraries.
+ #
+ GCC:*_*_*_DLINK_FLAGS = -Wl,--whole-archive
+ GCC:*_*_*_DLINK2_FLAGS == -Wl,--no-whole-archive -lgcov -lpthread -lstdc++ -lm
#
# Need to do this link via gcc and not ld as the pathing to libraries changes from OS version to OS version