[PATCH] tests: run-low_high_pc.sh: drop redundant 'lx' suffix

2022-08-06 Thread Sergei Trofimovich via Elfutils-devel
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)

2022-08-06 Thread Sergei Trofimovich via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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

2022-08-06 Thread slyich at gmail dot com via Elfutils-devel
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.