** Description changed:
+ [Impact]
+
When building out-of-tree kernel modules (via DKMS or manual module
build) on systems with the debuginfo package (`linux-image-*-dbgsym`)
installed, BTF (BPF Type Format) generation is skipped due to vmlinux
not being found in the expected location. This prevents BPF-based
tracing tools (bpftrace, BCC) from attaching kprobes/kfuncs to out-of-
tree module functions.
+
+ [Fix]
+
+ The patch "UBUNTU: [Packaging] dbgsym: add vmlinux symlink to headers
+ directory" resolves this issue by including a symlink to the vmlinux at
+ /usr/src/linux-headers-7.0.0-xx-generic/vmlinux in the linux-
+ image-7.0.0-xx-generic-dbgsym package.
+
+ [Test Plan]
+
+ Verify that BTF generation succeeds:
+
+ 1. Install dbgsym and headers for the target kernel.
+
+ $ sudo apt install linux-image-7.0.0-xx-generic-dbgsym linux-
+ headers-7.0.0-xx-generic-dbgsym
+
+ 2. Obtain sources for a test kernel module.
+
+ $ git clone https://github.com/ivbakula/hello-world-kernel-module
+
+ 3. Build this kernel module.
+
+ make -C /lib/modules/7.0.0-xx-generic/build M=hello-world-kernel-module
+ modules
+
+ 4. Verify BTF generation is successful.
+
+ $ objdump --section=.BTF -s ~/hello-world-kernel-module/hello.ko
+
+ /root/hello-world-kernel-module/hello.ko: file format elf64-x86-64
+
+ Contents of section .BTF:
+ 0000 9feb0100 18000000 00000000 60000000 ............`...
+ 0010 60000000 16000000 00000000 0000000a `...............
+ 0020 02000000 00000000 00000003 00000000 ................
+ 0030 03000000 01000000 05000000 00000000 ................
+ 0040 0000000a 04000000 15000000 0000000c ................
+ 0050 09000000 20000000 0000000c 08000000 .... ...........
+ 0060 00000000 0000000d 01000000 00000000 ................
+ 0070 0000000d 00000000 68656c6c 6f5f6578 ........hello_ex
+ 0080 69740068 656c6c6f 5f696e69 7400 it.hello_init.
+
+
+ Note: if BTF generation is unsuccessful, the output will appear as:
+
+ $ objdump --section=.BTF -s hello.nobtf.ko
+
+ hello.nobtf.ko: file format elf64-x86-64
+
+ objdump: section '.BTF' mentioned in a -j option, but not found in any
+ input file
+
+ [Where issues could occur]
+
+ This modifies the Ubuntu dbgsym packaging. An issue with this fix could
+ result in a malformed dbgsym package. On systems with the dbgsym package
+ installed, built out-of-tree kernel modules will now include an
+ additional .BTF section, which is already true for in-tree kernel
+ modules.
+
+
+ Original bug description:
steps to reproduce:
git clone https://github.com/ivbakula/hello-world-kernel-module
$ cd hello-world-kernel-module
$ make -C /usr/src/linux-headers-6.14.0-33-generic/ M=$PWD modules V=1
make: Entering directory '/usr/src/linux-headers-6.14.0-33-generic'
<snip>
# LD [M] hello.ko
ld -r -m elf_x86_64 -z noexecstack --no-warn-rwx-segments --build-
id=sha1 -T /usr/src/linux-headers-6.14.0-33-generic/scripts/module.lds
-o hello.ko hello.o hello.mod.o .module-common.o
# BTF [M] hello.ko
if [ ! -f /usr/src/linux-headers-6.14.0-33-generic/vmlinux ]; then
printf "Skipping BTF generation for %s due to unavailability of
vmlinux\n" hello.ko 1>&2; else LLVM_OBJCOPY="objcopy" pahole -J
--btf_gen_floats -j --skip_encoding_btf_inconsistent_proto
--btf_gen_optimized --lang_exclude=rust --btf_base /usr/src/linux-
headers-6.14.0-33-generic/vmlinux hello.ko; /usr/src/linux-
headers-6.14.0-33-generic/tools/bpf/resolve_btfids/resolve_btfids -b
/usr/src/linux-headers-6.14.0-33-generic/vmlinux hello.ko; fi;
Skipping BTF generation for hello.ko due to unavailability of vmlinux
make[1]: Leaving directory '/tmp/hello-world-kernel-module'
make: Leaving directory '/usr/src/linux-headers-6.14.0-33-generic'
-
"Skipping BTF generation for hello.ko due to unavailability of vmlinux" says
vmlinux wasn't found.
Workaround: ln -s /usr/lib/debug/boot/vmlinux-$(uname -r)
/usr/src/linux-headers-$(uname -r)/vmlinux it seems to work.
** Also affects: linux (Ubuntu)
Importance: Undecided
Status: New
** Also affects: linux (Ubuntu Resolute)
Importance: Undecided
Status: New
** Also affects: linux-nvidia-6.17 (Ubuntu Resolute)
Importance: Undecided
Assignee: Jacob Martin (jacobmartin)
Status: New
** Also affects: linux (Ubuntu Noble)
Importance: Undecided
Status: New
** Also affects: linux-nvidia-6.17 (Ubuntu Noble)
Importance: Undecided
Status: New
** Changed in: linux (Ubuntu Resolute)
Status: New => In Progress
** Changed in: linux (Ubuntu Resolute)
Assignee: (unassigned) => Jacob Martin (jacobmartin)
** Changed in: linux-nvidia-6.17 (Ubuntu Resolute)
Status: New => Invalid
** Changed in: linux-nvidia-6.17 (Ubuntu Noble)
Assignee: (unassigned) => Jacob Martin (jacobmartin)
** Changed in: linux-nvidia-6.17 (Ubuntu Resolute)
Assignee: Jacob Martin (jacobmartin) => (unassigned)
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2133794
Title:
BTF Generation Fails for Out-of-Tree Modules with Debuginfo Package
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2133794/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs