"H.J. Lu" <hjl.to...@gmail.com> writes:

> On Wed, Feb 11, 2015 at 7:19 AM, Rainer Orth
> <r...@cebitec.uni-bielefeld.de> wrote:
>> "H.J. Lu" <hjl.to...@gmail.com> writes:
>>
>>> On Wed, Feb 11, 2015 at 6:10 AM, Rainer Orth
>>> <r...@cebitec.uni-bielefeld.de> wrote:
>>>> "H.J. Lu" <hjl.to...@gmail.com> writes:
>>>>
>>>>>> The new proc is bogus, unfortunately: there's already an existing
>>>>>> check_effective_target_pie that checks if a target can support PIE.  The
>>>>>> new one just overrides the previous one.  On targets supporting PIE
>>>>>> (like Darwin), but not defaulting to it, the PIE tests suddenly turn out
>>>>>> UNSUPPORTED.
>>>>>>
>>>>>> You should rename the new one to
>>>>>> e.g. check_effective_target_pie_default, update the single user, and
>>>>>> document it in sourcebuild.texi.
>>>>>
>>>>> I checked in this as an obvious fix.
>>>>
>>>> I think pie_enabled is not a very descriptive name:
>>>>
>>>> Index: doc/sourcebuild.texi
>>>> ===================================================================
>>>> --- doc/sourcebuild.texi (revision 220617)
>>>> +++ doc/sourcebuild.texi (working copy)
>>>> @@ -1884,6 +1884,9 @@
>>>>  @item nonpic
>>>>  Target does not generate PIC by default.
>>>>
>>>> +@item pie_enabled
>>>> +Target generates PIE by default.
>>>> +
>>>>  @item pcc_bitfield_type_matters
>>>>  Target defines @code{PCC_BITFIELD_TYPE_MATTERS}.
>>>>
>>>> With -fpie, PIE is also enabled, just not the default without any
>>>
>>> I was testing
>>>
>>> # make RUNTESTFLAGS="--target_board='unix{-m32\ -fpie,-fpie}'
>>>
>>> I don't consider PIE is default.  It is just enabled.
>>>
>>>> options.  Please either go with the pie_default I sugested or wait for
>>>> others to weigh in before rushing in another `obvious' fix.
>>
>> Then the description (both sourcebuild.texi and target-supports.texi) is
>> confusing.
>
> That is how other options are described.

You're not getting my point:

* target-supports.exp now has

# Return 1 if the current multilib generates PIE by default.

* sourcebuild.texi states

Target generates PIE by default.

Which one is it?

>> What are you trying to achieve here, actually?  Even on Solaris 11/x86
>> (which doesn't support PIE), -fpie lets the
>> check_effective_target_pie_enabled (or whatever it's called) proc pass.
>> Shouldn't it also check if the target can support PIE at all?
>
> Assembly outputs may be different, depending on if PIE is
> enabled nor not. When we scan assembly outputs for test
> results, we have different expected results when PIE is enabled.
> That is how pie_enabled is used so far.

But why would you need a new effective-target keyword for that?  Simply
test the existing { target pie }, add -fpie and scan the assembler
output.  Why would you need pie_enabled or whatever at all?  Again: what
are you trying to achieve that cannot be done with the current keyword?

Right now, in gcc.target/i386/pie.c, you're only testing the PIE case
when PIE has been enabled by some means external to testsuite.  The test
always comes out UNSUPPORTED if not, so it isn't even exercised in a
regular bootstrap (except on Darwin which defaults to PIE, I believe).

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to