nios2.c (nios2_asm_file_end): Implement TARGET_ASM_FILE_END hook for adding .note...
authorChung-Lin Tang <cltang@codesourcery.com>
Tue, 20 Jan 2015 14:49:51 +0000 (14:49 +0000)
committerChung-Lin Tang <cltang@gcc.gnu.org>
Tue, 20 Jan 2015 14:49:51 +0000 (14:49 +0000)
2015-01-20  Chung-Lin Tang  <cltang@codesourcery.com>

gcc/
* config/nios2/nios2.c (nios2_asm_file_end): Implement
TARGET_ASM_FILE_END hook for adding .note.GNU-stack section when
needed.
(TARGET_ASM_FILE_END): Define.

libgcc/
* config/nios2/linux-unwind.h (nios2_fallback_frame_state):
Update rt_sigframe format and address for current Nios II
Linux conventions.

From-SVN: r219898

gcc/ChangeLog
gcc/config/nios2/nios2.c
libgcc/ChangeLog
libgcc/config/nios2/linux-unwind.h

index 995c2e2d22e71668d7889f14cfbb20976e8f470c..68c8f7499c87fda7ef322c78270410fc364da744 100644 (file)
@@ -1,3 +1,10 @@
+2015-01-20  Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * config/nios2/nios2.c (nios2_asm_file_end): Implement
+       TARGET_ASM_FILE_END hook for adding .note.GNU-stack section when
+       needed.
+       (TARGET_ASM_FILE_END): Define.
+
 2015-01-20  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
 
        * config/arm/arm-protos.h (enum arm_sched_autopref): New constants.
index 502314942ccd18d3b42d9371db4e2037ce0f8cd5..a7a140ee8d66378a7219f3bc8c22bbd206ec5c46 100644 (file)
@@ -2223,6 +2223,18 @@ nios2_output_dwarf_dtprel (FILE *file, int size, rtx x)
   fprintf (file, ")");
 }
 
+/* Implemet TARGET_ASM_FILE_END.  */
+
+static void
+nios2_asm_file_end (void)
+{
+  /* The Nios II Linux stack is mapped non-executable by default, so add a
+     .note.GNU-stack section for switching to executable stacks only when
+     trampolines are generated.  */
+  if (TARGET_LINUX_ABI && trampolines_created)
+    file_end_indicate_exec_stack ();
+}
+
 /* Implement TARGET_ASM_FUNCTION_PROLOGUE.  */
 static void
 nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
@@ -3401,6 +3413,9 @@ nios2_merge_decl_attributes (tree olddecl, tree newdecl)
 #undef TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA
 #define TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA nios2_output_addr_const_extra
 
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END nios2_asm_file_end
+
 #undef TARGET_OPTION_OVERRIDE
 #define TARGET_OPTION_OVERRIDE nios2_option_override
 
index 84ebcc5c09801662cdb56133dd5272cf59ad36e5..e7837d7e9a88699c09f9c0f2ace372dfe7eee88c 100644 (file)
@@ -1,3 +1,9 @@
+2015-01-20  Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * config/nios2/linux-unwind.h (nios2_fallback_frame_state):
+       Update rt_sigframe format and address for current Nios II
+       Linux conventions.
+
 2015-01-09  Andreas Tobler  <andreast@gcc.gnu.org>
 
        * config.host (arm*-*-freebsd*): Add new configuration for
index 0f1a405def6801effbf790f0415bf84ca5911dc8..dff1c20076ee947592b30ecb6e37dc60c8e6dbc0 100644 (file)
@@ -67,10 +67,9 @@ nios2_fallback_frame_state (struct _Unwind_Context *context,
   if (pc[0] == (0x00800004 | (__NR_rt_sigreturn << 6)))
     {
       struct rt_sigframe {
-       char retcode[12];
        siginfo_t info;
        struct nios2_ucontext uc;
-      } *rt_ = context->ra;
+      } *rt_ = context->cfa;
       struct nios2_mcontext *regs = &rt_->uc.uc_mcontext;
       int i;