Re: die__process: DW_TAG_compile_unit, DW_TAG_type_unit, DW_TAG_partial_unit or DW_TAG_skeleton_unit expected got INVALID (0x0) @ 115a4a9!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Alan,


Thank you for looking into this.


Am 24.04.25 um 20:07 schrieb Alan Maguire:
On 22/04/2025 14:33, Paul Menzel wrote:

Trying to build Linux 6.12.23 with BTF and pahole 1.30, I get the build
failure below:

     $ more .config
     […]
     #
     # Compile-time checks and compiler options
     #
     CONFIG_DEBUG_INFO=y
     CONFIG_AS_HAS_NON_CONST_ULEB128=y
     # CONFIG_DEBUG_INFO_NONE is not set
     # CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
     # CONFIG_DEBUG_INFO_DWARF4 is not set
     CONFIG_DEBUG_INFO_DWARF5=y
     # CONFIG_DEBUG_INFO_REDUCED is not set
     CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
     # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
     # CONFIG_DEBUG_INFO_SPLIT is not set
     CONFIG_DEBUG_INFO_BTF=y
     CONFIG_PAHOLE_HAS_SPLIT_BTF=y
     CONFIG_DEBUG_INFO_BTF_MODULES=y
     # CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set
     # CONFIG_GDB_SCRIPTS is not set
     CONFIG_FRAME_WARN=2048
     # CONFIG_STRIP_ASM_SYMS is not set
     # CONFIG_READABLE_ASM is not set
     # CONFIG_HEADERS_INSTALL is not set
     # CONFIG_DEBUG_SECTION_MISMATCH is not set
     CONFIG_SECTION_MISMATCH_WARN_ONLY=y
     CONFIG_OBJTOOL=y
     # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
     # end of Compile-time checks and compiler options
     […]
     $ make -j100
     […]
       LD      .tmp_vmlinux1
       BTF     .tmp_vmlinux1.btf.o
     die__process: DW_TAG_compile_unit, DW_TAG_type_unit,
DW_TAG_partial_unit or DW_TAG_skeleton_unit expected got INVALID (0x0) @
115a4a9!
     error decoding cu
     pahole: .tmp_vmlinux1: Invalid argument
       NM      .tmp_vmlinux1.syms
       KSYMS   .tmp_vmlinux1.kallsyms.S
       AS      .tmp_vmlinux1.kallsyms.o
       LD      .tmp_vmlinux2
       NM      .tmp_vmlinux2.syms
       KSYMS   .tmp_vmlinux2.kallsyms.S
       AS      .tmp_vmlinux2.kallsyms.o
       LD      vmlinux
       BTFIDS  vmlinux
     libbpf: failed to find '.BTF' ELF section in vmlinux
     FAILED: load BTF from vmlinux: No data available
     make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 255
     make[2]: *** Deleting file 'vmlinux'
     make[1]: *** [/dev/shm/linux/Makefile:1179: vmlinux] Error 2
     make: *** [Makefile:224: __sub-make] Error 2

Help how to get a successful build is much appreciated.


I haven't been able to reproduce this one yet with your config;
I tried with bpf-next + gcc-14, then switched to linux stable 6.12y +
gcc 12 as that more closely matched your situation; all works fine for
me. I'll try more precisely matching the gcc 12 version; things worked
fine with pahole v.130 + gcc 12.2.1; from your config looks like you
have gcc 12.3.0.

I also tried gcc 14.1.0, and now Linux origin/master (e72e9e6933071 (Merge tag 'net-6.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net)) with gcc 12.3.0. We do build GCC ourselves [1]. Maybe there is something missing?

I built with `make V=1` now, and here are the commands:

```
$ make V=1
[…]
+ ld -m elf_x86_64 -z noexecstack --no-warn-rwx-segments -z max-page-size=0x200000 --build-id=sha1 --orphan-handling=warn --script=./arch/x86/kernel/vmlinux.lds -o .tmp_vmlinux1 --whole-archive vmlinux.o .vmlinux.export.o init/version-timestamp.o --no-whole-archive --start-group --end-group .tmp_vmlinux0.kallsyms.o
+ is_enabled CONFIG_DEBUG_INFO_BTF
+ grep -q '^CONFIG_DEBUG_INFO_BTF=y' include/config/auto.conf
+ gen_btf .tmp_vmlinux1
+ local btf_data=.tmp_vmlinux1.btf.o
+ info BTF .tmp_vmlinux1.btf.o
+ printf '  %-7s %s\n' BTF .tmp_vmlinux1.btf.o
  BTF     .tmp_vmlinux1.btf.o
+ LLVM_OBJCOPY=objcopy
+ pahole -J -j --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func,decl_tag_kfuncs --lang_exclude=rust .tmp_vmlinux1 die__process: DW_TAG_compile_unit, DW_TAG_type_unit, DW_TAG_partial_unit or DW_TAG_skeleton_unit expected got INVALID (0x0) @ 1229728!
error decoding cu
pahole: .tmp_vmlinux1: Invalid argument
[…]
```

I uploaded `.tmp_vmlinux1` (295 MB) [3].

Copying this file to a Debian sid/unstable system with *pahole* 1.30-1, and *llvm-19* 1:19.1.7-3, there is no error.

    $ ls -l /usr/bin/llvm-objcopy
lrwxrwxrwx 1 root root 31 Nov 11 12:42 /usr/bin/llvm-objcopy -> ../lib/llvm-19/bin/llvm-objcopy
    $ llvm-objcopy --version
    llvm-objcopy, compatible with GNU objcopy
    Debian LLVM version 19.1.7
      Optimized build.

In the problematic environment, we have LLVM 18.1.8 installed:

    $ llvm-objcopy --version
    llvm-objcopy, compatible with GNU objcopy
    LLVM (http://llvm.org/):
      LLVM version 18.1.8
      Optimized build.


Kind regards,

Paul


[1]: https://github.molgen.mpg.de/mariux64/bee-files/blob/8cd1999f62d2865372c0240e5a62f7f0099fa615/gcc.be0#L28 [2]: https://github.molgen.mpg.de/mariux64/pkg-scripts/blob/2c229b222d0ba0794e24e51223aa4768e30884e2/gcc-14.1.0-0.build.sh#L49
[3]: https://owww.molgen.mpg.de/~pmenzel/.tmp_vmlinux1

PS: Using pahole 1.23 I get:

     $ make -j100
     […]
       LD      .tmp_vmlinux1
       BTF     .tmp_vmlinux1.btf.o
     pahole: Multithreading requires elfutils >= 0.178. Continuing with a single thread...
     Unsupported DW_TAG_unspecified_type(0x3b)
     Encountered error while encoding BTF.
       NM      .tmp_vmlinux1.syms
       KSYMS   .tmp_vmlinux1.kallsyms.S
       AS      .tmp_vmlinux1.kallsyms.o
       LD      .tmp_vmlinux2
       NM      .tmp_vmlinux2.syms
       KSYMS   .tmp_vmlinux2.kallsyms.S
       AS      .tmp_vmlinux2.kallsyms.o
       LD      vmlinux
       BTFIDS  vmlinux
     libbpf: failed to find '.BTF' ELF section in vmlinux
     FAILED: load BTF from vmlinux: No data available
     make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 255
     make[2]: *** Deleting file 'vmlinux'
     make[1]: *** [/dev/shm/linux/Makefile:1179: vmlinux] Error 2
     make: *** [Makefile:224: __sub-make] Error 2




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux