bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/19472] New: [aarch64] Large shared objects need pc-relative st


From: kyle+llvm at iteratee dot net
Subject: [Bug gold/19472] New: [aarch64] Large shared objects need pc-relative stubs or relocations for absolute stubs
Date: Fri, 15 Jan 2016 00:03:46 +0000

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

            Bug ID: 19472
           Summary: [aarch64] Large shared objects need pc-relative stubs
                    or relocations for absolute stubs
           Product: binutils
           Version: 2.27 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: kyle+llvm at iteratee dot net
                CC: ian at airs dot com
  Target Milestone: ---

When linking a large enough .so, I end up with the following invalid long call
stub:

    12427da8:   58000050        ldr     x16, 12427db0 <lstat64+0x59fc>
    12427dac:   d61f0200        br      x16
    12427db0:   091d5bb0        .inst   0x091d5bb0 ; undefined
    12427db4:   00000000        .inst   0x00000000 ; undefined

With no relocation entry for 12427db0. This is incorrect, as when the .so gets
relocated, the absolute branch results in a segfault. There are 2 apparent
solutions:
For .so's as well as for PIE, use the PC-relative stub, or
Include a relocation in the stub.

There's a tradeoff of call cost vs loading time.
I think the simpler choice is to use the pc-relative branch for large .so's as
this mirrors large PIE code.

-- 
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]