From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26672 invoked by alias); 23 May 2011 10:29:37 -0000 Received: (qmail 26661 invoked by uid 22791); 23 May 2011 10:29:36 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,TW_BJ X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (194.98.77.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 23 May 2011 10:29:17 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 55E58CB0283; Mon, 23 May 2011 12:29:16 +0200 (CEST) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v87EaWxpmye7; Mon, 23 May 2011 12:29:13 +0200 (CEST) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) by mel.act-europe.fr (Postfix) with ESMTP id 48A26CB02E3; Mon, 23 May 2011 12:29:13 +0200 (CEST) Received: by ulanbator.act-europe.fr (Postfix, from userid 501) id 3836FFE0261; Mon, 23 May 2011 12:29:13 +0200 (CEST) From: Tristan Gingold To: gdb-patches@sourceware.org Cc: Tristan Gingold Subject: [PATCH 1/4] Really make dwarf2_get_section_info public. Date: Mon, 23 May 2011 10:29:00 -0000 Message-Id: <1306146544-3925-2-git-send-email-gingold@adacore.com> In-Reply-To: <1306146544-3925-1-git-send-email-gingold@adacore.com> References: <1306146544-3925-1-git-send-email-gingold@adacore.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-05/txt/msg00513.txt.bz2 This patch is a preliminary clean-up. Instead of using the section name to get the section info, use an enum literal. It might be worth going farther and using an array of dwarf2_section_info in dwarf2_per_objfile (instead of record fields). I let this decision to maintainers. gdb/ 2011-05-23 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/dwarf2-frame.c | 10 ++-------- gdb/dwarf2read.c | 20 +++++++++++++------- gdb/symfile.h | 11 +++++++++++ 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index fe48713..9c329f9 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 6558bfe..2003c46 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1636,7 +1636,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) { @@ -1653,12 +1654,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 3544475..83e807c 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 *); -- 1.7.3.GIT