Ver Fonte

revert __error -> __syscall_error change since it doesnt work for clone

Mike Frysinger há 19 anos atrás
pai
commit
3417dd5c91
1 ficheiros alterados com 11 adições e 5 exclusões
  1. 11 5
      libc/sysdeps/linux/i386/clone.S

+ 11 - 5
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