Fixed the x86_64 setjmp implementation.
* typedef for jmp_buf was using int where it should be long. * setjmp was clearing the buffer pointer rather than the signal mask before calling sigsetjmp. * KDL now works without crashing on x86_64.
This commit is contained in:
@@ -6,6 +6,6 @@
|
|||||||
#define _ARCH_SETJMP_H_
|
#define _ARCH_SETJMP_H_
|
||||||
|
|
||||||
|
|
||||||
typedef int __jmp_buf[8];
|
typedef unsigned long __jmp_buf[8];
|
||||||
|
|
||||||
#endif /* _ARCH_SETJMP_H_ */
|
#endif /* _ARCH_SETJMP_H_ */
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ FUNCTION_END(setjmp)
|
|||||||
/* int setjmp(jmp_buf buffer) */
|
/* int setjmp(jmp_buf buffer) */
|
||||||
FUNCTION(setjmp):
|
FUNCTION(setjmp):
|
||||||
// Jump to sigsetjmp with a zero saveMask.
|
// Jump to sigsetjmp with a zero saveMask.
|
||||||
xorl %edi, %edi
|
xorl %esi, %esi
|
||||||
jmp sigsetjmp
|
jmp sigsetjmp
|
||||||
FUNCTION_END(setjmp)
|
FUNCTION_END(setjmp)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user