LKML Archive on
help / color / mirror / Atom feed
From: "Ahmed S. Darwish" <>
Subject: Linux i386 clone(): %ebx 'frobbing' ?
Date: Fri, 15 Feb 2008 20:42:28 +0200	[thread overview]
Message-ID: <20080215184228.GA6687@ubuntu> (raw)

Hi all,

In the clone(int (*fn)(void *arg), void *child_stack, ..., void *arg, ...)
Glibc library function defind in sysdeps/unix/sysv/linux/i386/:

`fn' is saved in 8(child_stack), and `arg' is stored in 12(child_stack):

	movl	STACK(%esp),%ecx
	movl	ARG(%esp),%eax		/* no negative argument counts */
	movl	%eax,12(%ecx)		<---

	/* Save the function pointer as the zeroth argument.
	   It will be popped off in the child in the ebx frobbing below.  */
	movl	FUNC(%esp),%eax
	movl	%eax,8(%ecx)		<---

But after the exectuion of `sys_clone' system call, `fn' is 
called in the child thread by the statement 'call *%ebx' as follows:

	int	$0x80

	test	%eax,%eax
	jz	L(thread_start)

/* Parent */

/* Child */
	/* Note: %esi is zero.  */
	movl	%esi,%ebp	/* terminate the stack frame */
	call	*%ebx

I don't understand how the `fn' argument reached the child thread
in the %ebx register. It's said in the comment that `fn' will be
popped to child 'in the ebx frobbing below'. But what does that mean ?

Thanks in advance

Ahmed S. Darwish

             reply	other threads:[~2008-02-15 18:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-15 18:42 Ahmed S. Darwish [this message]
2008-02-15 20:07 ` Andreas Schwab
2008-02-15 23:07   ` Ahmed S. Darwish
2008-02-15 23:28     ` Andreas Schwab
2008-02-15 23:54       ` Ahmed S. Darwish

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080215184228.GA6687@ubuntu \ \ \ \ \
    --subject='Re: Linux i386 clone(): %ebx '\''frobbing'\'' ?' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox