5–7 Oct 2026
Europe/Prague timezone

Towards real-time ABI compatibility assurance and smarter module versioning with libctf

5 Oct 2026, 12:30
30m
"South Hall 1 B" (Prague Congress Centre)

"South Hall 1 B"

Prague Congress Centre

158
Toolchains Track Toolchains Track

Speaker

Nick Alcock

Description

The CTFv4 extension of the CTF file format into a superset of BTF is nearly complete. Once it's working, what can we do with systemwide type information for all C programs and the kernel?

One possibility we explore in this talk is to use some simple linker extensions to provide real-time, linear-time ABI checking in ld.so to determine for every running program whether any of the C libraries it uses has changed incompatibly since the program was linked in a way that breaks the program, without linking ld.so with libctf or requiring it to do anything more difficult than a few equality comparisons and strcmps.

The end goal in userspace is to be able to see something like this

# emacs
warning: libxml.so.2.13.9: incompatible symbol: linked against
  xmlDocPtr xmlReadMemory (const char *, int, const char *, const char *, int)
but running against
  xmlDocPtr xmlReadMemory (const char *, int, const char *, const char *)

(a contrived example: xmlReadMemory has not actually broken ABI. ld.so invokes a helper program that uses libctf to print that output, but does not itself need to use libctf.)

It also seems likely to me that the same infrastructure that implements the above can be reused to implement a better modversions without the manifold pain points of the current implementation.

This is only partly written so far: we explore the design of this scheme in part so that the audience can spot any serious errors before it causes widespread breakage, and to see if people can suggest improvements to the general design. (I'm certain that modversions will add exciting extra wrinkles to this.)

Author

Presentation materials

There are no materials yet.