On Sunday 20 November 2022 22:56:51 Martin Storsjö wrote: > On Sun, 20 Nov 2022, LIU Hao wrote: > > > 在 2022-11-20 19:23, Pali Rohár 写道: > > > GNU LD provides __ImageBase symbol since 2.19. This is standard windows > > > symbol and should be used instead of custom gnu _image_base__ symbol. > > > > > > Detect non-existence of __ImageBase symbol at ./configure time and for > > > compatibility with older GNU LD versions, define __ImageBase symbol as > > > alias to _image_base__ symbol. > > > > > > This allows to remove all #ifdef hacks for older GNU LD versions as with > > > this change __ImageBase works correctly with all GNU LD versions. > > > --- > > > mingw-w64-crt/Makefile.am | 4 ++++ > > > mingw-w64-crt/configure.ac | 6 ++++++ > > > mingw-w64-crt/crt/__imagebase.c | 18 ++++++++++++++++++ > > > mingw-w64-crt/crt/crtexe.c | 5 ----- > > > mingw-w64-crt/crt/crtexewin.c | 3 --- > > > mingw-w64-crt/crt/pesect.c | 9 --------- > > > mingw-w64-crt/crt/pseudo-reloc.c | 6 +----- > > > mingw-w64-crt/libsrc/dloadhelper.c | 1 - > > > mingw-w64-crt/misc/delayimp.c | 1 - > > > 9 files changed, 29 insertions(+), 24 deletions(-) > > > create mode 100644 mingw-w64-crt/crt/__imagebase.c > > > > > > > > > > Thanks for the patched. Pushed. > > Building when bootstrapping a toolchain now fails with the following error: > > checking whether the linker provides __ImageBase symbol... configure: error: > link tests are not allowed after AC_NO_EXECUTABLES > > The problem is that when bootstrapping a toolchain (i.e. building > mingw-w64-crt from scratch in a sysroot where there is no preexisting > mingw-w64-crt), regular linking tests will fail (since the compiler defaults > to linking in a bunch of libraries, and those don't exist yet).
Ou, sorry for that. I did not thought about this scenario :-( > One can do linking tests with -nostdlib, but it requires _a lot_ of hackery > to get working robustly. We had a similar linker test before, added in the > first naive version in baaf945d53f7dedb15b6f5342bd04e8fd4952211 (similar to > this one, but with -nostdlib), reverted in > 30af18252d4e965e98612e215b8cf6b7ae42c01a since it broke things, reapplied > with one fix in ccda8b5229e428a6fa7036140778b23d11b554e8, then tweaked > further in bda8fc0064e12d07e0f0e0c696dc0568b13c096f. > > At that point the test was in a working form and stayed in place from 2018 > until early 2021, when I concluded that we could drop support for the older > versions of LLD that the test tried to detect, and removed it in > 6f53dbf6d423fab5a9fc6b3e4b07bdcf66d253b5. > > So at this point, do you think it's worth to add the complexity of manually > expanding the linker test (like what was removed in > 6f53dbf6d423fab5a9fc6b3e4b07bdcf66d253b5), or should we just drop the test? > (Alternatively, a manually set --enable-image-base-compat or something like > that, can add the helper without a linker check.) > > What do you think? > > // Martin I think that manually defining __ImageBase symbol for new LD versions should not cause issues. So when configure cannot detect if linker provides it (e.g. during bootstrap) what about including it? _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
