Re: prctl call wrongly succeeds on HPPA?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John David Anglin <dave.anglin@xxxxxxxx> writes:

> On 2023-11-10 4:32 p.m., Sam James wrote:
>> John David Anglin <dave.anglin@xxxxxxxx> writes:
>>
>>> On 2023-11-10 3:38 p.m., Helge Deller wrote:
>>>> On 11/10/23 21:12, John David Anglin wrote:
>>>>> On 2023-11-10 3:01 p.m., Helge Deller wrote:
>>>>>>>> On HPPA, we still need executable stacks, so this option doesn't work
>>>>>>>> and leads to a segfault on boot.
>>>>>> For kernel we don't need it any longer.
>>>>>> But there might be dependencies on glibc version and/or combination.
>>>>>> So, I've currently lost overview if we still need executable stacks...
>>>>> FWIW, I recently changed gcc-14 to enable GNU stack notes and fixed a bug in the
>>>>> 32-bit PA 2.0 trampoline template.  All execute stack tests in glibc now pass with gcc-14.
>>>> Yes, I saw your commits.
>>>> So, any code compiled with >= gcc-14 should be fine with non-writeable stacks?
>>> Not exactly.  An executable stack is still needed for nested functions.  They are still called
>>> via a stack trampoline.  The GNU stack note indicates whether an object needs an executable
>>> stack or not.  These notes are collected by linker.  The glibc loader determines whether to setup
>>> an executable stack or not.
>>>> It would be easier if it would be a glibc dependency (for distribution maintainers)...
>>> I'm not aware of any glibc dependency...
>>>
>>> I think once gcc-14 becomes the default compiler, we will have to enable GNU stack notes in
>>> previous gcc versions.  We will still have executable stacks until everything is rebuilt.
>> We will need to update that default in Binutils too, I think. That
>> configure arg is working OK for me, but I did not try systemd yet.
> Currently, there are no architecture dependencies in the ld --enable-warn-execstack and --enable-default-execstack
> configure options.  The -z execstack and -z noexecstack ld options can override the GNU notes, or lack thereof.  We
> may have to fix some assembly code.  Maybe binutils should be built with --enable-warn-execstack once we switch
> to gcc-14.  I don't think we want --enable-default-execstack after switching to gcc-14.

Are you sure? I just did some more digging now...
* It looks like targets can set elf_backend_default_execstack in
bfd/elf-*.c to override the default, see e.g. 81cd0a49c9e5f28c0fec391e449ea3272077c432 for cris.
* See acd65fa610df09a0954b8fecdadf546215263c5d where HPPA's default got changed.
* ld/configure.tgt still has some suppression for HPPA's default for
warnings.

I think we may need to, in due course, set elf_backend_default_execstack
in bfd/elf32-hppa.c, and then drop those bits in ld/configure.tgt too?

Let me know if missing something because the binutils configure stuff is
a bit convoluted.

>
> Dave




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux