This is an old revision of the document!
Toolchain, Build and Packaging of Base
BSDCam session, 1pm - 2:45pm, August 26.
Topics for Discussion
- LLVM Instrumentation
- Configuration
- Modules by default
- Cleanup
- Static Analysis (operational issues)
- Tinderboxes
- Incremental Build
- Packaging Base
- External Toolchain Status
- Removing GPL from the toolchain
- Building old FreeBSD on Head (and vice versa)
LLVM Instrumentation
Traditional build turns a .c file into a .o file and then link the .o files. In the LLVM IR instrumentation world, you turn .c files into .ll/bc files, modify them, link them (then run link-time optimisation), then generate .o files, then link. In SOAAP, the instrumentation happens after the IR-link phase, for TESLA we run static analysis of the .c files, then instrument individual files.
There's no good way in make to express different routes from .c to .o. We want to be able to compose many of these things.
Things like TESLA and SOAAP require annotations, which are macros and can be compiled out. Things like the clang static analyser or KINT just check C-language semantics.
Some things in ports are also interesting to check, so it would be nice if we had a ${CC} and ${LD} that invoked some of these as part of a normal build. Some check API usage, including Apple kernel API checks, which could have some things.
Jon is just about to propose CMake…