This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 3/4] aix: add support for dwarf2.
- From: Tristan Gingold <gingold at adacore dot com>
- To: gdb-patches at sourceware dot org
- Cc: Tristan Gingold <gingold at adacore dot com>
- Date: Mon, 23 May 2011 12:29:03 +0200
- Subject: [PATCH 3/4] aix: add support for dwarf2.
- References: <1306146544-3925-1-git-send-email-gingold@adacore.com>
This patch simply adds support for dwarf2 to AIX. This is a matter of calling
the dwarf2 reader with the xcoff dwarf2 section names.
gdb/
2011-05-23 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.
---
gdb/xcoffread.c | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 23decae..bf3a9ec 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,9 @@ return_after_cleanup:
static void
aix_process_linenos (void)
{
+ 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 +1929,8 @@ xcoff_symfile_finish (struct objfile *objfile)
inclTable = NULL;
}
inclIndx = inclLength = inclDepth = 0;
+
+ dwarf2_free_objfile (objfile);
}
@@ -3022,6 +3043,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);
}
--
1.7.3.GIT