(from
https://goo.gl/vhswUP, a.k.a., https://hackmd.io/EwQwRgJgZgnAxgdgLQBYYwAysgUyTANmBlQFYwYIJSEMRScg)
Build systems, compilers, linkers, oh my!
TODOs
decouple thread0 allocation from jemalloc
sanitizer integration
malloc not coupled to csu (could have libjemalloc)
ability to replace with debug malloc, secure malloc, etc.
kernel IFUNC support - armv8.1 atomic instructions
Investigate autofdo (pgo)
Empirical questions out of pgo
Collect profile data from (buildworld libraries? package build cluster?)
Incrementally commit CHERIbuild changes
Topics to cover
LLD
CHERIBuild
Build LLVM + Clang + cheribsd from MacOS or Linux
Now also builds postgres etc.
Wrote cmake build infrastructure for awk, sed, rmdir, etc. (build tools) then invoke bmake
Managed to get a FreeBSD MIPS build w/ cheribsd
Problem with generator tools (e.g. csh) that are not done in their own phase - they build in the same directory at the same time as the main binary
Separate build tool to own Makefile?
Incrementally migrate changes into FreeBSD upstream?
CheriBSD increasingly building with external toolchain
Plan to migrate platforms using GCC today to external toolchain
For 12.0 - either use Clang or require xtoolchain
Release engineering / reproducibility, need to store xtoolchain packages used for release
Future: may treat local toolchain as special case of external toolchain?
Build system replacement
No current, concrete plans
If anyone wrote CMake files for FreeBSD they would find some willing testers :)
Static analysis and sanitizers
2/4 major sanitizers mostly work on FreeBSD (dsan, ubsan)
Question: should certain sanitizers be a matter of tier support?
C source-to-source transformation for dynamic validation
IRification
Profile guided optimization
Coverage analysis
Current analysis is based on gcov.
Coverage is statement based, would like condition decision based coverage.
Lack of opensource tools means no ability to run under travis, etc
Hard to know if we're writing correct/sufficient tests without coverage
Support for “IR everywhere” may help in writing new/better tools