Fragile ABI

Michel Fortin michel.fortin at michelf.ca
Fri Aug 17 06:42:27 PDT 2012


On 2012-08-17 12:36:56 +0000, "R Grocott" <rgrocottbugzilla at gmail.com> said:

> 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?

It's certainly doable if you put it at the right place. But druntime is 
not the one in charge of dynamic linking: the dynamic linker from the 
OS is, so that's the ideal place to do such a thing. If you want to do 
it in druntime it'll be a huge hassle, if doable at all it'll probably 
break easily. But on the OS side you hit a rock because of different 
approach to dynamic linking (Windows does not really have a dynamic 
linker).

-- 
Michel Fortin
michel.fortin at michelf.ca
http://michelf.ca/



More information about the Digitalmars-d mailing list