On Tue, Nov 04, 2025 at 06:15:48PM -0700, Nathan Chancellor wrote:
On Tue, Nov 04, 2025 at 08:35:57PM +0000, Dimitri John Ledkov wrote:
On Tue, 4 Nov 2025 at 18:12, Omar Sandoval osandov@osandov.com wrote:
drgn's CI hit this same failure. FWIW, the commit fixed by this bisected commit, 3e86e4d74c04 ("kbuild: keep .modinfo section in vmlinux.unstripped"), also results in ELF segments of size 0 in vmlinux for some configurations, which confused drgn until I added a workaround (https://github.com/osandov/drgn/commit/2a9053de8796af866fd720a3c8c23013595d3...). So there's some funkiness in this area.
Omar, could you provide me with a configuration file that reproduces this for you? Is there an easy way to check for this situation on the command line?
Here's a script that reproduces it:
``` #!/bin/sh
set -e
host_arch=x86_64 compiler_version="12.4.0"
compiler_dir="/tmp/arm64-gcc-$compiler_version" if [ ! -e "$compiler_dir" ]; then rm -rf "$compiler_dir.tmp" mkdir "$compiler_dir.tmp" curl -L "https://mirrors.kernel.org/pub/tools/crosstool/files/bin/%24host_arch/%24com..." | tar -C "$compiler_dir.tmp" -Jx mv "$compiler_dir.tmp" "$compiler_dir" fi
export PATH="$compiler_dir/gcc-$compiler_version-nolibc/aarch64-linux/bin:$PATH" make ARCH=arm64 CROSS_COMPILE=aarch64-linux- tinyconfig make ARCH=arm64 CROSS_COMPILE=aarch64-linux- -j$(nproc) vmlinux readelf -W -l vmlinux | awk '$1 == "LOAD" && $6 ~ /0x0+>/' ```
It prints something like:
LOAD 0x1ef008 0x0000000000000000 0xffff800080220000 0x000000 0x000000 R 0x10000
I.e., a segment with FileSiz and MemSiz 0.
Using a newer crosstool version fixes it, so maybe this was a GCC or binutils bug.
Thanks, Omar