[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.