aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2018-08-23 16:00:50 -0700
committerKevin Buettner <kevinb@redhat.com>2018-08-23 16:23:06 -0700
commit9644dc3a478d9ae85f1ca327ab3fa5ac0ce9fe64 (patch)
tree2a6dc0955eb5f97258bb396645b99f200be32c09 /gdb
parent59adbf5d03f5d9380f9870e22262c59f5f9beec8 (diff)
downloadgdb-9644dc3a478d9ae85f1ca327ab3fa5ac0ce9fe64.zip
gdb-9644dc3a478d9ae85f1ca327ab3fa5ac0ce9fe64.tar.gz
gdb-9644dc3a478d9ae85f1ca327ab3fa5ac0ce9fe64.tar.bz2
Relocate block range start and end addresses
gdb/ChangeLog: * objfiles.c (objfile_relocate1): Relocate start and end addresses for each range in a block.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/objfiles.c8
2 files changed, 16 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 319c196..9da1125 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -49,6 +49,14 @@
* tracepoint.c (info_scope_command): Likewise.
* value.c (value_fn_field): Likewise.
+ * infrun.c (fill_in_stop_func): Use find_function_entry_range_from_pc
+ in place of find_pc_partial_function.
+ * blockframe.c (find_function_entry_range_from_pc): New function.
+ * symtab.h (find_function_entry_range_from_pc): Declare and document.
+ * objfiles.c (objfile_relocate1): Relocate start and end addresses
+ for each range in a block.
+
+
2018-08-23 Xavier Roirand <roirand@adacore.com>
* machoread.c (macho_symfile_read_all_oso): Remove uneeded
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index df28da5..4bffd20 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -831,6 +831,14 @@ objfile_relocate1 (struct objfile *objfile,
BLOCK_START (b) += ANOFFSET (delta, block_line_section);
BLOCK_END (b) += ANOFFSET (delta, block_line_section);
+ if (BLOCK_RANGES (b) != nullptr)
+ for (int j = 0; j < BLOCK_NRANGES (b); j++)
+ {
+ BLOCK_RANGE_START (b, j)
+ += ANOFFSET (delta, block_line_section);
+ BLOCK_RANGE_END (b, j) += ANOFFSET (delta, block_line_section);
+ }
+
/* We only want to iterate over the local symbols, not any
symbols in included symtabs. */
ALL_DICT_SYMBOLS (BLOCK_DICT (b), iter, sym)