the gcc-4.9 release includes C++ vtable verification. we should turn this on on hardened systems (namely, the -fvtable-verify=preinit flag). CrOS did some performance tests and found 6% lose across devices, but it was largely focused on Chrome.
I added the original design proposals. There were a few bug fixes early on by Tice, but it looks like it has matured.
> namely, the -fvtable-verify=preinit flag I am not overly familiar with the internals of the emerge build system, but there will need to be flags specific to building executables and shared libraries. At present, preinit makes use of .init_array et al, which is not present in shared libraries. The options appear to be switching everything to -ftable-verify=start, modifying the source to replace .init_array with __attribute__((constructor(x)) semantics (which may or may not work), or developing a tiered approach to build flags. It's not entirely clear to me if preinit is even necessary or overly provides any new security functionality. As an addendum, Anthony is likely correct, some level of apprehension is probably called for. I've not done a comprehensive audit by any means, but a random scanning of some portions led me to think it probably needs a better review to ensure that it is not introducing issues, although I suspect all thats needed is some of the mprotect() related functionality might be best split into a a library that can be unloaded after initialization.
Is vtable-verify still worth considering? Or vtable-verify is not being actively developed nowadays?
(In reply to Sergei Trofimovich from comment #3) > Is vtable-verify still worth considering? Or vtable-verify is not being > actively developed nowadays? This change will break packages from Mozilla, it is also shown to slow the entire system down. If anything -fsanitize=vptr would be a much saner approach.
(In reply to Sergei Trofimovich from comment #3) > Is vtable-verify still worth considering? Or vtable-verify is not being > actively developed nowadays? I think is not worth to considering now days.
Thanks! Let's close it as obsolete.