[ld/testsuite] Skip "Mixing PIC and non-PIC" testcase on ARM/AArch64 if when no -fpie or -fPIE
Jiong Wang
jiong.wang@foss.arm.com
Wed Mar 2 15:38:00 GMT 2016
>>>>>>>> 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.
>>>>>>
>>>>>> H.J,
>>>>>>
>>>>>> 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
>>>>>>
>>>>>> https://sourceware.org/ml/binutils/2008-04/msg00269.html
>>>>>>
>>>>>> And reading those historical discussions,
>>>>>>
>>>>>> https://sourceware.org/ml/binutils/2008-04/msg00032.html
>>>>>> https://sourceware.org/ml/binutils/2008-02/msg00264.html
>>>>>>
>>>>>> 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 <hjl.tools@gmail.com>
>>>> Date: Fri Feb 26 04:16:15 2016 -0800
>>>>
>>>> [x86] Resolve non-PIC undefweak symbols in executable
>>>>
>>> As far as aarch64 backend is concerned, I only added a testcase.
>>
>> Well, then why you put it under generic directory? and without restricting
>> it
>> on x86? this is implicitly affect all targets, and enforcing all targets to
>> follow
>> the changes on x86. I think similar changes should only be encouraged to
>> other target
>> if it's conventional rules, or it's clearly documented by generic or that
>> target's ELF
>> specification.
>>
>> While reading from http://www.skyfree.org/linux/references/ELF_Format.pdf,
>>
>> "The link editor does not extract archive members to resolve undefined
>> weak symbols. Unresolved weak symbols have a zero value."
>>
>> Looks to me the spec is even more strict that weak symbol's life is defined
>> to be ended
>> after static linking stage. All unresolved weak symbols are assigned zero
>> value.
>>
>> IMO, the support of weak symbol under various rare and complex scenarios are
>> very
>> target specific, thus I'd either move this testcase under x86 directory or
>> put it under
>> generic directory but enabling it on x86 only initially. If other targets
>> want and start
>> to support similar features like x86 on weak symbol, then they can be
>> enabled seperately.
>> This looks to me is a more clean & acceptable way to other targets.
>>
> Have you looked at the testcase I added? Are there anything
> which are target specific?
I do have looked at the testcase, they do be purely C code.
If the convention of generic is syntax generic instead of both syntax and
sematics, I don't have further comment on this.
Anyway, attached patch skips the non-pie version "Mixing PIC and non-PIC"
testcase.
Not sure if it's trivial enough to qualify obvious, so OK for master branch?
2016-03-02 Jiong Wang <jiong.wang@arm.com>
ld/testsuite/
* ld-elf/shared.exp (mix_pic_and_non_pic): Only run on ARM and AArch64
when -fPIE or -fpie specified.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: k.patch
Type: text/x-patch
Size: 566 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20160302/34aa0c7a/attachment.bin>
More information about the Binutils
mailing list