bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/30137] New: LD --dynamicbase does not generate relocation info


From: pali at kernel dot org
Subject: [Bug ld/30137] New: LD --dynamicbase does not generate relocation info
Date: Sun, 19 Feb 2023 13:31:58 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=30137

            Bug ID: 30137
           Summary: LD --dynamicbase does not generate relocation info
           Product: binutils
           Version: 2.40
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: pali at kernel dot org
  Target Milestone: ---

LD --dynamicbase does not work correctly for PE executables. It does not
generate relocation info. Without relocation info in PE binary, it is not
possible to relocate base address. Which makes dynamic base non-working.

Test case which calls external function "external()" from external.dll which
needs to be relocated at runtime.

$ x86_64-w64-mingw32-ld -v
GNU ld (GNU Binutils) 2.40

$ cat external.def
LIBRARY "external.dll"
EXPORTS
external

$ cat test-dynamicbase.S
.globl  main
main:
        call    *__imp_external(%rip)
        mov     $0, %rax
        ret

$ x86_64-w64-mingw32-dlltool -d external.def -l external.dll.a

$ x86_64-w64-mingw32-as test-dynamicbase.S -o test-dynamicbase.o

$ x86_64-w64-mingw32-ld --dynamicbase test-dynamicbase.o external.dll.a -o
test-dynamicbase.exe

$ x86_64-w64-mingw32-objdump -f -p test-dynamicbase.exe | grep -i reloc
HAS_RELOC, EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED
Entry 5 0000000000000000 00000000 Base Relocation Directory [.reloc]

As can be seen in objdump output, binary is marked with HAS_RELOC but .reloc
section is completely empty.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]