Fragile ABI
R Grocott
rgrocottbugzilla at gmail.com
Fri Aug 17 05:36:56 PDT 2012
Paulo -
Surely there are ways to work around the OS's native ABI, though,
even from within compiled code?
Rewriting object vtables (etc.) might be a bit more involved than
simple name mangling, but I'm almost certain it would be possible
to implement it as part of druntime. The blog post which I linked
describes one way to go about it.
Michael -
As far as I can tell, most of the performance cost in your idea
comes from the additional level of indirection, since you store
vtable offsets in a global variable which must be read before
each function call.
This might just be wishful thinking, but would it be possible for
druntime to write new vtable offsets directly into the program's
machine code, at dynamic-link time? That would remove all of the
run-time performance overhead, but, as I say, I'm not sure
whether it's actually possible.
I think the biggest obstacle is that it would require the .text
section (or equivalent) of the executable to be writable. I know
that's possible on Linux, but I'm not sure whether the same is
true for most other operating systems. I guess it might also be a
security risk?
More information about the Digitalmars-d
mailing list