[PATCH] Fix bug with popen/pthread_create

Jakub Jelinek jakub@redhat.com
Fri Feb 7 10:21:00 GMT 2003


On Fri, Feb 07, 2003 at 11:11:05AM +0100, Andreas Schwab wrote:
> |> --- 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?

Yes.

	Jakub



More information about the Libc-hacker mailing list