March 15, 2019

New Foundation Co-Op Students

In January, two new University of Waterloo co-operative education (co-op) students started working in the FreeBSD Foundation’s Kitchener-Waterloo, Ontario office. Now that we’re over half way through the work term, I’ll describe some of the work they’ve done so far, and what we expect over the next two months.

Gerald Aryeetey is a 2nd year Computer Engineering student. As an introductory project he looked at a FreeBSD Tool Chain issue – our static library archiver (ar) does not process 64-bit archives. This required a [change to the libarchive library] which has now been committed upstream. Once a new version of libarchive with this support is imported into FreeBSD the [corresponding change to ar] can be committed.

After becoming familiar with the FreeBSD build process, issue database, etc., Gerald reviewed the list of outstanding issues in FreeBSD-update, our binary update tool. He submitted a number of changes, around ten of which have since been committed to FreeBSD with several more to be reviewed.

More recently Gerald started working on our hardware Continuous Integration (CI) setup, exploring FreeBSD build and test on a number of embedded Arm boards such as the Pine64, Raspberry Pi, BeagleBone Black, and others. Gerald used an Arduino Leonardo to create a power controller, so the boards can be automatically powered on and off for testing. He found a few issues with the Arduino Integrated Development Environment (IDE), which are being discussed with the maintainer of FreeBSD’s Arduino ports. Working with Li-Wen Hsu, Gerald will next set up a Jenkins instance to build and execute tests on these devices.

Bora Özarslan is a 3rd year student in Computing and Financial Management. Bora also started investigating tool chain issues in FreeBSD, starting with some improvements to ELF Tool Chain’s readelf. Bora added support for decoding the DT_FLAGS/DT_FLAGS_1 ELF fields, which is important as we have started making use of these flags in FreeBSD. Bora also has changes to improve the performance and correctness of readelf’s DWARF debugging information decoding. These changes have just finished review and will be committed soon.

Next, Bora investigated kernel core dumps and the path to adding support to LLVM’s lldb debugger. Full support in lldb is a large undertaking, but as a step to the solution he has implemented a [tool] to convert FreeBSD’s kernel minidump format into an ELF dump. This involved identifying a number of issues in FreeBSD’s kvm_walk_pages interface, with fixes in review. Bora also developed a small tool to set the feature control bits in FreeBSD’s new NT_FREEBSD_FEATURE_CTL ELF note, which will be used to tag binaries for mitigations such as ASLR.

Bora is now moving to security topics, looking at applying Capsicum sandboxing to Kristaps Dzonsons’ new BSD licensed rsync implementation, openrsync.

I look forward to two more months of excellent contributions from these two students.

— contributed by Ed Maste