Properly terminate FDE in makecontext for ix86 (bug 18635)

This commit is contained in:
Andreas Schwab 2015-08-04 12:35:50 +02:00
parent 8cf0ac959d
commit bbab82c25d
4 changed files with 13 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2015-08-04 Andreas Schwab <schwab@suse.de>
[BZ #18635]
* sysdeps/unix/sysv/linux/i386/makecontext.S: Terminate FDE before
ret.
* sysdeps/i386/i686/Makefile (test-xfail-tst-makecontext): Remove.
2015-08-01 Carlos O'Donell <carlos@redhat.com>
* po/pl.po: Updated translation.

4
NEWS
View File

@ -27,8 +27,8 @@ Version 2.22
18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
18549, 18553, 18557, 18558, 18569, 18583, 18585, 18586, 18592, 18593,
18594, 18602, 18612, 18613, 18619, 18633, 18641, 18643, 18648, 18657,
18676, 18694, 18696.
18594, 18602, 18612, 18613, 18619, 18633, 18635, 18641, 18643, 18648,
18657, 18676, 18694, 18696.
* Cache information can be queried via sysconf() function on s390 e.g. with
_SC_LEVEL1_ICACHE_SIZE as argument.

View File

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

View File

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