[PATCH] tests: run-low_high_pc.sh: drop redundant 'lx' suffix
Noticed when debugged test failure: lowpc: 8049000, highpc: 8049000lx ../sysdeps/i386/crti.S: [2def] '_init' highpc <= lowpc Signed-off-by: Sergei Trofimovich --- tests/ChangeLog | 4 tests/low_high_pc.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 0c6f68ef..d2952cc9 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2022-08-04 Sergei Trofimovich + + * low_high_pc.c (handle_die): Drop redundant 'lx' suffix. + 2022-08-01 Mark Wielaard * run-debuginfod-percent-escape.sh: Add initial scan wait_ready. diff --git a/tests/low_high_pc.c b/tests/low_high_pc.c index 78b6ad08..cd022b1c 100644 --- a/tests/low_high_pc.c +++ b/tests/low_high_pc.c @@ -72,7 +72,7 @@ handle_die (Dwarf_Die *die, void *arg) && highpc <= lowpc && ! (dwarf_tag (die) == DW_TAG_compile_unit && highpc == lowpc)) { - printf("lowpc: %" PRIx64 ", highpc: %" PRIx64 "lx\n", lowpc, highpc); + printf("lowpc: %" PRIx64 ", highpc: %" PRIx64 "\n", lowpc, highpc); fail (off, name, "highpc <= lowpc"); } -- 2.37.1
[PATCH] tests: do not fail on zero sized DIEs (binutils-2.39 compatible)
binutils started producing 0-sized DIEs on functions interspersed by nested sections (".section ...; .previous). This led to run-low_high_pc.sh failure in form of: FAIL: run-low_high_pc.sh [b] main.c [2d] main [b] ../sysdeps/i386/start.S [26] _start [40] ../sysdeps/x86/abi-note.c [b52] init.c [b8e] static-reloc.c [2dba] _dl_relocate_static_pie [2dd8] ../sysdeps/i386/crti.S [2def] _init lowpc: 8049000, highpc: 8049000lx ../sysdeps/i386/crti.S: [2def] '_init' highpc <= lowpc FAIL run-low_high_pc.sh (exit status: 255) To work it around let's allow lowpc == highpc special case. https://sourceware.org/bugzilla/show_bug.cgi?id=29450 Signed-off-by: Sergei Trofimovich --- tests/ChangeLog | 4 tests/low_high_pc.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/tests/ChangeLog b/tests/ChangeLog index 0c6f68ef..8296e0b6 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2022-08-04 Sergei Trofimovich + + * low_high_pc.c (handle_die): Allow zero sized DIEs for binutils-2.39. + 2022-08-01 Mark Wielaard * run-debuginfod-percent-escape.sh: Add initial scan wait_ready. diff --git a/tests/low_high_pc.c b/tests/low_high_pc.c index cd022b1c..80c83b6d 100644 --- a/tests/low_high_pc.c +++ b/tests/low_high_pc.c @@ -70,6 +70,9 @@ handle_die (Dwarf_Die *die, void *arg) if (dwarf_hasattr (die, DW_AT_low_pc) && dwarf_hasattr (die, DW_AT_high_pc) && highpc <= lowpc + /* gas-2.39 produces zero sized DIEs sometimes: + https://sourceware.org/PR29451. */ + && highpc != lowpc && ! (dwarf_tag (die) == DW_TAG_compile_unit && highpc == lowpc)) { printf("lowpc: %" PRIx64 ", highpc: %" PRIx64 "\n", lowpc, highpc); -- 2.37.1
[Bug libdw/29450] run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 Sergei Trofimovich changed: What|Removed |Added See Also||https://sourceware.org/bugz ||illa/show_bug.cgi?id=29451 -- You are receiving this mail because: You are on the CC list for the bug.
[Bug libdw/29450] run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 --- Comment #4 from Sergei Trofimovich --- Filed https://sourceware.org/PR29451 against gas. -- You are receiving this mail because: You are on the CC list for the bug.
[Bug libdw/29450] run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 --- Comment #3 from Sergei Trofimovich --- gas-2.39 started adding 0-sized DIE for function without a .size marking: $ cat crti.S.S .section .init,"ax",@progbits .p2align 2 .globl _init .hidden _init .type _init, @function _init: .section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat .globl __x86.get_pc_thunk.bx .hidden __x86.get_pc_thunk.bx .p2align 4 .type __x86.get_pc_thunk.bx,@function __x86.get_pc_thunk.bx: ud2 .size __x86.get_pc_thunk.bx, . - __x86.get_pc_thunk.bx .previous ud2 $ as-2.39 --gdwarf2 --32 -o crti.o crti.S.S $ readelf -aW --debug-dump crti.o <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_stmt_list : (data4) 0x0 <10> DW_AT_ranges : (data4) 0x0 <14> DW_AT_name: (strp) (offset: 0x0): crti.S.S <18> DW_AT_comp_dir: (strp) (offset: 0x9): /home/slyfox/dev/bugs/binutils-2.39-crti-size/delta <1c> DW_AT_producer: (strp) (offset: 0x3d): GNU AS 2.39 <20> DW_AT_language: (data2) 32769(MIPS assembler) <1><22>: Abbrev Number: 2 (DW_TAG_subprogram) <23> DW_AT_name: (strp) (offset: 0x49): _init <27> DW_AT_external: (flag) 1 <28> DW_AT_low_pc : (addr) 0x0 <2c> DW_AT_high_pc : (addr) 0x0 <1><30>: Abbrev Number: 2 (DW_TAG_subprogram) <31> DW_AT_name: (strp) (offset: 0x4f): __x86.get_pc_thunk.bx <35> DW_AT_external: (flag) 1 <36> DW_AT_low_pc : (addr) 0x0 <3a> DW_AT_high_pc : (addr) 0x2 <1><3e>: Abbrev Number: 0 $ as-2.38 --gdwarf2 --32 -o crti.o crti.S.S $ readelf -aW --debug-dump crti.o <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_stmt_list : (data4) 0x0 <10> DW_AT_ranges : (data4) 0x0 <14> DW_AT_name: (strp) (offset: 0x0): crti.S.S <18> DW_AT_comp_dir: (strp) (offset: 0x9): /home/slyfox/dev/bugs/binutils-2.39-crti-size/delta <1c> DW_AT_producer: (strp) (offset: 0x3d): GNU AS 2.38 <20> DW_AT_language: (data2) 32769(MIPS assembler) Not sure if it's a discrepancy in binutils. -- You are receiving this mail because: You are on the CC list for the bug.
[Bug libdw/29450] run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 --- Comment #2 from Sergei Trofimovich --- Could it be that it's a mild `crti.o` corruption by new binutils? "MIPS assembler" does not sound right. ``` $ readelf -aW crti.o --debug-dump ... Contents of the .debug_info section: Compilation Unit @ offset 0x0: Length:0x49 (32-bit) Version: 2 Abbrev Offset: 0x0 Pointer Size: 4 <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_stmt_list : (data4) 0x0 <10> DW_AT_ranges : (data4) 0x0 <14> DW_AT_name: (strp) (offset: 0x0): ../sysdeps/i386/crti.S <18> DW_AT_comp_dir: (strp) (offset: 0x17): /build/glibc-2.35/csu <1c> DW_AT_producer: (strp) (offset: 0x2d): GNU AS 2.39 <20> DW_AT_language: (data2) 32769(MIPS assembler) <1><22>: Abbrev Number: 2 (DW_TAG_subprogram) <23> DW_AT_name: (strp) (offset: 0x39): _init <27> DW_AT_external: (flag) 1 <28> DW_AT_low_pc : (addr) 0x0 <2c> DW_AT_high_pc : (addr) 0x0 <1><30>: Abbrev Number: 2 (DW_TAG_subprogram) <31> DW_AT_name: (strp) (offset: 0x3f): __x86.get_pc_thunk.bx <35> DW_AT_external: (flag) 1 <36> DW_AT_low_pc : (addr) 0x0 <3a> DW_AT_high_pc : (addr) 0x4 <1><3e>: Abbrev Number: 2 (DW_TAG_subprogram) <3f> DW_AT_name: (strp) (offset: 0x55): _fini <43> DW_AT_external: (flag) 1 <44> DW_AT_low_pc : (addr) 0x0 <48> DW_AT_high_pc : (addr) 0x0 <1><4c>: Abbrev Number: 0 ... ``` -- You are receiving this mail because: You are on the CC list for the bug.
[Bug libdw/29450] run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 --- Comment #1 from Sergei Trofimovich --- Created attachment 14257 --> https://sourceware.org/bugzilla/attachment.cgi?id=14257=edit low_high_pc Attaching the binary itself. It was a failing selftest: $ LD_LIBRARY_PATH=$PWD/libdw:$PWD/libelf tests/low_high_pc -e tests/low_high_pc [b] ../sysdeps/i386/start.S [26] _start [40] ../sysdeps/x86/abi-note.c [b52] init.c [b8e] static-reloc.c [2dba] _dl_relocate_static_pie [2dd8] ../sysdeps/i386/crti.S [2def] _init lowpc: 8049000, highpc: 8049000 ../sysdeps/i386/crti.S: [2def] '_init' highpc <= lowpc gdb somehow knows the size of the _init: $ gdb /tmp/low_high_pc Reading symbols from /tmp/low_high_pc... (gdb) disassemble _init Dump of assembler code for function _init: 0x08049000 <+0>: endbr32 0x08049004 <+4>: push %ebx 0x08049005 <+5>: sub$0x8,%esp 0x08049008 <+8>: call 0x8049400 <__x86.get_pc_thunk.bx> 0x0804900d <+13>:add$0x2f93,%ebx 0x08049013 <+19>:mov0x5c(%ebx),%eax 0x08049019 <+25>:test %eax,%eax 0x0804901b <+27>:je 0x804901f <_init+31> 0x0804901d <+29>:call *%eax 0x0804901f <+31>:add$0x8,%esp 0x08049022 <+34>:pop%ebx 0x08049023 <+35>:ret End of assembler dump. -- You are receiving this mail because: You are on the CC list for the bug.
[Bug libdw/29450] New: run-low_high_pc.sh fails on i386 against binutils-2.39
https://sourceware.org/bugzilla/show_bug.cgi?id=29450 Bug ID: 29450 Summary: run-low_high_pc.sh fails on i386 against binutils-2.39 Product: elfutils Version: unspecified Status: UNCONFIRMED Severity: normal Priority: P2 Component: libdw Assignee: unassigned at sourceware dot org Reporter: slyich at gmail dot com CC: elfutils-devel at sourceware dot org Target Milestone: --- binutils-2.39 is out: https://sourceware.org/pipermail/binutils/2022-August/122246.html I tried to package it in nixpkgs and found a few build or test failures. elfutils-0.187 and elfutils from git both fail run-low_high_pc.sh as: FAIL: run-low_high_pc.sh [b] main.c [2d] main [b] ../sysdeps/i386/start.S [26] _start [40] ../sysdeps/x86/abi-note.c [b52] init.c [b8e] static-reloc.c [2dba] _dl_relocate_static_pie [2dd8] ../sysdeps/i386/crti.S [2def] _init lowpc: 8049000, highpc: 8049000lx ../sysdeps/i386/crti.S: [2def] '_init' highpc <= lowpc FAIL run-low_high_pc.sh (exit status: 255) Extra `lx` prefix looks minor. lowpc == highpc looks real. gdb somehow manages to detect the PC range for _init. Not sure which of tested files is that. -- You are receiving this mail because: You are on the CC list for the bug.