From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10147 invoked by alias); 2 Dec 2013 03:30:58 -0000 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 Received: (qmail 10136 invoked by uid 89); 2 Dec 2013 03:30:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_40,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: rock.gnat.com Received: from Unknown (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Mon, 02 Dec 2013 03:30:56 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id AA582116144; Sun, 1 Dec 2013 22:31:25 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id g-johLzJiTEI; Sun, 1 Dec 2013 22:31:25 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 453EC116137; Sun, 1 Dec 2013 22:31:25 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id F20C8E141B; Mon, 2 Dec 2013 07:30:43 +0400 (RET) Date: Mon, 02 Dec 2013 03:30:00 -0000 From: Joel Brobecker To: Pierre Muller Cc: gdb-patches@sourceware.org Subject: Re: [RFA] Fix PR 16201: internal error on a cygwin program linked against a DLL with no .data section Message-ID: <20131202033043.GP3114@adacore.com> References: <007101ceebd1$3d2bb590$b78320b0$@muller@ics-cnrs.unistra.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <007101ceebd1$3d2bb590$b78320b0$@muller@ics-cnrs.unistra.fr> User-Agent: Mutt/1.5.21 (2010-09-15) X-SW-Source: 2013-12/txt/msg00008.txt.bz2 > See discussion in > https://sourceware.org/bugzilla/show_bug.cgi?id=16201 > > The patch below seems to fix the issues as it avoids calling > prim_record_minimal_symbol > with ms_type argument being equal to mst_XXX (where XXX can be text, data or > bss) > without having set sect_index_XXX field of the corresponding objfile. > > Is this OK? > > Pierre Muller > > > 2013-11-27 Pierre Muller > > PR 16201 > coff-pe-read.c (read_pe_exported_syms): Set sect_index_text, > sect_index_data and sect_index_bss of objfile struct, even if > there is no canonical '.text', '.data' or '.bss' named section. I am unsure about this patch, at the moment. But is it a regression, and if yes, should be listed as a must-have for 7.7? If yes again, let's have it added to the release wiki page: https://sourceware.org/gdb/wiki/GDB_7.7_Release Thank you! > diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c > index 91ee3f6..954c457 100644 > --- a/gdb/coff-pe-read.c > +++ b/gdb/coff-pe-read.c > @@ -466,6 +466,13 @@ read_pe_exported_syms (struct objfile *objfile) > { > section_data[sectix].rva_start = vaddr; > section_data[sectix].rva_end = vaddr + vsize; > + /* Force sect_index, even if it was already set before. */ > + if (sectix == PE_SECTION_INDEX_TEXT) > + objfile->sect_index_text = sectix; > + if (sectix == PE_SECTION_INDEX_DATA) > + objfile->sect_index_data = sectix; > + if (sectix == PE_SECTION_INDEX_BSS) > + objfile->sect_index_bss = sectix; > } > else > { > @@ -480,11 +487,23 @@ read_pe_exported_syms (struct objfile *objfile) > section_data[otherix].rva_end = vaddr + vsize; > section_data[otherix].vma_offset = 0; > if (characteristics & IMAGE_SCN_CNT_CODE) > - section_data[otherix].ms_type = mst_text; > + { > + section_data[otherix].ms_type = mst_text; > + if (objfile->sect_index_text == -1) > + objfile->sect_index_text = otherix; > + } > else if (characteristics & IMAGE_SCN_CNT_INITIALIZED_DATA) > - section_data[otherix].ms_type = mst_data; > + { > + section_data[otherix].ms_type = mst_data; > + if (objfile->sect_index_data == -1) > + objfile->sect_index_data = otherix; > + } > else if (characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA) > - section_data[otherix].ms_type = mst_bss; > + { > + section_data[otherix].ms_type = mst_bss; > + if (objfile->sect_index_bss == -1) > + objfile->sect_index_bss = otherix; > + } > else > section_data[otherix].ms_type = mst_unknown; > otherix++; -- Joel