diff options
Diffstat (limited to 'libc/sysdeps/linux/i386')
-rw-r--r-- | libc/sysdeps/linux/i386/clone.S | 16 | ||||
-rw-r--r-- | libc/sysdeps/linux/i386/mmap64.S | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/libc/sysdeps/linux/i386/clone.S b/libc/sysdeps/linux/i386/clone.S index 259982230..35a4e5b7f 100644 --- a/libc/sysdeps/linux/i386/clone.S +++ b/libc/sysdeps/linux/i386/clone.S @@ -51,19 +51,19 @@ __clone: /* no NULL function pointers */ movl FUNC(%esp),%ecx #ifdef __PIC__ - jecxz __syscall_error + jecxz __error #else testl %ecx,%ecx - jz __syscall_error + jz __error #endif /* no NULL stack pointers */ movl STACK(%esp),%ecx #ifdef __PIC__ - jecxz __syscall_error + jecxz __error #else testl %ecx,%ecx - jz __syscall_error + jz __error #endif /* Insert the argument onto the new stack. Make sure the new @@ -96,7 +96,7 @@ __clone: popl %ebx test %eax,%eax - jl __syscall_error + jl __error jz .Lthread_start ret @@ -114,6 +114,12 @@ __clone: movl $__NR_exit, %eax int $0x80 +/* Need to indirect jump to syscall error + * or we end up with TEXTREL's + */ +__error: + jmp __syscall_error + .size __clone,.-__clone .weak clone diff --git a/libc/sysdeps/linux/i386/mmap64.S b/libc/sysdeps/linux/i386/mmap64.S index 5c89c983b..5405c8a09 100644 --- a/libc/sysdeps/linux/i386/mmap64.S +++ b/libc/sysdeps/linux/i386/mmap64.S @@ -87,7 +87,7 @@ L_einval: popl %ebx popl %ebp movl $-EINVAL, %eax - jmp __error + jmp __syscall_error .size mmap64,.-mmap64 |