bug-binutils
[Top][All Lists]
Advanced

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

[Bug binutils/30355] [DWARFv5] readelf: loc_offset XX too big


From: ndesaulniers at google dot com
Subject: [Bug binutils/30355] [DWARFv5] readelf: loc_offset XX too big
Date: Mon, 17 Apr 2023 16:50:55 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=30355

--- Comment #2 from Nick Desaulniers <ndesaulniers at google dot com> ---
$ eu-readelf --debug-dump=info vmlinux 1>/dev/null

produced no output to stderr, and the return code was 0.

What's the best way to strip out the debug info?

$ objcopy --only-keep-debug vmlinux vmlinux-debug
$ du -h vmlinux vmlinux-debug
34M     vmlinux
33M     vmlinux-debug

Looks like .text was retained. Hmm.

---

It looks like there's another utility called dwarfdump;
https://manpages.ubuntu.com/manpages/impish/man1/dwarfdump.1.html. It seems to
complain about loclists as well.

```
$ dwarfdump --check-loc vmlinux
*** DWARF CHECK: .debug_loc[lists]: Address outside a valid .text range: TAG
DW_TAG_formal_parameter with attribute DW_AT_location. ***
...
*** DWARF CHECK: .debug_loc[lists]: Address outside a valid .text range: TAG
DW_TAG_variable with attribute DW_AT_location. ***
...
*** TOTAL ERRORS FOR ALL COMPILERS ***

DWARF CHECK RESULT
<item>                    <checks>    <errors>
locations                    10374        4416
** Summarize **              12739        4416

There were 22 DWARF errors reported: see ERROR above.
$ dwarfdump --check-loc vmlinux 2>&1 | grep DWARF | sort -u
*** DWARF CHECK: .debug_loc[lists]: Address outside a valid .text range: TAG
DW_TAG_formal_parameter with attribute DW_AT_location. ***
*** DWARF CHECK: .debug_loc[lists]: Address outside a valid .text range: TAG
DW_TAG_variable with attribute DW_AT_location. ***
```

I do see many instances of the same low pc and high pc value.
$ dwarfdump --check-loc vmlinux 2>&1 | grep "Low PC = 0xffffffc009b001ec" | wc
-l
164

Inspecting this with llvm-dwardump, it looks like the DW_TAG_compile_unit,
DW_TAG_subprogram, and DW_TAG_formal_parameter all have the same value for
their lowest PC value. So that's probably the first pc value in the CU?  It
does have a loclist of 0x00000279.  Maybe these are red herrings though.

> readelf: Warning: loc_offset 78 too big

Using llvm-dwarfdump, I couldn't find any reference to 78 (or 0x0000004e).
Using dwarfdump, I see 0x0000004e all over the place, for many different types
of tags.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]