diff options
author | Tom de Vries <tdevries@suse.de> | 2021-09-15 15:53:18 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-09-15 15:53:18 +0200 |
commit | f677852bbdaeac38c7d8ef859905879a21d5bb71 (patch) | |
tree | 9a4a66677ed20586e4f18c98af615e4f97df79cc /gdb/objfiles.c | |
parent | 720f6ee0959d9b493051d63f75d0d609d3d392ad (diff) | |
download | binutils-f677852bbdaeac38c7d8ef859905879a21d5bb71.zip binutils-f677852bbdaeac38c7d8ef859905879a21d5bb71.tar.gz binutils-f677852bbdaeac38c7d8ef859905879a21d5bb71.tar.bz2 |
[gdb/testsuite] Use function_range in gdb.dwarf2/dw2-abs-hi-pc.exp
When I run test-case gdb.dwarf2/dw2-abs-hi-pc.exp with gcc, we have:
...
(gdb) break hello^M
Breakpoint 1 at 0x4004c0: file dw2-abs-hi-pc-hello.c, line 24.^M
(gdb) PASS: gdb.dwarf2/dw2-abs-hi-pc.exp: break hello
...
but with clang, I run into:
...
(gdb) break hello^M
Breakpoint 1 at 0x4004e4^M
(gdb) FAIL: gdb.dwarf2/dw2-abs-hi-pc.exp: break hello
...
The problem is that the CU and function both have an empty address range:
...
<0><d2>: Abbrev Number: 1 (DW_TAG_compile_unit)
<108> DW_AT_name : dw2-abs-hi-pc-hello.c
<123> DW_AT_low_pc : 0x4004e0
<127> DW_AT_high_pc : 0x4004e0
<1><12f>: Abbrev Number: 2 (DW_TAG_subprogram)
<131> DW_AT_name : hello
<13a> DW_AT_low_pc : 0x4004e0
<13e> DW_AT_high_pc : 0x4004e0
...
The address ranges are set like this in dw2-abs-hi-pc-hello-dbg.S:
...
.4byte .hello_start /* DW_AT_low_pc */
.4byte .hello_end /* DW_AT_high_pc */
...
where the labels refer to dw2-abs-hi-pc-hello.c:
...
extern int v;
asm (".hello_start: .globl .hello_start\n");
void
hello (void)
{
asm (".hello0: .globl .hello0\n");
v++;
asm (".hello1: .globl .hello1\n");
}
asm (".hello_end: .globl .hello_end\n");
...
Using asm labels in global scope is a known source of problems, as explained
in the comment of proc function_range in gdb/testsuite/lib/dwarf.exp.
Fix this by using function_range instead.
Tested on x86_64-linux with gcc and clang-7 and clang-12.
Diffstat (limited to 'gdb/objfiles.c')
0 files changed, 0 insertions, 0 deletions