Stuff Michael Meeks is doing |
Older items: 2023: ( J F M A M J ), 2022: ( J F M A M J J A S O N D ), 2021, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, legacy html
movl <vtable-offset>(%eax), %edx
call *%edx
-> lazy_link_vtable_method(this, ...);
int offset = %edx - this->vtable;
*(this->vtable + offset) = lookup_plt_style_sym(
this->plt_style_syms[offset]);
call %edx
<-
Thus using the vtable itself in place of PLT like slots,
giving a cost of: a fixed invocation register, N-duplicate symbol
relocations to intialize the vtables [fixable] later, & storage
for them, & storage for
the symbol references to resolve the vtable later in place of the
original relocations. Should be backwards compatible at least.
Michael Matz warns of possible fn. pointer comparison problems -
true enough; wonder what the spec. says about that. Need to
measure the real number of vtable related relocations in OO.o
first.
My content in this blog and associated images / data under
images/
and data/
directories are (usually)
created by me and (unless obviously labelled otherwise) are licensed under
the public domain, and/or if that doesn't float your boat a CC0
license. I encourage linking back (of course) to help people decide for
themselves, in context, in the battle for ideas, and I love fixes /
improvements / corrections by private mail.
In case it's not painfully obvious: the reflections reflected here are my own; mine, all mine ! and don't reflect the views of Collabora, SUSE, Novell, The Document Foundation, Spaghetti Hurlers (International), or anyone else. It's also important to realise that I'm not in on the Swedish Conspiracy. Occasionally people ask for formal photos for conferences or fun.
Michael Meeks (michael.meeks@collabora.com)