ia64 vtable entries (was: C implementations of the C++ ABI)

Jim Dehnert dehnert at baalbek.engr.sgi.com
Thu Mar 2 00:50:24 UTC 2000


> From rth at cygnus.com  Wed Mar  1 15:05:46 2000
> 
> On Wed, Mar 01, 2000 at 12:53:07PM -0800, Jim Dehnert wrote:
> > The dynamic linker should handle them exactly like it does
> > the .IA_64.pltoff relocations -- the semantics is identical.
> > So they don't need to be differentiated.
> 
> No, not exactly like.  When we're doing lazy binding the
> .IA_64.pltoff entries are initially only adjusted for the
> load address of the dso.
> 
> So you're planning on treating .rel.IA_64.pltoff specially.
> 
> Which means there ought to be additional guarantees by the
> IA-64 ABI that are not provided by the generic ELF ABI.
> Namely, that .rel.IA_64.pltoff is not included in DT_RELA/DT_RELASZ.

OK, now I understand your issue, at least.  But the vtable might
actually benefit as much or more from lazy binding.  This does raise
another issue, though.  We found on MIPS that lazy binding had
occasional obnoxious interactions with optimization, e.g. when the
optimizer moves the load of the lazy-bound function pointer out of a
loop, and ends up calling rld (ld.so) every iteration.  I would not
object to having two versions of the relocation that allow or don't
allow lazy binding, but that seems orthogonal to the issue at hand.

Jim

-	    Jim Dehnert		dehnert at sgi.com
				(650)933-4272




More information about the cxx-abi-dev mailing list