From 3017a003674a2cf413b3522a5875ce26fcd574c2 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 24 May 2011 12:40:17 +0000 Subject: [PATCH] 2011-05-24 Tristan Gingold * symfile.h (enum dwarf2_section_enum): New type. (dwarf2_get_section_info): New prototype. * dwarf2read.c (dwarf2_get_section_info): Replace parameter section_name by sect. Use a switch to select the info. * dwarf2-frame.c (warf2_get_section_info): Remove prototype. (dwarf2_build_frame_info): Adjust calls to dwarf2_get_section_info. --- gdb/ChangeLog | 9 +++++++++ gdb/dwarf2-frame.c | 10 ++-------- gdb/dwarf2read.c | 20 +++++++++++++------- gdb/symfile.h | 11 +++++++++++ 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 81714fb982..b51d4653ae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2011-05-24 Tristan Gingold + + * symfile.h (enum dwarf2_section_enum): New type. + (dwarf2_get_section_info): New prototype. + * dwarf2read.c (dwarf2_get_section_info): Replace parameter + section_name by sect. Use a switch to select the info. + * dwarf2-frame.c (warf2_get_section_info): Remove prototype. + (dwarf2_build_frame_info): Adjust calls to dwarf2_get_section_info. + 2011-05-24 Pedro Alves * solib-svr4.c (svr4_solib_create_inferior_hook): Skip setting diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index fe48713d24..5df3488047 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -2183,12 +2183,6 @@ Corrupt data in %s:%s; align 8 workaround apparently succeeded"), return ret; } - -/* Imported from dwarf2read.c. */ -extern void dwarf2_get_section_info (struct objfile *, const char *, - asection **, gdb_byte **, - bfd_size_type *); - static int qsort_fde_cmp (const void *a, const void *b) { @@ -2233,7 +2227,7 @@ dwarf2_build_frame_info (struct objfile *objfile) unit->dbase = 0; unit->tbase = 0; - dwarf2_get_section_info (objfile, ".eh_frame", + dwarf2_get_section_info (objfile, DWARF2_EH_FRAME, &unit->dwarf_frame_section, &unit->dwarf_frame_buffer, &unit->dwarf_frame_size); @@ -2269,7 +2263,7 @@ dwarf2_build_frame_info (struct objfile *objfile) } } - dwarf2_get_section_info (objfile, ".debug_frame", + dwarf2_get_section_info (objfile, DWARF2_DEBUG_FRAME, &unit->dwarf_frame_section, &unit->dwarf_frame_buffer, &unit->dwarf_frame_size); diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 65317d482c..2f4d1ae1b7 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1633,7 +1633,8 @@ dwarf2_section_size (struct objfile *objfile, SECTION_NAME. */ void -dwarf2_get_section_info (struct objfile *objfile, const char *section_name, +dwarf2_get_section_info (struct objfile *objfile, + enum dwarf2_section_enum sect, asection **sectp, gdb_byte **bufp, bfd_size_type *sizep) { @@ -1650,12 +1651,17 @@ dwarf2_get_section_info (struct objfile *objfile, const char *section_name, *sizep = 0; return; } - if (section_is_p (section_name, EH_FRAME_SECTION)) - info = &data->eh_frame; - else if (section_is_p (section_name, FRAME_SECTION)) - info = &data->frame; - else - gdb_assert_not_reached ("unexpected section"); + switch (sect) + { + case DWARF2_DEBUG_FRAME: + info = &data->frame; + break; + case DWARF2_EH_FRAME: + info = &data->eh_frame; + break; + default: + gdb_assert_not_reached ("unexpected section"); + } dwarf2_read_section (objfile, info); diff --git a/gdb/symfile.h b/gdb/symfile.h index 35444756fb..2b80ffd8dc 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -555,6 +555,17 @@ extern struct cleanup *increment_reading_symtab (void); extern int dwarf2_has_info (struct objfile *); +/* Dwarf2 sections that can be accessed by dwarf2_get_section_info. */ +enum dwarf2_section_enum { + DWARF2_DEBUG_FRAME, + DWARF2_EH_FRAME +}; + +extern void dwarf2_get_section_info (struct objfile *, + enum dwarf2_section_enum, + asection **, gdb_byte **, + bfd_size_type *); + extern int dwarf2_initialize_objfile (struct objfile *); extern void dwarf2_build_psymtabs (struct objfile *); extern void dwarf2_build_frame_info (struct objfile *); -- 2.34.1