From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18879 invoked by alias); 18 Apr 2011 12:43:16 -0000 Received: (qmail 18871 invoked by uid 22791); 18 Apr 2011 12:43:15 -0000 X-SWARE-Spam-Status: No, hits=0.4 required=5.0 tests=AWL,BAYES_99,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-qw0-f41.google.com (HELO mail-qw0-f41.google.com) (209.85.216.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 18 Apr 2011 12:42:30 +0000 Received: by qwa26 with SMTP id 26so3324797qwa.0 for ; Mon, 18 Apr 2011 05:42:29 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.43.142 with SMTP id w14mr3518209qce.27.1303130548711; Mon, 18 Apr 2011 05:42:28 -0700 (PDT) Received: by 10.229.190.140 with HTTP; Mon, 18 Apr 2011 05:42:28 -0700 (PDT) In-Reply-To: References: Date: Mon, 18 Apr 2011 12:43:00 -0000 Message-ID: Subject: Re: [patch ld bfd gas]: Handle linkonce for cfi generated debug_frame and eh_frame data From: "H.J. Lu" To: Kai Tietz Cc: Binutils , Alan Modra , Nick Clifton Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-04/txt/msg00237.txt.bz2 On Mon, Apr 18, 2011 at 2:33 AM, Kai Tietz wrote: > Hello, > > The recent patch about this subject I withdraw and replace it by the > more enhanced version. =A0I noticed that a bit more checkings and a > different approach on writing eh_frame/debug_frame sections out, was > necessary. =A0Additionally this patch allows for PE-COFF targets, that > debugging sections can have link-once flags active. > > > ChangeLog bfd/ > > 2011-04-18 =A0Kai Tietz > > =A0 =A0 =A0 =A0* coffcode.h (sec_to_styp_flags): Allow linkonce for > =A0 =A0 =A0 =A0debugging sections. > > ChangeLog gas/ > > 2011-04-18 =A0Kai Tietz > > =A0 =A0 =A0 * dw2gencfi.c (dwcfi_seg_list): New struct. > =A0 =A0 =A0 (dwcfi_hash): New static hash variable. > =A0 =A0 =A0 (get_debugseg_name): New. > =A0 =A0 =A0 (alloc_debugseg_item): New. > =A0 =A0 =A0 (make_debug_seg): New. > =A0 =A0 =A0 (dwcfi_hash_insert): New. > =A0 =A0 =A0 (dwcfi_hash_find): New. > =A0 =A0 =A0 (dwcfi_hash_find_or_make): New. > =A0 =A0 =A0 (cfi_insn_data): New member cur_seg. > =A0 =A0 =A0 (cie_entry): Likewise. > =A0 =A0 =A0 (fde_entry): New cseg and handled members. > =A0 =A0 =A0 (alloc_fde_entry): Initialize cseg member. > =A0 =A0 =A0 (alloc_cfi_insn_data): Initialize cur_seg member. > =A0 =A0 =A0 (dot_cfi_sections): Compare for beginning of > =A0 =A0 =A0 section names via strncmp. > =A0 =A0 =A0 (get_cfi_seg): New. > =A0 =A0 =A0 (cfi_finish): Treat link-once sections. > =A0 =A0 =A0 (is_now_linkonce_segment): New local helper. > =A0 =A0 =A0 (output_cie): Ignore cie entries not member of current > =A0 =A0 =A0 segment. > =A0 =A0 =A0 (output_fde): Likewise. > =A0 =A0 =A0 (select_cie_for_fde): Likewise. > =A0 =A0 =A0 (cfi_change_reg_numbers): Add new argument for current segment > =A0 =A0 =A0 and ignore insn elements, if not part of current segment. > =A0 =A0 =A0 * ehopt.c (get_cie_info): Use strncmp for > =A0 =A0 =A0 section name matching. > =A0 =A0 =A0 (heck_eh_frame): Likewise. > > ChangeLog ld/ > > 2011-04-18 =A0Kai Tietz > > =A0 =A0 =A0 * scripttempl/alphavms.sc: Handle .eh_frame($|.)* sections. > =A0 =A0 =A0 * scripttempl/armbpabi.sc: Likewise. > =A0 =A0 =A0 * scripttempl/avr.sc: Likewise. > =A0 =A0 =A0 * scripttempl/crisaout.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf32cr16.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf32crx.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf32msp430.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf32msp430_3.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf32sh-symbian.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf64hppa.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elf_chaos.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfd10v.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfd30v.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfi370.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfm68hc11.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfm68hc12.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfmicroblaze.sc: Likewise. > =A0 =A0 =A0 * scripttempl/elfxtensa.sc: Likewise. > =A0 =A0 =A0 * scripttempl/epocpe.sc: Likewise. > =A0 =A0 =A0 * scripttempl/i386beos.sc: Likewise. > =A0 =A0 =A0 * scripttempl/i386go32.sc: Likewise. > =A0 =A0 =A0 * scripttempl/ip2k.sc: Likewise. > =A0 =A0 =A0 * scripttempl/iq2000.sc: Likewise. > =A0 =A0 =A0 * scripttempl/mcorepe.sc: Likewise. > =A0 =A0 =A0 * scripttempl/mep.sc: Likewise. > =A0 =A0 =A0 * scripttempl/mmo.sc: Likewise. > =A0 =A0 =A0 * scripttempl/pe.sc: Likewise. > =A0 =A0 =A0 * scripttempl/pep.sc: Likewise. > =A0 =A0 =A0 * scripttempl/v850.sc: Likewise. > =A0 =A0 =A0 * scripttempl/xstormy16.sc: Likewise. > > Tested for x86_64-w64-mingw32, i686-w64-mingw32, and i686-pc-cygwin. > Ok for apply? 2 comments: 1. You should test Linux/x86 since you change ELF targets. 2. You should add some testcases to show gas/ld work correctly. --=20 H.J.