https://sourceware.org/bugzilla/show_bug.cgi?id=30137
--- Comment #3 from Pali Rohár <pali at kernel dot org> --- Ou, my bad. I totally forgot that I wrote example for AMD64 and AMD64 does not use relocation for indirect calls. Only 32-bit x86 needs it. IX86 example is: $ cat test-dynamicbase.S .globl _main _main: call *__imp__external mov $0, %eax leave ret $ i686-w64-mingw32-dlltool -d external.def -l external.dll.a $ i686-w64-mingw32-as test-dynamicbase.S -o test-dynamicbase.o $ i686-w64-mingw32-ld --dynamicbase test-dynamicbase.o external.dll.a -o test-dynamicbase.exe $ i686-w64-mingw32-objdump -f -p test-dynamicbase.exe | grep -i reloc HAS_RELOC, EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED Entry 5 00003000 0000000c Base Relocation Directory [.reloc] PE File Base Relocations (interpreted .reloc section contents) reloc 0 offset 2 [1002] HIGHLOW reloc 1 offset 0 [1000] ABSOLUTE $ i686-w64-mingw32-objdump -d test-dynamicbase.exe ... 401000: ff 15 30 20 40 00 call *0x402030 401006: b8 00 00 00 00 mov $0x0,%eax 40100b: c9 leave 40100c: c3 ret ... So for IX86 relocation information with LD 2.40 is correctly generated. When I tried those steps with LD 2.31 I got from objdump output: relocations stripped Entry 5 00000000 00000000 Base Relocation Directory [.reloc] So the issue is already fixed. Sorry for the noise and wrong example (AMD64 vs IX86). -- You are receiving this mail because: You are on the CC list for the bug.