[NDS32] Sync glibc and kernel structure, all use _rt_sigframe.
authorMonk Chiang <sh.chiang04@gmail.com>
Fri, 21 Sep 2018 08:39:35 +0000 (08:39 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Fri, 21 Sep 2018 08:39:35 +0000 (08:39 +0000)
libgcc/
* config/nds32/linux-unwind.h (struct _rt_sigframe): Use struct
ucontext_t type instead.
(nds32_fallback_frame_state): Remove struct _sigframe statement.

From-SVN: r264461

libgcc/ChangeLog
libgcc/config/nds32/linux-unwind.h

index 7fdee61a1324817b9b202f2a0379c28b10f3287a..8d3f440a994dc6f48f2f4e5ae031848af1158bd9 100644 (file)
@@ -1,3 +1,9 @@
+2018-09-21  Monk Chiang  <sh.chiang04@gmail.com>
+
+       * config/nds32/linux-unwind.h (struct _rt_sigframe): Use struct
+       ucontext_t type instead.
+       (nds32_fallback_frame_state): Remove struct _sigframe statement.
+
 2018-09-21  Kito Cheng  <kito.cheng@gmail.com>
 
        * config/nds32/t-nds32-glibc: New file.
index 921edf906ea7a6b55335710f5cc883a1ce7984cc..c8f5983c916cec4d1a86b30c0f26b738f0d4f5fc 100644 (file)
 
 #include <signal.h>
 #include <asm/unistd.h>
+#include <sys/ucontext.h>
 
 /* Exactly the same layout as the kernel structures, unique names.  */
 
 /* arch/nds32/kernel/signal.c */
-struct _sigframe {
-    struct ucontext uc;
-    unsigned long retcode;
-};
-
 struct _rt_sigframe {
   siginfo_t info;
-  struct _sigframe sig;
+  struct ucontext_t uc;
 };
+
 #define SIGRETURN 0xeb0e0a64
 #define RT_SIGRETURN 0xab150a64
 
@@ -80,17 +77,10 @@ nds32_fallback_frame_state (struct _Unwind_Context *context,
        SWI_SYS_SIGRETURN    -> (0xeb0e0a64)
        SWI_SYS_RT_SIGRETURN -> (0xab150a64)
      FIXME: Currently we only handle little endian (EL) case.  */
-  if (pc[0] == SIGRETURN)
+  if (pc[0] == SIGRETURN || pc[0] == RT_SIGRETURN)
     {
       /* Using '_sigfame' memory address to locate kernal's sigcontext.
         The sigcontext structures in arch/nds32/include/asm/sigcontext.h.  */
-      struct _sigframe *rt_;
-      rt_ = context->cfa;
-      sc_ = &rt_->uc.uc_mcontext;
-    }
-  else if (pc[0] == RT_SIGRETURN)
-    {
-      /* Using '_sigfame' memory address to locate kernal's sigcontext.  */
       struct _rt_sigframe *rt_;
       rt_ = context->cfa;
       sc_ = &rt_->sig.uc.uc_mcontext;