diff options
author | Tom de Vries <tdevries@suse.de> | 2020-09-03 12:30:10 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-09-03 12:30:10 +0200 |
commit | 8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee (patch) | |
tree | bc5dad38b60871dccc205aa07d9e929a73946c6d /gdb/testsuite | |
parent | 9184ef8a92371746d0f36580adf2ad6845f1ced3 (diff) | |
download | gdb-8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee.zip gdb-8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee.tar.gz gdb-8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee.tar.bz2 |
[gdb/breakpoint, PIE] Handle setting breakpoint on label without address
When adding:
...
if ![runto_main] then {
fail "can't run to main"
return 0
}
...
to test-case gdb.base/label-without-address.exp and running it with target
board unix/-fPIE/-pie, we run into:
...
(gdb) break main:L1^M
Breakpoint 2 at 0x555555554000: file label-without-address.c, line 22.^M
...
That is, for a label with optimized-out address, we set a breakpoint at the
relocation base.
The root cause is that the dwarf reader, despite finding that attribute
DW_AT_low_pc is missing, still tags the L1 symbol as having LOC_LABEL, which
means it has a valid address, which defaults to 0.
Fix this by instead tagging the L1 symbol with LOC_OPTIMIZED_OUT.
Tested on x86_64-linux.
gdb/ChangeLog:
2020-09-03 Tom de Vries <tdevries@suse.de>
PR breakpoint/26546
* dwarf2/read.c (new_symbol): Tag label symbol without DW_AT_low_pc as
LOC_OPTIMIZED_OUT instead of LOC_LABEL.
gdb/testsuite/ChangeLog:
2020-09-03 Tom de Vries <tdevries@suse.de>
PR breakpoint/26546
* gdb.base/label-without-address.exp: Runto main first.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/label-without-address.exp | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 63dcad7..8fd4e8c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-09-03 Tom de Vries <tdevries@suse.de> + + PR breakpoint/26546 + * gdb.base/label-without-address.exp: Runto main first. + 2020-09-02 Tom Tromey <tromey@adacore.com> * gdb.ada/mi_var_access.exp: Test children of access variable. diff --git a/gdb/testsuite/gdb.base/label-without-address.exp b/gdb/testsuite/gdb.base/label-without-address.exp index 0fcb1fd..c688149 100644 --- a/gdb/testsuite/gdb.base/label-without-address.exp +++ b/gdb/testsuite/gdb.base/label-without-address.exp @@ -19,6 +19,11 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { return -1 } +if ![runto_main] then { + fail "can't run to main" + return 0 +} + set supported 0 gdb_test_multiple "l main:L1" "" { -wrap -re "No label \"L1\" defined in function \"main\"\." { |