From: Alan Modra <amodra@bigpond.net.au>
To: Jonathan Bartlett <johnnyb@eskimo.com>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: Why the "opd" section?
Date: Tue, 25 Jul 2006 11:45:58 +0930 [thread overview]
Message-ID: <20060725021558.GG6872@bubble.grove.modra.org> (raw)
In-Reply-To: <Pine.SUN.4.58.0607232059070.699@eskimo.com>
On Sun, Jul 23, 2006 at 09:01:38PM -0700, Jonathan Bartlett wrote:
> I'm learning PPC64 assembly language, and I found the existence of the
> "opd" sections containing function descriptors quite odd. What is the use
> of these? Are they used by the linker? Why are they needed in the 64-bit
> ELF platforms and not the 32-bit ones?
OPD is an array of function pointers. Function pointers on powerpc64
are not just simple pointers to some code; They specify the code entry
point, the TOC pointer, and the static chain pointer (unused by C).
To call a function, you need to know all these values because functions
do not initialise their own TOC pointer. This allows for more efficient
code. The compiler/linker can omit the TOC pointer load when both
caller and callee are known to share the same TOC. (In many ways, the
TOC is like the powerpc32 GOT. powerpc32 -fpic/PIC code initialises the
GOT pointer on entry to every function, even when caller and callee are
known to have the same GOT pointer.)
--
Alan Modra
IBM OzLabs - Linux Technology Centre
next prev parent reply other threads:[~2006-07-25 2:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-24 4:01 Why the "opd" section? Jonathan Bartlett
2006-07-25 2:15 ` Alan Modra [this message]
2006-07-25 13:23 ` Jonathan Bartlett
2006-07-25 14:06 ` Alan Modra
2006-07-28 18:19 ` Linas Vepstas
2006-08-09 13:15 ` .tc entries question Jonathan Bartlett
2006-08-09 13:55 ` Alan Modra
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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060725021558.GG6872@bubble.grove.modra.org \
--to=amodra@bigpond.net.au \
--cc=johnnyb@eskimo.com \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.