aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-09-03 12:30:10 +0200
committerTom de Vries <tdevries@suse.de>2020-09-03 12:30:10 +0200
commit8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee (patch)
treebc5dad38b60871dccc205aa07d9e929a73946c6d /bfd
parent9184ef8a92371746d0f36580adf2ad6845f1ced3 (diff)
downloadbinutils-8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee.zip
binutils-8f5c6526ebbd8b5749dd2f348796b53f3e2b25ee.tar.gz
binutils-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 'bfd')
0 files changed, 0 insertions, 0 deletions