* gendef (_sigbe/x86_64): Fix typo in .seh_proc pseudo-op.
(setjmp/x86_64): Drop storing ExceptionList pointer in jmp_buf->Frame. Drop comment. Store likely frame in rdx. Jump to __setjmpex. (__setjmpex): New function providing setjmp functionality. Fetch jmp_buf->Frame from rdx, like MSVCRT setjmpex. (__sjfault/x86_64): Store rdx content in jmp_buf->Frame. (__ljfault/x86_64): Don't restore ExceptionList pointer. (longjmp/x86_64): Ditto.
This commit is contained in:
parent
31eade549d
commit
50b0a28824
@ -1,3 +1,14 @@
|
|||||||
|
2014-03-27 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* gendef (_sigbe/x86_64): Fix typo in .seh_proc pseudo-op.
|
||||||
|
(setjmp/x86_64): Drop storing ExceptionList pointer in jmp_buf->Frame.
|
||||||
|
Drop comment. Store likely frame in rdx. Jump to __setjmpex.
|
||||||
|
(__setjmpex): New function providing setjmp functionality. Fetch
|
||||||
|
jmp_buf->Frame from rdx, like MSVCRT setjmpex.
|
||||||
|
(__sjfault/x86_64): Store rdx content in jmp_buf->Frame.
|
||||||
|
(__ljfault/x86_64): Don't restore ExceptionList pointer.
|
||||||
|
(longjmp/x86_64): Ditto.
|
||||||
|
|
||||||
2014-03-19 Christopher Faylor <me.cygwin2014@cgf.cx>
|
2014-03-19 Christopher Faylor <me.cygwin2014@cgf.cx>
|
||||||
|
|
||||||
* fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Actually pass ioctl
|
* fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Actually pass ioctl
|
||||||
|
@ -164,7 +164,7 @@ _sigfe: # stack is aligned on entry!
|
|||||||
jmp *%rax # and jmp to it
|
jmp *%rax # and jmp to it
|
||||||
.seh_endproc
|
.seh_endproc
|
||||||
|
|
||||||
.seh_proc _sigfe
|
.seh_proc _sigbe
|
||||||
_sigbe: # return here after cygwin syscall
|
_sigbe: # return here after cygwin syscall
|
||||||
# stack is aligned on entry!
|
# stack is aligned on entry!
|
||||||
.seh_endprologue
|
.seh_endprologue
|
||||||
@ -589,10 +589,17 @@ sub longjmp {
|
|||||||
.seh_proc setjmp
|
.seh_proc setjmp
|
||||||
setjmp:
|
setjmp:
|
||||||
.seh_endprologue
|
.seh_endprologue
|
||||||
# We use the Windows jmp_buf layout. Store ExceptionList in Frame.
|
leaq 8(%rsp),%rdx
|
||||||
|
jmp __setjmpex
|
||||||
|
.seh_endproc
|
||||||
|
|
||||||
|
.globl __setjmpex
|
||||||
|
.seh_proc __setjmpex
|
||||||
|
__setjmpex:
|
||||||
|
.seh_endprologue
|
||||||
|
# We use the Windows jmp_buf layout.
|
||||||
# Store alternative stackptr in Spare.
|
# Store alternative stackptr in Spare.
|
||||||
movq %gs:0,%r10
|
movq %rdx,(%rcx)
|
||||||
movq %r10,(%rcx)
|
|
||||||
movq %rbx,0x8(%rcx)
|
movq %rbx,0x8(%rcx)
|
||||||
movq %rsp,0x10(%rcx)
|
movq %rsp,0x10(%rcx)
|
||||||
movq %rbp,0x18(%rcx)
|
movq %rbp,0x18(%rcx)
|
||||||
@ -631,8 +638,7 @@ setjmp:
|
|||||||
__sjfault:
|
__sjfault:
|
||||||
.seh_endprologue
|
.seh_endprologue
|
||||||
# Like setjmp, just w/o storing the alternate stackptr.
|
# Like setjmp, just w/o storing the alternate stackptr.
|
||||||
movq %gs:0,%r10
|
movq %rdx,(%rcx)
|
||||||
movq %r10,(%rcx)
|
|
||||||
movq %rbx,0x8(%rcx)
|
movq %rbx,0x8(%rcx)
|
||||||
movq %rsp,0x10(%rcx)
|
movq %rsp,0x10(%rcx)
|
||||||
movq %rbp,0x18(%rcx)
|
movq %rbp,0x18(%rcx)
|
||||||
@ -662,8 +668,6 @@ __sjfault:
|
|||||||
.globl __ljfault
|
.globl __ljfault
|
||||||
.seh_proc __ljfault
|
.seh_proc __ljfault
|
||||||
__ljfault:
|
__ljfault:
|
||||||
movq (%rcx),%r10
|
|
||||||
movq %r10,%gs:0
|
|
||||||
movq 0x8(%rcx),%rbx
|
movq 0x8(%rcx),%rbx
|
||||||
movq 0x10(%rcx),%rsp
|
movq 0x10(%rcx),%rsp
|
||||||
movq 0x18(%rcx),%rbp
|
movq 0x18(%rcx),%rbp
|
||||||
@ -708,8 +712,6 @@ longjmp:
|
|||||||
decl $tls::stacklock(%r11) # relinquish lock
|
decl $tls::stacklock(%r11) # relinquish lock
|
||||||
xorl %r10d,%r10d
|
xorl %r10d,%r10d
|
||||||
movl %r10d,$tls::incyg(%r11) # we're definitely not in cygwin anymore
|
movl %r10d,$tls::incyg(%r11) # we're definitely not in cygwin anymore
|
||||||
movq (%rcx),%r10
|
|
||||||
movq %r10,%gs:0
|
|
||||||
movq 0x8(%rcx),%rbx
|
movq 0x8(%rcx),%rbx
|
||||||
movq 0x10(%rcx),%rsp
|
movq 0x10(%rcx),%rsp
|
||||||
movq 0x18(%rcx),%rbp
|
movq 0x18(%rcx),%rbp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user