diff options
author | Greg McGary <greg@mcgary.org> | 2000-08-03 21:39:16 +0000 |
---|---|---|
committer | Greg McGary <greg@mcgary.org> | 2000-08-03 21:39:16 +0000 |
commit | eb48f491b15ad01be840db3f35b5fe33ca2b8fe2 (patch) | |
tree | c59a9e4a247af05d7f525c71deaa9ef8ca6ae903 | |
parent | 7f6f3e353249d97ffd24e947b08e35507a33f761 (diff) | |
download | glibc-eb48f491b15ad01be840db3f35b5fe33ca2b8fe2.zip glibc-eb48f491b15ad01be840db3f35b5fe33ca2b8fe2.tar.gz glibc-eb48f491b15ad01be840db3f35b5fe33ca2b8fe2.tar.bz2 |
* sysdeps/i386/setjmp.S (__sigsetjmp): Pop our
frame pointer early so that we save caller's frame pointer.
* sysdeps/i386/elf/setjmp.S: Likewise.
* sysdeps/i386/setjmp.S (__sigsetjmp): Pop our
frame pointer early so that we save caller's frame pointer.
* sysdeps/i386/elf/setjmp.S: Likewise.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/i386/elf/setjmp.S | 4 | ||||
-rw-r--r-- | sysdeps/i386/setjmp.S | 4 |
3 files changed, 8 insertions, 4 deletions
@@ -1,5 +1,9 @@ 2000-08-03 Greg McGary <greg@mcgary.org> + * sysdeps/i386/setjmp.S (__sigsetjmp): Pop our + frame pointer early so that we save caller's frame pointer. + * sysdeps/i386/elf/setjmp.S: Likewise. + * sysdeps/unix/sysv/syscalls.list (time, utime): Correct signatures. * io/test-utime.c: Test passing NULL as utimbuf* arg. diff --git a/sysdeps/i386/elf/setjmp.S b/sysdeps/i386/elf/setjmp.S index 1d600a4..bf03e65 100644 --- a/sysdeps/i386/elf/setjmp.S +++ b/sysdeps/i386/elf/setjmp.S @@ -57,13 +57,13 @@ ENTRY (BP_SYM (__sigsetjmp)) movl %ebx, (JB_BX*4)(%eax) movl %esi, (JB_SI*4)(%eax) movl %edi, (JB_DI*4)(%eax) - movl %ebp, (JB_BP*4)(%eax) leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */ movl %ecx, (JB_SP*4)(%eax) movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */ movl %ecx, (JB_PC*4)(%eax) - LEAVE /* pop frame pointer to prepare for tail-call. */ + movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */ + /* Make a tail call to __sigjmp_save; it takes the same args. */ #ifdef PIC /* We cannot use the PLT, because it requires that %ebx be set, but diff --git a/sysdeps/i386/setjmp.S b/sysdeps/i386/setjmp.S index 25b7ac8..673b7ab 100644 --- a/sysdeps/i386/setjmp.S +++ b/sysdeps/i386/setjmp.S @@ -44,13 +44,13 @@ ENTRY (BP_SYM (__sigsetjmp)) movl %ebx, (JB_BX*4)(%eax) movl %esi, (JB_SI*4)(%eax) movl %edi, (JB_DI*4)(%eax) - movl %ebp, (JB_BP*4)(%eax) leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */ movl %ecx, (JB_SP*4)(%eax) movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */ movl %ecx, (JB_PC*4)(%eax) - LEAVE /* pop frame pointer to prepare for tail-call. */ + movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */ + /* Make a tail call to __sigjmp_save; it takes the same args. */ #ifdef PIC /* We cannot use the PLT, because it requires that %ebx be set, but |