On 05/25/17 21:55, Ard Biesheuvel wrote: > On 25 May 2017 at 11:06, Laszlo Ersek <[email protected]> wrote: >> On 05/25/17 19:38, Kinney, Michael D wrote: >>> Laszlo, >>> >>> I think the equivalent flag for GCC builds is --whole-archive. >>> >>> I tried adding that flag to DLINK_FLAGS in GCC5, and I get the >>> following error building OVMF from edk2/master with >>> -D SOURCE_DEBUG_ENABLE set. >>> >>> DxeLoad.obj (symbol from plugin): In function >>> `InstallIplPermanentMemoryPpis': >>> (.text+0x0): multiple definition of `mMemoryDiscoveredNotifyList' >>> SecPeiDebugAgentLib.obj (symbol from plugin):(.text+0x0): first defined here >>> collect2: error: ld returned 1 exit status >> >> Great find! That's the error message we should get. >> >> Unfortunately, after reading the "ld" manual on "--whole-archive", it >> seems that the complete object files will actually be copied into the >> resultant binary, even if several of their symbols will remain unused. I >> think that's quite sub-optimal. (I haven't verified this though.) What >> we'd like to get is (a) the full verification at link time, and (b) >> inclusion of *only* those symbols that are actually necessary. >> >> In your testing, when you build OVMF with and without "--whole-archive", >> do you see a difference in, say, the DXEFV footprint, when the build >> completes? >> >> (If so, then I wonder if we should add "--whole-archive" only to the >> NOOPT build... Not sure.) >> > > I haven't tried, but I would expect --gc-sections to deal with the > unused objects.
Good point! (... After I read this option's description too, in the "ld" manual.) This ELF and PE/COFF stuff is way too complex for my taste. :/ Laszlo _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

