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