diff options
author | Tom Tromey <tromey@adacore.com> | 2021-11-19 10:12:44 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-03-28 13:31:22 -0600 |
commit | 48ac197b0c209ccf1f2de9704eb6cdf7c5c73a8e (patch) | |
tree | 9add73f002b76696ce8dc9eb1ea5eff3678c813d /gdb/ui-file.c | |
parent | a0e0ca7044f240c0b56a829ed762f5efd0854fc6 (diff) | |
download | binutils-48ac197b0c209ccf1f2de9704eb6cdf7c5c73a8e.zip binutils-48ac197b0c209ccf1f2de9704eb6cdf7c5c73a8e.tar.gz binutils-48ac197b0c209ccf1f2de9704eb6cdf7c5c73a8e.tar.bz2 |
Handle multiple addresses in call_site_target
A large customer program has a function that is partitioned into hot
and cold parts. A variable in a callee of this function is described
using DW_OP_GNU_entry_value, but gdb gets confused when trying to find
the caller. I tracked this down to dwarf2_get_pc_bounds interpreting
the function's changes so that the returned low PC is the "wrong"
function.
Intead, when processing DW_TAG_call_site, the low PC of each range in
DW_AT_ranges should be preserved in the call_site_target. This fixes
the variable lookup in the test case I have.
I didn't write a standalone test for this as it seemed excessively
complicated.
Diffstat (limited to 'gdb/ui-file.c')
0 files changed, 0 insertions, 0 deletions