summaryrefslogtreecommitdiff
path: root/bfd/coff-rs6000.c
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-09-30 10:39:44 +0000
committerTristan Gingold <gingold@adacore.com>2011-09-30 10:39:44 +0000
commitd4c7550ada04e6e12b9e0411eb9137d583417819 (patch)
tree9c5aa23f8a5e83c5986131179e5a23bdec66fc9f /bfd/coff-rs6000.c
parent21ef7ad65d65f714462485cebfe173d7965522e6 (diff)
downloadbinutils-redhat-d4c7550ada04e6e12b9e0411eb9137d583417819.tar.gz
2011-09-30 Tristan Gingold <gingold@adacore.com>
* dwarf2.c (struct dwarf2_debug): Add field debug_sections. (read_section): Add sec argument. Adjust the code to get section names from it. (read_indirect_string): Adjust call to read_section. (read_abbrevs): Ditto. (decode_line_info): Ditto. (read_debug_ranges): Ditto. (DWARF2_DEBUG_INFO, DWARF2_COMPRESSED_DEBUG_INFO): Remove. (find_debug_info): Add debug_sections parameter. Use it instead the above macros. (place_sections): Get section names from stash. (find_line): Add debug_sections argument. Initialize debug_sections field of stash from it. Adjust calls to find_debug_info. (_bfd_dwarf2_find_nearest_line): Add debug_sections argument. Adjust call to find_line. (_bfd_dwarf2_find_line): Adjust call to find_line. * libcoff-in.h (struct dwarf_debug_section): New declaration. (coff_find_nearest_line_with_names): Likewise. * libcoff.h: Regenerate. * libbfd-in.h (struct dwarf_debug_section): Move declaration. (dwarf_debug_sections): Likewise. (_bfd_dwarf2_find_nearest_line): Add debug_sections argument. * libbfd.h: Regenerate. * elf.c (_bfd_elf_find_nearest_line): Adjust call to _bfd_dwarf2_find_nearest_line. * elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Ditto. * elf64-alpha.c (elf64_alpha_find_nearest_line): Ditto. * elf32-arm.c (elf32_arm_find_nearest_line): Ditto. * coffgen.c (coff_find_nearest_line_with_names): New function. (coff_find_nearest_line): Calls coff_find_nearest_line_with_names. * coff-rs6000.c (xcoff_debug_sections): New constant. (xcoff_find_nearest_line): New function. (rs6000coff_vec): Use xcoff_find_nearest_line. (pmac_xcoff_vec): Ditto.
Diffstat (limited to 'bfd/coff-rs6000.c')
-rw-r--r--bfd/coff-rs6000.c48
1 files changed, 46 insertions, 2 deletions
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 5d9b5aeb53..ffa7a654fe 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -405,6 +405,50 @@ _bfd_xcoff_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
{
return FALSE;
}
+
+static const struct dwarf_debug_section xcoff_debug_sections[] =
+{
+ { ".dwabrev", NULL },
+ { ".dwarnge", NULL },
+ { NULL, NULL }, /* .debug_frame */
+ { ".dwinfo", NULL },
+ { ".dwline", NULL },
+ { NULL, NULL }, /* .debug_loc */
+ { NULL, NULL }, /* .debug_macinfo */
+ { NULL, NULL }, /* .debug_macro */
+ { ".dwpbnms", NULL },
+ { ".dwpbtyp", NULL },
+ { ".dwrnges", NULL },
+ { NULL, NULL }, /* .debug_static_func */
+ { NULL, NULL }, /* .debug_static_vars */
+ { ".dwstr", NULL },
+ { NULL, NULL }, /* .debug_types */
+ /* GNU DWARF 1 extensions */
+ { NULL, NULL }, /* .debug_sfnames */
+ { NULL, NULL }, /* .debug_srcinfo */
+ /* SGI/MIPS DWARF 2 extensions */
+ { NULL, NULL }, /* .debug_funcnames */
+ { NULL, NULL }, /* .debug_typenames */
+ { NULL, NULL }, /* .debug_varnames */
+ { NULL, NULL }, /* .debug_weaknames */
+ { NULL, NULL },
+};
+
+static bfd_boolean
+xcoff_find_nearest_line (bfd *abfd,
+ asection *section,
+ asymbol **symbols,
+ bfd_vma offset,
+ const char **filename_ptr,
+ const char **functionname_ptr,
+ unsigned int *line_ptr)
+{
+ return coff_find_nearest_line_with_names (abfd, xcoff_debug_sections,
+ section, symbols, offset,
+ filename_ptr, functionname_ptr,
+ line_ptr);
+}
+
void
_bfd_xcoff_swap_sym_in (bfd *abfd, PTR ext1, PTR in1)
@@ -4073,7 +4117,7 @@ const bfd_target rs6000coff_vec =
_bfd_xcoff_is_local_label_name,
coff_bfd_is_target_special_symbol,
coff_get_lineno,
- coff_find_nearest_line,
+ xcoff_find_nearest_line,
_bfd_generic_find_line,
coff_find_inliner_info,
coff_bfd_make_debug_symbol,
@@ -4328,7 +4372,7 @@ const bfd_target pmac_xcoff_vec =
_bfd_xcoff_is_local_label_name,
coff_bfd_is_target_special_symbol,
coff_get_lineno,
- coff_find_nearest_line,
+ xcoff_find_nearest_line,
_bfd_generic_find_line,
coff_find_inliner_info,
coff_bfd_make_debug_symbol,