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
This commit is contained in:
H.J. Lu 2011-08-03 04:59:41 +00:00 committed by H.J. Lu
parent 16c57fe280
commit 40f2f11f1f
2 changed files with 13 additions and 2 deletions

View File

@ -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__>):

View File

@ -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.