I’m glad people liked the slides. I do indeed use beamer, with the Goettingen theme.
EdgeWiseInAnnArbor: I’m not sure that the autopackage site is really talking about the common case. If you force deep binding, then symbol interposition no longer works as you expect. In general ELF tries to make symbol interposition work, so that you can use LD_PRELOAD, etc. If you can’t live with that, then use dlopen with RTLD_DEEPBIND. dlopen is of course also the way to implement their suggested DT_USEFUL. ELF definitely makes complicated things complicated. But the simple case does generally do what people expect, especially when you realize that symbol interposition is a goal.
Great blog, and great presentations there. A quick nitpick, unless I’ve missed something, in your slide in the C++ GCC “VEC or vector”, I think the C++ side has a couple of issues. First up, the std::vector object isn’t assigned or allocated (I realise this may just be for clarity!) More importantly, the accessor “superloops[depth]” will almost certainly segfault for depth!=0. I think it should be “(*superloops)[depth]“, or maybe “superloops->at(depth)”.
Of course, I may have missed something along the way there, but the pedant in me couldn’t help posting here…
I’m very excited about the future of the linker, and look forward to the planned cool new features.
The VEC or vector slide isn’t clear as it is–I hope it was more clear when I talked about it! The C++ code isn’t meant to be real code. Instead, each line is the C++ version of the corresponding line in the C code. Thus, “VEC_reserve (loop_p, gc, superloops, depth);” in C is the same as “superloops->reserve(depth);”.
You’re quite right about “superloops[depth]“. That should have been “(*superloops)[depth]” as you suggest. Thanks.