diff options
author | Andreas Schwab <schwab@suse.de> | 2015-08-04 12:35:50 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@suse.de> | 2015-08-04 17:46:56 +0200 |
commit | bbab82c25da9b504c0804119840de7aeab0eeeba (patch) | |
tree | e5c124527f1aec3b7b03ffc5cbe5ad04dba4e075 /sysdeps | |
parent | 8cf0ac959d318cf113feb1a9ca5d325010bb2124 (diff) | |
download | glibc-bbab82c25da9b504c0804119840de7aeab0eeeba.tar.gz glibc-bbab82c25da9b504c0804119840de7aeab0eeeba.tar.xz glibc-bbab82c25da9b504c0804119840de7aeab0eeeba.zip |
Properly terminate FDE in makecontext for ix86 (bug 18635)
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/i386/i686/Makefile | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/makecontext.S | 5 |
2 files changed, 4 insertions, 7 deletions
diff --git a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile index 83517c48db..5ce9fc670a 100644 --- a/sysdeps/i386/i686/Makefile +++ b/sysdeps/i386/i686/Makefile @@ -18,9 +18,3 @@ ASFLAGS-.op += -Wa,-mtune=i686 ASFLAGS-.og += -Wa,-mtune=i686 ASFLAGS-.oS += -Wa,-mtune=i686 endif - -ifeq ($(subdir),stdlib) -# _Unwind_Backtrace from libgcc produces a segmentation fault if it was -# called within a context created by makecontext. See Bug 18635. -test-xfail-tst-makecontext = yes -endif diff --git a/sysdeps/unix/sysv/linux/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S index 8364fb98ee..bcf8de68ef 100644 --- a/sysdeps/unix/sysv/linux/i386/makecontext.S +++ b/sysdeps/unix/sysv/linux/i386/makecontext.S @@ -83,6 +83,10 @@ ENTRY(__makecontext) #else movl $L(exitcode), (%edx) #endif + /* We need to terminate the FDE here instead of after ret because + the unwinder looks at ra-1 for unwind information. */ + cfi_endproc + /* 'makecontext' returns no value. */ ret @@ -92,7 +96,6 @@ ENTRY(__makecontext) the context 'makecontext' manipulated at the time of the 'makecontext' call. If the pointer is NULL the process must terminate. */ - cfi_endproc L(exitcode): /* This removes the parameters passed to the function given to 'makecontext' from the stack. EBX contains the number of |