powerpc: ppc32 needs elf_read_implies_exec()
authorKumar Gala <galak@kernel.crashing.org>
Fri, 17 Apr 2009 08:03:01 +0000 (08:03 +0000)
committerPaul Mackerras <paulus@samba.org>
Tue, 28 Apr 2009 03:52:19 +0000 (13:52 +1000)
On ppc64 we implemented elf_read_implies_exec() for 32-bit binaries
because old toolchains had bugs where they didn't mark program
segments executable that needed to be.  For some reason we didn't do
this on ppc32 builds.  This hadn't been an issue until commit 8d30c14c
("powerpc/mm: Rework I$/D$ coherency (v3)"), which had as a side
effect that we are now enforcing execute permissions to some extent on
32-bit 4xx and Book E processors.

This fixes it by defining elf_read_implies_exec on 32-bit to turn on
the read-implies-exec behaviour on programs that are sufficiently old
that they don't have a PT_GNU_STACK program header.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/include/asm/elf.h

index 087c22f1d3681328ffef059283d7b8d78ae9bc48..d6b4a12cdeff3fccddd0c4691442f5e33fdf0963 100644 (file)
@@ -260,6 +260,7 @@ do {                                                                \
 #else 
 # define SET_PERSONALITY(ex) \
   set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
+# define elf_read_implies_exec(ex, exec_stk) (exec_stk != EXSTACK_DISABLE_X)
 #endif /* __powerpc64__ */
 
 extern int dcache_bsize;