[RFC PATCH v2] ld: Optionally nullify default PIE in all linker tests
Sam James
sam@gentoo.org
Sat Mar 29 13:34:53 GMT 2025
Hans-Peter Nilsson <hp@bitrange.com> writes:
> On Fri, 28 Mar 2025, Jens Remus wrote:
>
>> Some distributions configure GCC with --enable-default-pie [1]. LLVM
>> defaults Clang to CLANG_DEFAULT_PIE_ON_LINUX=ON [2]. This causes
>> compiles to default to -fPIE and links to default to -pie, unless other
>> options are explicitly given. As a consequence several linker tests
>> are compiled and linked in unexpected ways and may even unexpectedly
>> fail or pass.
>>
>> Add the configuration variable "NULLIFY_DEFAULT_PIE" to the linker test
>> suite to optionally nullify default PIE, by prepending $NOPIE_CFLAGS to
>> the compile flags and $NOPIE_LDFLAGS to the link flags for all linker
>> tests. These are then overridden by any deviating compiler flags
>> (e.g. -fPIC or -fPIE) and linker flags (e.g -pie or -shared) explicitly
>> specified by the tests. Possible values of NULLIFY_DEFAULT_PIE are:
>>
>> 0: Do not nullify default PIE. (default)
>> 1: Unconditionally prefix $NOPIE_CLFAGS and $NOPIE_LDFLAGS.
>> auto: Prefix $NOPIE_CLFAGS and $NOPIE_LDFLAGS if compiler configured
>> to default to PIE.
>>
>> NULLIFY_DEFAULT_PIE can for instance be specified via RUNTESTFLAGS:
>>
>> $ make check RUNTESTFLAGS="NULLIFY_DEFAULT_PIE=1"
>>
>> or in ~/.dejagnurc:
>>
>> # Prefix $NOPIE_CLFAGS and $NOPIE_LDFLAGS if compiler defaults to PIE.
>> set nullify_default_pie "auto"
>
> I can't help but thinking this is overthinking or
> overengineering, sorry.
>
> Why not keep it simple: for each test creating an executable and
> that lacks an option mentioning specifying -pie -no-pie or
> -static, add "-no-pie"? No $NOPIE_*. (And subsequently make
> sure new tests mention such an option.) IIRC, that's the way
> this (systems-having-different-pie-defaults) had been handled in
> the past.
>
> For extra credit, for those tests with the new specified option,
> add an extra test with the inverted option, but as a separate
> patch.
I agree. Though if one really wants, we could do it GCC torture
test-style.
More information about the Binutils
mailing list