From: Kevin Buettner Date: Sat, 25 Aug 2018 05:22:46 +0000 (-0700) Subject: Relocate block range start and end addresses X-Git-Tag: gdb-8.2-release~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cb0f34520d4e4ad233696a293d69c979418f3ccd;p=thirdparty%2Fbinutils-gdb.git Relocate block range start and end addresses gdb/ChangeLog: * objfiles.c (objfile_relocate1): Relocate start and end addresses for each range in a block. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f592b3a96b3..71e4aa57e25 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -54,6 +54,8 @@ 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-24 Pedro Alves Simon Marchi diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 95c39cf4a95..7e4e5d32a7e 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)