mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
d3687ed881
by always unconditionally enabling "String Pooling" /GF Pros: - consistency between the toolchains, as GCC always has this enabled - shrinks the binary sizes for MSVC dbg builds - smaller binaries will also make relocations less probable with MSVC dbg and a given set of (often outdated) precalculated base-addresses - interestingly it also fixes/hides some linker warnings LNK4221 which can be observed with MSVC 2010SP1 (16.0.40219.1) x86 target in dbg configuration, here example from releases/0.4.7: [819/11751] Linking C static library dll\opengl\mesa\main\mesa_main.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [830/11751] Linking C static library dll\opengl\mesa\math\mesa_math.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [858/11751] Linking C static library dll\opengl\mesa\swrast\mesa_swrast.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [879/11751] Linking C static library dll\opengl\mesa\tnl\mesa_tnl.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [897/11751] Linking C static library dll\opengl\mesa\vbo\mesa_vbo.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [1602/11751] Linking C static library sdk\lib\3rdparty\adns\adns.lib internal.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [4327/11751] Linking C static library sdk\lib\tdilib\tdilib.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [11714/11751] Linking C static library win32ss\user\winsrv\consrv.lib consrv.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library [11726/11751] Linking C static library win32ss\user\winsrv\concfg\concfg.lib precomp.h.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library It manages to make all the mentioned 9 LNK4221 disappear without introducing any other warnings into those modules, or into any other module. Ftr I do not understand why String Pooling hides those LNK4221. But its effectiveness is evident. But some other LNK4221 in other modules do still remain after it. Their count is not 0 afterwards, just significantly reduced. Cons: - String Pooling may slightly increase the build time, but the impact is negligible, even on my 12 year-old PC. - String Pooling may make lousy code crash, that illegally wants to write into string constants, like we saw it for ROSTESTS298 for example. But that is actually not a bad thing. That test was also broken beforehand and crashed even on real Windows. We didn't find any similar problems within the 'productive code' yet. fix is a partial pick of: 0.4.12-dev-354-g |
||
---|---|---|
.. | ||
Compiler | ||
baseaddress.cmake | ||
baseaddress_dwarf.cmake | ||
baseaddress_msvc.cmake | ||
bison-flex.cmake | ||
CMakeMacros.cmake | ||
compilerflags.cmake | ||
config-amd64.cmake | ||
config-arm.cmake | ||
config.cmake | ||
gcc.cmake | ||
host-tools.cmake | ||
init-section.lds | ||
localization.cmake | ||
midl-support.cmake | ||
msvc.cmake | ||
widl-support.cmake | ||
writing_CmakeLists_for_ReactOS.txt |