From dc3714f31f5b15f9c078dcf7ddaa705dacd313c0 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 10 Mar 2013 23:08:18 +0000 Subject: * gold.cc (queue_middle_tasks): Move detect_odr_violations.. * layout.cc (Layout_task_runner::run): ..to here. * symtab.h (struct Symbol_location): Extract from.. (class Symbol_table): ..here. * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location. * target.h (class Target): Add function_location and do_function_location functions. (class Sized_target): Add do_function_location. * object.h (class Sized_relobj_file): Move find_shdr.. (class Object): ..to here. * object.cc: Likewise. Update to suit. Instantiate. (Sized_relobj_file::find_eh_frame): Update find_shdr call. * powerpc.cc (class Powerpc_dynobj): New. (Target_powerpc::do_function_location): New function. (Powerpc_relobj::do_find_special_sections): Update find_shdr call. (Powerpc_dynobj::do_read_symbols): New function. (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj. --- gold/symtab.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gold/symtab.cc') diff --git a/gold/symtab.cc b/gold/symtab.cc index 8fadd1d..1fad11e 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -3175,9 +3175,11 @@ Symbol_table::linenos_from_loc(const Task* task, Task_lock_obj tl(task, loc.object); std::vector result; + Symbol_location code_loc = loc; + parameters->target().function_location(&code_loc); // 16 is the size of the object-cache that one_addr2line should use. std::string canonical_result = Dwarf_line_info::one_addr2line( - loc.object, loc.shndx, loc.offset, 16, &result); + code_loc.object, code_loc.shndx, code_loc.offset, 16, &result); if (!canonical_result.empty()) result.push_back(canonical_result); return result; -- cgit v1.1