[PATCH] Fix bug with popen/pthread_create

Andreas Schwab schwab@suse.de
Fri Feb 7 10:11:00 GMT 2003


Jakub Jelinek <jakub@redhat.com> writes:

|> --- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S.jj	2003-01-09 15:27:26.000000000 -0500
|> +++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S	2003-02-06 13:31:43.000000000 -0500
|> @@ -31,7 +31,19 @@ ENTRY (__vfork)
|>  
|>  #ifdef __NR_vfork
|>  
|> -	SINGLE_THREAD_P
|> +# ifdef SHARED
|> +#  if !defined HAVE_HIDDEN || !USE___THREAD
|> +	SETUP_PIC_REG (cx)
|> +#  else
|> +	call	__i686.get_pc_thunk.cx
|> +#  endif
|> +	addl	$_GLOBAL_OFFSET_TABLE_, %ecx
|> +	cmpl	$0, __libc_pthread_functions@GOTOFF(%ecx)
|> +# else
|> +	.weak	__pthread_fork
|> +	movl	$__pthread_fork, %eax
|> +	testl	%eax, %eax
|> +# endif
|>  	jne	HIDDEN_JUMPTARGET (__fork)
|>  
|>  	/* Pop the return PC value into ECX.  */

Shouldn't that be moved outside of #ifdef __NR_vfork, so that __fork is
used even if compiling with kernel headers that do not define vfork?  The
minimum for i386 is still 2.0.10.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Libc-hacker mailing list