Hi Mark,

On Mon, Nov 26, 2018 at 10:13:29AM +0100, Mark Wielaard wrote:
> With -Wtrampolines a warning is produced whenever gcc generates executable
> code on the stack at runtime to support taking a nested function address
> that is used to call the nested function indirectly when it needs to access
> any variables in its lexical scope.
> 
> As a result the stack has to be marked as executable even for targets which
> have a non-executable stack as default.
> 
> Define a new target macro TARGET_HAS_DEFAULT_NOEXEC_STACK for those targets
> that have a non-executable default stack based on when they call
> file_end_indicate_exec_stack.

As Paul says, that name isn't so good.

TARGET_NEEDS_MAKING_THE_STACK_EXECUTABLE_FOR_TRAMPOLINES, or similar?

> diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
> index 0c67634..9330acf 100644
> --- a/gcc/config/rs6000/sysv4.h
> +++ b/gcc/config/rs6000/sysv4.h
> @@ -972,6 +972,11 @@ ncrtn.o%s"
>  /* Generate entries in .fixup for relocatable addresses.  */
>  #define RELOCATABLE_NEEDS_FIXUP 1
>  
> +#if defined (POWERPC_LINUX) || defined (POWERPC_FREEBSD)
> +  #define TARGET_HAS_DEFAULT_NOEXEC_STACK (TARGET_32BIT \
> +                                        || DEFAULT_ABI == ABI_ELFv2)
> +#endif

I don't think this belongs in sysv4.h .


Segher

Reply via email to