aboutsummaryrefslogtreecommitdiff
path: root/bfd/dwarf2.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-08-14 11:26:48 +0930
committerAlan Modra <amodra@gmail.com>2019-08-14 11:26:48 +0930
commitc327a44f38ad5ab0dfd8da5184c4c030798ef323 (patch)
tree7c33545dc1113a446c83af3a790428b422881b57 /bfd/dwarf2.c
parent9defd221fe3ecffabc90eadd077326b27e898a2b (diff)
downloadgdb-c327a44f38ad5ab0dfd8da5184c4c030798ef323.zip
gdb-c327a44f38ad5ab0dfd8da5184c4c030798ef323.tar.gz
gdb-c327a44f38ad5ab0dfd8da5184c4c030798ef323.tar.bz2
Use comp_unit_maybe_decode_line_info in more places
* dwarf2.c (comp_unit_maybe_decode_line_info): Declare. (comp_unit_find_nearest_line): Use it here.. (_bfd_dwarf2_find_symbol_bias): ..and here.
Diffstat (limited to 'bfd/dwarf2.c')
-rw-r--r--bfd/dwarf2.c37
1 files changed, 5 insertions, 32 deletions
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 9cbd81d..65bb1e4 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -2804,6 +2804,9 @@ lookup_symbol_in_variable_table (struct comp_unit *unit,
return FALSE;
}
+static bfd_boolean comp_unit_maybe_decode_line_info (struct comp_unit *,
+ struct dwarf2_debug *);
+
static bfd_boolean
find_abstract_instance (struct comp_unit * unit,
bfd_byte * orig_info_ptr,
@@ -3604,33 +3607,9 @@ comp_unit_find_nearest_line (struct comp_unit *unit,
{
bfd_boolean func_p;
- if (unit->error)
+ if (!comp_unit_maybe_decode_line_info (unit, stash))
return FALSE;
- if (! unit->line_table)
- {
- if (! unit->stmtlist)
- {
- unit->error = 1;
- return FALSE;
- }
-
- unit->line_table = decode_line_info (unit, stash);
-
- if (! unit->line_table)
- {
- unit->error = 1;
- return FALSE;
- }
-
- if (unit->first_child_die_ptr < unit->end_ptr
- && ! scan_unit_for_symbols (unit))
- {
- unit->error = 1;
- return FALSE;
- }
- }
-
*function_ptr = NULL;
func_p = lookup_address_in_function_table (unit, addr, function_ptr);
if (func_p && (*function_ptr)->tag == DW_TAG_inlined_subroutine)
@@ -4492,13 +4471,7 @@ _bfd_dwarf2_find_symbol_bias (asymbol ** symbols, void ** pinfo)
{
struct funcinfo * func;
- if (unit->function_table == NULL)
- {
- if (unit->line_table == NULL)
- unit->line_table = decode_line_info (unit, stash);
- if (unit->line_table != NULL)
- scan_unit_for_symbols (unit);
- }
+ comp_unit_maybe_decode_line_info (unit, stash);
for (func = unit->function_table; func != NULL; func = func->prev_func)
if (func->name && func->arange.low)