2006-11-02 Carlos O'Donell <carlos@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Nov 2006 00:59:32 +0000 (00:59 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Nov 2006 00:59:32 +0000 (00:59 +0000)
gcc/
* config/arm/linux-elf.h (NEED_INDICATE_EXEC_STACK): Define as 1.
* arm.c (arm_file_end): If NEED_INDICATE_EXEC_STACK call
file_end_indicate_exec_stack.
* arm.h [!NEED_INDICATE_EXEC_STACK] (NEED_INIDCATE_EXEC_STACK):
Define as 0.
* lib1funcs.asm [__ELF__ && __linux__]: Emit .note.GNU-stack section
for a non-executable stack.
* crti.asm: Likewise.
* crtn.asm: Likewise.
* libunwind.S: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118445 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/crti.asm
gcc/config/arm/crtn.asm
gcc/config/arm/lib1funcs.asm
gcc/config/arm/libunwind.S
gcc/config/arm/linux-elf.h

index 189604c..db5ad31 100644 (file)
@@ -1,3 +1,16 @@
+2006-11-02  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * config/arm/linux-elf.h (NEED_INDICATE_EXEC_STACK): Define as 1.
+       * arm.c (arm_file_end): If NEED_INDICATE_EXEC_STACK call 
+       file_end_indicate_exec_stack. 
+       * arm.h [!NEED_INDICATE_EXEC_STACK] (NEED_INIDCATE_EXEC_STACK): 
+       Define as 0.
+       * lib1funcs.asm [__ELF__ && __linux__]: Emit .note.GNU-stack section
+       for a non-executable stack.
+       * crti.asm: Likewise.
+       * crtn.asm: Likewise.
+       * libunwind.S: Likewise. 
+
 2006-11-02  Ben Elliston  <bje@au.ibm.com>
 
        * tree-ssa.c (warn_uninit): Use expand_location variables for
index 7c82fcf..bbf4863 100644 (file)
@@ -14417,6 +14417,10 @@ arm_file_end (void)
 {
   int regno;
 
+  if (NEED_INDICATE_EXEC_STACK)
+    /* Add .note.GNU-stack.  */
+    file_end_indicate_exec_stack ();
+
   if (! thumb_call_reg_needed)
     return;
 
index 26d3977..beb2222 100644 (file)
@@ -2591,4 +2591,10 @@ enum arm_builtins
 
   ARM_BUILTIN_MAX
 };
+
+/* Do not emit .note.GNU-stack by default.  */
+#ifndef NEED_INDICATE_EXEC_STACK
+#define NEED_INDICATE_EXEC_STACK       0
+#endif
+
 #endif /* ! GCC_ARM_H */
index 166a3ce..6f0acd1 100644 (file)
 #    the executable file might be covered by the GNU General Public License.
 # 
 
+/* An executable stack is *not* required for these functions.  */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
 # This file just make a stack frame for the contents of the .fini and
 # .init sections.  Users may put any desired instructions in those
 # sections.
index 360afae..36c417d 100644 (file)
 #    the executable file might be covered by the GNU General Public License.
 # 
 
+/* An executable stack is *not* required for these functions.  */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
 # This file just makes sure that the .fini and .init sections do in
 # fact return.  Users may put any desired instructions in those sections.
 # This file is the last thing linked into any executable.
index 9245b3c..93c0df8 100644 (file)
@@ -27,6 +27,13 @@ You should have received a copy of the GNU General Public License
 along with this program; see the file COPYING.  If not, write to
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
+
+/* An executable stack is *not* required for these functions.  */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
 /* ------------------------------------------------------------------------ */
 
 /* We need to know what prefix to add to function names.  */
index 06e1310..f53a202 100644 (file)
    the Free Software Foundation, 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
+/* An executable stack is *not* required for these functions.  */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
 #ifndef __symbian__
 
 #include "lib1funcs.asm"
index acb13cd..d4e8351 100644 (file)
 
 /* The GNU/Linux profiler needs a frame pointer.  */
 #define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
+
+/* Add .note.GNU-stack.  */
+#undef NEED_INDICATE_EXEC_STACK
+#define NEED_INDICATE_EXEC_STACK       1