summaryrefslogtreecommitdiff
path: root/gdb/xcoffread.c
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-06-07 12:31:03 +0000
committerTristan Gingold <gingold@adacore.com>2011-06-07 12:31:03 +0000
commit90ed58afe1256fbb9d8df73e90bb84c9c913f3f3 (patch)
treea55b5124c0517155dde27b632319077428de08a4 /gdb/xcoffread.c
parent23b1ca2a70632a3300117dbc82ef73db75f150e1 (diff)
downloadgdb-90ed58afe1256fbb9d8df73e90bb84c9c913f3f3.tar.gz
2011-06-07 Tristan Gingold <gingold@adacore.com>
* xcoffread.c (dwarf2_xcoff_names): New variable. (aix_process_linenos): Add a guard. (xcoff_symfile_finish): Free dwarf2. (xcoff_initial_scan): Add dwarf2 support.
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r--gdb/xcoffread.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 0967529e06a..0c4cbd15206 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -152,6 +152,22 @@ struct coff_symfile_info
CORE_ADDR toc_offset;
};
+/* XCOFF names for dwarf sections. There is no compressed sections. */
+
+static const struct dwarf2_debug_sections dwarf2_xcoff_names = {
+ { ".dwinfo", NULL },
+ { ".dwabrev", NULL },
+ { ".dwline", NULL },
+ { ".dwloc", NULL },
+ { NULL, NULL }, /* debug_macinfo */
+ { ".dwstr", NULL },
+ { ".dwrnges", NULL },
+ { NULL, NULL }, /* debug_types */
+ { ".dwframe", NULL },
+ { NULL, NULL }, /* eh_frame */
+ { NULL, NULL } /* gdb_index */
+};
+
static void
bf_notfound_complaint (void)
{
@@ -757,6 +773,10 @@ return_after_cleanup:
static void
aix_process_linenos (void)
{
+ /* There is no linenos to read if there are only dwarf info. */
+ if (this_symtab_psymtab == NULL)
+ return;
+
/* Process line numbers and enter them into line vector. */
process_linenos (last_source_start_addr, cur_src_end_addr);
}
@@ -1910,6 +1930,8 @@ xcoff_symfile_finish (struct objfile *objfile)
inclTable = NULL;
}
inclIndx = inclLength = inclDepth = 0;
+
+ dwarf2_free_objfile (objfile);
}
@@ -3022,6 +3044,13 @@ xcoff_initial_scan (struct objfile *objfile, int symfile_flags)
install_minimal_symbols (objfile);
+ /* DWARF2 sections. */
+
+ if (dwarf2_has_info (objfile, &dwarf2_xcoff_names))
+ dwarf2_build_psymtabs (objfile);
+
+ dwarf2_build_frame_info (objfile);
+
do_cleanups (back_to);
}