Date: Tue, 22 Sep 2015 10:23:56 -0400 From: Ed Maste <emaste@freebsd.org> To: FreeBSD Current <freebsd-current@freebsd.org> Subject: HEADS UP: Standalone kernel debug files moving out of /boot/kernel (really, this time) Message-ID: <CAPyFy2BVqrKK2nWF9%2BJ6U6iGvmBkfb5%2BCN6bN-5tz7MUGEUy8Q@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I am preparing to move the standalone kernel debug data out of /boot/kernel/ into /usr/lib/debug/boot/kernel/, mirroring the approach used for userland debug data. This significantly reduces the boot partition size requirement, and is a step towards supporting the installation of kernel debug data ony when required. LLDB and GDB automatically search for debug data under /usr/lib/debug/ so this change should be transparent from an end-user perspective. The change can be reviewed in Phabricator at https://reviews.freebsd.org/D1006 and can be fetched as a unified diff from https://people.freebsd.org/~emaste/patches/D1006.diff This change was discussed on -current last year[1] and a number of concerns were raised. These are addressed in the updated patch, and I'll summarize them here: * /usr/lib seems like an odd location for this data /usr/lib/debug is the standard location established by GDB, and seems reasonable enough. I don't want to introduce gratuitous differences when compared with other systems. * Do gdb / lldb look also in /usr/local/lib/debug, for ports debug files? Not yet; this is definitely something to address with additional work. * Is it possible to keep the current behaviour? Yes, set KERN_DEBUGDIR="" in src.conf(5). * /usr now needs to be mounted for savecore to work Savecore does not rely on debug files; crashinfo does. As crashinfo also requires /usr/bin/gdb /usr already needs to be mounted. * This makes working with multiple kernels more difficult. Users with a workflow requiring a single "cp" or "mv" to shuffle around kernels and debug data can use the src.conf(5) setting to keep things as today. The techniques documented in build(7) for working with multiple named kernels require no changes; for example a kernel in /boot/newkernel/ will have its debug data in /usr/lib/debug/boot/newkernel/. The kernel to kernel.old rotation also works on both /boot/kernel and /usr/lib/debug/boot/kernel. * Why rename .symbols to .debug? 1) This is what they're called elsewhere. 2) It's not an accurate description of the file's content. Some symbol data also exists in the binary or library, and there is a lot more debugging information in the standalone debug file than just symbols. 3) Userland and kernel debug data will have the same debug extension. Renaming them along with the other changes is a better approach than having another change later on. I plan to commit the change later this week. [1] https://lists.freebsd.org/pipermail/freebsd-current/2014-October/052926.html
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPyFy2BVqrKK2nWF9%2BJ6U6iGvmBkfb5%2BCN6bN-5tz7MUGEUy8Q>