This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR ld/19636: [x86] Resolve undefweak and defined symbols in executable

On 02/03/16 12:22, H.J. Lu wrote:
On Wed, Mar 2, 2016 at 4:03 AM, Jiong Wang <> wrote:

On 01/03/16 14:37, H.J. Lu wrote:
On Tue, Mar 1, 2016 at 6:02 AM, Kyrill Tkachov
<> wrote:
Hi HJ,

On 26/02/16 12:51, H.J. Lu wrote:
On Thu, Feb 25, 2016 at 10:59 AM, H.J. Lu <> wrote:
Here is the updated patch I am testing.  The linker behavior is changed
in 2 cases when creating executable:

1. When there are mixed PIC and non-PIC references to undefined
weak symbols, undefined weak symbols are resolved to 0 at link-time.
2. If all references to undefined weak symbols are PIC, dynamic
relocations against undefined weak symbols will be generated unless
-z nodynamic-undefined-weak is passed to linker.

BTW,  We have to resolve R_X86_64_32/R_X86_64_PC32 relocations
against undefined weak symbols to zero.  Otherwise, we will get
relocation overflow for dynamic R_X86_64_32/R_X86_64_PC32 relocations.

This is what I am checking in.

I'm seeing:

NA->FAIL: Mixing PIC and non-PIC
on aarch64-none-linux-gnu.
You can either fix aarch64 backend or skip the test for aarch64.


   For your testcase, AArch64 is not generating dynamic relocation for
   weak undefined symbol referenced from non-pic code when linking
   exectuable, instead, it's resolved to zero during static linking stage.
   As far as I know, this behavior is exactly what's described here at

   And reading those historical discussions,

   Looks to me the ld behavior changes introduced by your patch is quite
   sensitive and there still be lack of consensus.
What linker change were you referring to?  I only added a testcase.

I mean those linker changes added together with this testcase.

commit aec6b87e0b66d707ead62ca40d220ee78b4cf5a5
Author: H.J. Lu <>
Date:   Fri Feb 26 04:16:15 2016 -0800

    [x86] Resolve non-PIC undefweak symbols in executable

   Therefore, instead of skipping this testcase on AArch64 (I guess a few
   other targets will fail on native tests as well), can you please only
   enable this testcase on x86 arches firstly?
These backends are also broken.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]