Re: FYI: implement new DWARF macro proposal

Tom Tromey
2011-07-27T14:44:15Z

Tristan> Looks like you forgot to update the table for AIX.

Thanks.

I am checking in the appended. It adds this entry, and it also changes
dwarf2_debug_sections to make it less likely that future changes will
have the same problem. Now if you forget to add a name to an instance
of the struct, you will see an error from the compiler.

Tom

2011-07-27 Tom Tromey <tromey@redhat.com>

* xcoffread.c (dwarf2_xcoff_names): Add 'macro' and 'sentinel'
entries.
* symfile.h (struct dwarf2_debug_sections) <sentinel>: New field.
* dwarf2read.c (dwarf2_elf_names): Add sentinel entry.

diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 505f576..c009aac 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -271,7 +271,8 @@ static const struct dwarf2_debug_sections dwarf2_elf_names = {
{ ".debug_types", ".zdebug_types" },
{ ".debug_frame", ".zdebug_frame" },
{ ".eh_frame", NULL },
- { ".gdb_index", ".zgdb_index" }
+ { ".gdb_index", ".zgdb_index" },
+ 23
};

/* local data types */
diff --git a/gdb/symfile.h b/gdb/symfile.h
index eb5beaa..0e648d0 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -589,6 +589,9 @@ struct dwarf2_debug_sections {
struct dwarf2_section_names frame;
struct dwarf2_section_names eh_frame;
struct dwarf2_section_names gdb_index;
+ /* This field has no meaning, but exists solely to catch changes to
+ this structure which are not reflected in some instance. */
+ int sentinel;
};

extern int dwarf2_has_info (struct objfile *,
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 0c4cbd1..d7760ee 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -160,12 +160,14 @@ static const struct dwarf2_debug_sections dwarf2_xcoff_names = {
{ ".dwline", NULL },
{ ".dwloc", NULL },
{ NULL, NULL }, /* debug_macinfo */
+ { NULL, NULL }, /* debug_macro */
{ ".dwstr", NULL },
{ ".dwrnges", NULL },
{ NULL, NULL }, /* debug_types */
{ ".dwframe", NULL },
{ NULL, NULL }, /* eh_frame */
- { NULL, NULL } /* gdb_index */
+ { NULL, NULL }, /* gdb_index */
+ 23
};

static void