mirror of
https://github.com/openwrt/openwrt.git
synced 2026-10-12 17:48:12 +04:00
CompileBPF calls clang with -g but without any prefix map. Stripping debug info keeps .BTF and .BTF.ext, since libbpf needs them, and their line info carries the absolute path of each source file. This makes BPF objects like qosify-bpf.o depend on the build directory and breaks reproducibility: -/builder/shared-workdir/build/build_dir/.../qosify-bpf.c +/tmp/rebuilderd-openwrt.juCsuQ/src/build_dir/.../qosify-bpf.c IREMAP_CFLAGS is not enough here: without CONFIG_REPRODUCIBLE_DEBUG_INFO it only sets -fmacro-prefix-map, which leaves the line info alone, and it is empty for external toolchains, which have no say over the host clang. Unlike regular debug info, BTF ships with the package, so always pass -ffile-prefix-map for the build and staging directories. Add an fremap helper next to iremap for that, and let IREMAP_STAGING_DIR and CompileBPF share the map of the staging directory, so they cannot drift apart. Link: https://github.com/openwrt/openwrt/pull/25359 Signed-off-by: Paul Spooren <mail@aparcar.org>