https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117455

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|ld warning about executable |Nested function use gives a
                   |stack, follows from PR      |ld warning about executable
                   |117434                      |stack, after binutils 2.39
         Depends on|117434                      |
           Keywords|                            |diagnostic
          Component|fortran                     |target
             Target|                            |x86_64-linux
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=117434

--- Comment #7 from Iain Sandoe <iains at gcc dot gnu.org> ---
Actually, 

 * this is not specifically a fortran issue - the effect repeats complete with
a standard C nested function test:

 ./gcc/xgcc -Bgcc ../../test/nested/nest.c  -o nc
/home/iains/gcc-master/gcc-15-0-0/x86_64-pc-linux-gnu/bin/ld: warning:
/tmp/ccyi2jqH.o: requires executable stack (because the .note.GNU-stack section
is executable)

 * neither does it depend on 117434. although that does show the effect (I
would expect other fortran tests could quite easily use nested function
support).

=====

To make heap-based trampolines the default for a platform needs the platform
maintainers to agree that's the right course of action (and support to be
written if it's not already there).  Apart from Darwin, where we had no choice,
that's also out of my pay grade.

======

But local to gfortran, you have some immediate options:

 1. You could just add the appropriate flags to the test-case(s) to suppress
the warning (having decided, perhaps that fixing it is outside the purview of
gfortran).

 2. you could decide to do (1) for every Fortran build by adding the relevant
option to the gfortran link specs. (would have to to be a configure-determined
action).

 3. you could apply -ftrampoline-impl=heap instead of suppressing the warning
(on platforms that support it) - again this would need some configure-time
discovery if you wanted to add it to the link spec.  [either to specific tests
or generally for gfortran].

(1) is clearly the least invasive solution - but it does mean that end-users
might well see the warning when building similar Fortran.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117434
[Bug 117434] [F08] gfortran rejects actual argument corresponding to procedure
pointer dummy argument

Reply via email to