From 40f2f11f1f38c4346b843d94a0d8a68a2e7bcd87 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hongjiu.lu@intel.com>
Date: Wed, 3 Aug 2011 04:59:41 +0000
Subject: [PATCH] Update x32 __NR_rt_sigreturn system call number.

2011-08-02  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/linux-unwind.h (RT_SIGRETURN_SYSCALL): New.
	(x86_64_fallback_frame_state): Use RT_SIGRETURN_SYSCALL and
	long long to check rt_sigreturn syscall.

From-SVN: r177229
---
 libgcc/ChangeLog                  | 6 ++++++
 libgcc/config/i386/linux-unwind.h | 9 +++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 1685c9fa7c3b..322b93ec861f 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/linux-unwind.h (RT_SIGRETURN_SYSCALL): New.
+	(x86_64_fallback_frame_state): Use RT_SIGRETURN_SYSCALL and
+	long long to check rt_sigreturn syscall.
+
 2011-08-02  Alan Modra  <amodra@gmail.com>
 
 	* config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>):
diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h
index de44823e053f..f17a46cc8e71 100644
--- a/libgcc/config/i386/linux-unwind.h
+++ b/libgcc/config/i386/linux-unwind.h
@@ -44,9 +44,14 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context,
   struct sigcontext *sc;
   long new_cfa;
 
-  /* movq __NR_rt_sigreturn, %rax ; syscall  */
+  /* movq $__NR_rt_sigreturn, %rax ; syscall.  */
+#ifdef __LP64__
+#define RT_SIGRETURN_SYSCALL	0x050f0000000fc0c7ULL
+#else
+#define RT_SIGRETURN_SYSCALL	0x050f40002006c0c7ULL
+#endif
   if (*(unsigned char *)(pc+0) == 0x48
-      && *(unsigned long *)(pc+1) == 0x050f0000000fc0c7)
+      && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
     {
       struct ucontext *uc_ = context->cfa;
       /* The void * cast is necessary to avoid an aliasing warning.
-- 
GitLab