On Wed, 20 Sep 2017, Nagaraju Mekala wrote:

> > I've sent a glibc patch 
> > <https://sourceware.org/ml/libc-alpha/2017-09/msg00734.html>.  I think the 
> >key questions for architecture experts now are: on each of those three 
> >architectures, do trampolines ever require executable stacks, and, if they 
> >do, how does this work at present when the kernel defaults to 
> >non-executable and my understanding at 
> ><https://sourceware.org/ml/libc-alpha/2017-09/msg00747.html> would be that 
> >glibc would only make thread stacks executable on those architectures, not 
> >the main process stacks, and GCC will never generate an explicit marker on 
> >those architectures to request an executable stack?
> 
> Microblaze is a soft processor with many configuration options. If we 
> don't use the MMU, there is nothing preventing execution of code on the 
> stack in the MicroBlaze architecture.
>  With the MMU, you have the option to make any page, including the stack 
>  pages, executable or not.
> 
> It is recommended to prevent execution on the stack by defining those 
> pages as non-executable in the MMU. In particular, trampolines would 
> have to be possible to code without execution on the stack

No-MMU configurations are not relevant to a glibc change; the question is 
how things work for configurations using glibc, with the Linux kernel, 
with an MMU.  In such a configuration, for MicroBlaze: (a) is the stack in 
fact executable, now; (b) if it is, what makes it so given the kernel 
default to non-executable (where does my reasoning about what the kernel 
and glibc do go wrong); (c) if it is not executable, do trampolines work 
anyway?

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to