On Tue, Oct 20, 2015 at 3:38 PM, Szabolcs Nagy <szabolcs.n...@arm.com> wrote:
> On 20/10/15 06:16, Alan Modra wrote:
>>
>> On Mon, Oct 19, 2015 at 08:10:32PM +0100, Szabolcs Nagy wrote:
>>>
>>> On 19/10/15 14:04, Szabolcs Nagy wrote:
>>>>
>>>> On 19/10/15 12:12, Alan Modra wrote:
>>>>>
>>>>> On Thu, Oct 15, 2015 at 06:50:50PM +0100, Szabolcs Nagy wrote:
>>>>>>
>>>>>> A powerpc toolchain built with (or without) --enable-secureplt
>>>>>> currently creates a binary that uses bss plt if
>>>>>>
>>>>>> (1) any of the linked PIC objects have bss plt relocs
>>>>>> (2) or all the linked objects are non-PIC or have no relocs,
>>>>>>
>>>>>> because this is the binutils linker behaviour.
>>>>>>
>>>>>> This patch passes --secure-plt to the linker which makes the linker
>>>>>> warn in case (1) and produce a binary with secure plt in case (2).
>>>>>
>>>>>
>>>>> The idea is OK I think, but
>>>>>
>>>>>> @@ -574,6 +577,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle",
>>>>>> DEFAULT_ASM_ENDIAN)
>>>>>>   %{R*} \
>>>>>>   %(link_shlib) \
>>>>>>   %{!T*: %(link_start) } \
>>>>>> +%{!static: %(link_secure_plt_default)} \
>>>>>>   %(link_os)"
>>>>>
>>>>>
>>>>> this change needs to be conditional on !mbss-plt too.
>>>>>
>>>>
>>>> OK, will change that.
>>>>
>>>> if -msecure-plt and -mbss-plt are supposed to affect
>>>> linking too (not just code gen) then shall i add
>>>> %{msecure-plt: --secure-plt} too?
>>>>
>>>
>>> I added !mbss-plt only for now as a mix of -msecure-plt
>>> and -mbss-plt options do not cancel each other in gcc,
>>
>>
>> They do for code-gen since they share the same variable (see
>> sysv4.opt), but I guess you meant as far as spec parsing goes.  In
>> hindsight, it might have been better if I'd spelled -mbss-plt as
>> -mno-secure-plt.
>>
>>> the patch only changes behaviour for a secureplt toolchain.
>>>
>>> OK to commit?
>>
>>
>> Apologies for not thinking of this before when I first reviewed the
>> patch, but have you bootstrapped this patch on powerpc64-linux?  I'm
>> guessing not, because it occurs to me that --secure-plt is not a
>> powerpc64-linux-ld option.  So if you try to build a biarch compiler
>> with --enable-secure-plt then ld will complain when attempting to link
>> 64-bit binaries.
>>
>> You'll want this on top of your patch:
>>
>
> Added, thanks. (and now built a powerpc64-none-linux-gnu cross
> toolchain as well and checked if the correct flags are passed to
> the linker with various -msecure-plt/-mbss-plt/-m32/-m64 flags.)
>
> OK for trunk?
>
> 2015-10-20  Gregor Richards  <gregor.richa...@uwaterloo.ca>
>             Szabolcs Nagy  <szabolcs.n...@arm.com>
>
>         * config/rs6000/secureplt.h (LINK_SECURE_PLT_DEFAULT_SPEC): Define.
>         * config/rs6000/sysv4.h (LINK_SECURE_PLT_SPEC): Define.
>         (LINK_SPEC): Add %(link_secure_plt).
>         (SUBTARGET_EXTRA_SPECS): Add "link_secure_plt".
>         * config/rs6000/linux64.h (LINK_SECURE_PLT_SPEC): Redefine.
>

I'm okay if Alan is satisfied.

Thanks, David

Reply via email to