Re: ERROR: INT DW_ATE_unsigned_1 Error emitting BTF type

From: Arnaldo Carvalho de Melo
Date: Fri Feb 05 2021 - 18:02:31 EST


Em Fri, Feb 05, 2021 at 04:23:59PM +0100, Sedat Dilek escreveu:
> On Fri, Feb 5, 2021 at 3:41 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
> >
> > On Fri, Feb 5, 2021 at 3:37 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
> > >
> > > Hi,
> > >
> > > when building with pahole v1.20 and binutils v2.35.2 plus Clang
> > > v12.0.0-rc1 and DWARF-v5 I see:
> > > ...
> > > + info BTF .btf.vmlinux.bin.o
> > > + [ != silent_ ]
> > > + printf %-7s %s\n BTF .btf.vmlinux.bin.o
> > > BTF .btf.vmlinux.bin.o
> > > + LLVM_OBJCOPY=/opt/binutils/bin/objcopy /opt/pahole/bin/pahole -J
> > > .tmp_vmlinux.btf
> > > [115] INT DW_ATE_unsigned_1 Error emitting BTF type
> > > Encountered error while encoding BTF.
> >
> > Grepping the pahole sources:
> >
> > $ git grep DW_ATE
> > dwarf_loader.c: bt->is_bool = encoding == DW_ATE_boolean;
> > dwarf_loader.c: bt->is_signed = encoding == DW_ATE_signed;
> >
> > Missing DW_ATE_unsigned encoding?
> >
>
> Checked the LLVM sources:
>
> clang/lib/CodeGen/CGDebugInfo.cpp: Encoding =
> llvm::dwarf::DW_ATE_unsigned_char;
> clang/lib/CodeGen/CGDebugInfo.cpp: Encoding = llvm::dwarf::DW_ATE_unsigned;
> clang/lib/CodeGen/CGDebugInfo.cpp: Encoding =
> llvm::dwarf::DW_ATE_unsigned_fixed;
> clang/lib/CodeGen/CGDebugInfo.cpp:
> ? llvm::dwarf::DW_ATE_unsigned
> ...
> lld/test/wasm/debuginfo.test:CHECK-NEXT: DW_AT_encoding
> (DW_ATE_unsigned)
>
> So, I will switch from GNU ld.bfd v2.35.2 to LLD-12.

Thanks for the research, probably your conclusion is correct, can you go
the next step and add that part and check if the end result is the
expected one?

- Arnaldo