From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21221 invoked by alias); 2 Oct 2003 20:07:12 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 21214 invoked from network); 2 Oct 2003 20:07:11 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 2 Oct 2003 20:07:11 -0000 Received: from int-mx2.corp.redhat.com (nat-pool-rdu-dmz.redhat.com [172.16.52.200] (may be forged)) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id h92K72101290 for ; Thu, 2 Oct 2003 16:07:02 -0400 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h92K71D11840 for ; Thu, 2 Oct 2003 16:07:01 -0400 Received: from cygbert.vinschen.de (vpn50-5.rdu.redhat.com [172.16.50.5]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id h92K6sw01054 for ; Thu, 2 Oct 2003 13:06:54 -0700 Received: by cygbert.vinschen.de (Postfix, from userid 500) id 7538558322; Thu, 2 Oct 2003 22:06:52 +0200 (CEST) Date: Thu, 02 Oct 2003 20:07:00 -0000 From: Corinna Vinschen To: gdb-patches@sources.redhat.com Subject: [RFA] dwarf2-frame.c: Support DW_EH_PE_textrel encoding Message-ID: <20031002200652.GX11435@cygbert.vinschen.de> Reply-To: gdb-patches@sources.redhat.com Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i X-SW-Source: 2003-10/txt/msg00037.txt.bz2 Hi, I'm not sure if the patch is actually 100% correct but I think it's not far from that. For a few weeks now, gcc emits the DW_EH_PE_textrel encoding for sh and (AFAICS) ia64. This encoding type is unsupported in gdb so far. The below patch tries to accomodate this encoding. Is the patch ok as it is? On sh, the testcases failing with a gcc emitting this encoding run through with the below patch and the overall FAIL count is the same as before. Corinna * dwarf2-frame.c (struct comp_unit): Add tbase member to store base for DW_EH_PE_textrel encodings. (read_encoded_value): Add a DW_EH_PE_textrel case. (dwarf2_build_frame_info): Set unit.tbase to beginning of text section. Index: dwarf2-frame.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v retrieving revision 1.14 diff -u -p -r1.14 dwarf2-frame.c --- dwarf2-frame.c 9 Sep 2003 03:31:07 -0000 1.14 +++ dwarf2-frame.c 2 Oct 2003 19:56:24 -0000 @@ -885,6 +885,9 @@ struct comp_unit /* Base for DW_EH_PE_datarel encodings. */ bfd_vma dbase; + + /* Base for DW_EH_PE_textrel encodings. */ + bfd_vma tbase; }; const struct objfile_data *dwarf2_frame_data; @@ -1063,6 +1066,9 @@ read_encoded_value (struct comp_unit *un case DW_EH_PE_datarel: base = unit->dbase; break; + case DW_EH_PE_textrel: + base = unit->tbase; + break; case DW_EH_PE_aligned: base = 0; offset = buf - unit->dwarf_frame_buffer; @@ -1523,6 +1529,7 @@ dwarf2_build_frame_info (struct objfile unit.objfile = objfile; unit.addr_size = objfile->obfd->arch_info->bits_per_address / 8; unit.dbase = 0; + unit.tbase = 0; /* First add the information from the .eh_frame section. That way, the FDEs from that section are searched last. */ @@ -1546,6 +1553,11 @@ dwarf2_build_frame_info (struct objfile got = bfd_get_section_by_name (unit.abfd, ".got"); if (got) unit.dbase = got->vma; + + /* gcc emits the DW_EH_PE_textrel encoding type on sh and ia64 so far. */ + got = bfd_get_section_by_name (unit.abfd, ".text"); + if (got) + unit.tbase = got->vma; frame_ptr = unit.dwarf_frame_buffer; while (frame_ptr < unit.dwarf_frame_buffer + unit.dwarf_frame_size) -- Corinna Vinschen Cygwin Developer Red Hat, Inc.