From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14034 invoked by alias); 2 Feb 2005 01:12:18 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 13950 invoked from network); 2 Feb 2005 01:12:08 -0000 Received: from unknown (HELO gizmo01bw.bigpond.com) (144.140.70.11) by sourceware.org with SMTP; 2 Feb 2005 01:12:08 -0000 Received: (qmail 8274 invoked from network); 2 Feb 2005 01:12:06 -0000 Received: from unknown (HELO bwmam12.bigpond.com) (144.135.24.103) by gizmo01bw.bigpond.com with SMTP; 2 Feb 2005 01:12:06 -0000 Received: from cpe-144-136-221-26.sa.bigpond.net.au ([144.136.221.26]) by bwmam12.bigpond.com(MAM REL_3_4_2a 189/59986913) with SMTP id 59986913; Wed, 02 Feb 2005 11:12:06 +1000 Received: by bubble.modra.org (Postfix, from userid 500) id 70F5917A481; Wed, 2 Feb 2005 11:42:06 +1030 Date: Wed, 02 Feb 2005 01:12:00 -0000 From: Alan Modra To: "H. J. Lu" Cc: binutils@sources.redhat.com Subject: Re: IA64 linker is totally broken (Re: PATCH: ELF linker is broken) Message-ID: <20050202011206.GV11595@bubble.modra.org> Mail-Followup-To: "H. J. Lu" , binutils@sources.redhat.com References: <20050131071308.GH11595@bubble.modra.org> <20050131212203.GA27701@lucon.org> <20050131220214.GA28324@lucon.org> <20050201000825.GK11595@bubble.modra.org> <20050201055618.GA5203@lucon.org> <20050201061826.GA5603@lucon.org> <20050201071606.GQ11595@bubble.modra.org> <20050201224550.GA19843@lucon.org> <20050201235701.GT11595@bubble.modra.org> <20050202003925.GA21566@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050202003925.GA21566@lucon.org> User-Agent: Mutt/1.4i X-SW-Source: 2005-02/txt/msg00043.txt.bz2 On Tue, Feb 01, 2005 at 04:39:25PM -0800, H. J. Lu wrote: > On Wed, Feb 02, 2005 at 10:27:01AM +1030, Alan Modra wrote: > > On Tue, Feb 01, 2005 at 02:45:50PM -0800, H. J. Lu wrote: > > > There are quite a few failures on ia64. I am not sure if they can be > > > fixed by a single change. I am enclosing the cause of all the problems > > > I have seen so far on ia64. IA64 linker has a relaxation pass, which > > > seems to be the problem. Dos it ring a bell to you? If not, I will > > > send you a bunch of ia64 binaries as a testcase. > > > > Please send me the binaries! I can only make wild guesses otherwise. > > BTW, I still can't send email to you directly. Your anti-spam filters > > don't like my ISP's mail hub, nor do they like smtp directly from my > > I will see what I can do. > > > dynamic ip address. :-( Hmm, a bounce through gcc.gnu.org might > > work. > > > > I have sent you a testcase. I think this patch should do the trick. > We have to keep the next pointer. Otherwise, out hash table may be > screwed up. But that shouldn't be zapped. The lowest level hash newfunc doesn't clear any of it's fields. Ah! But ia64 newfunc clears the whole hash entry! That would lose the string too. * elfxx-ia64.c (elfNN_ia64_new_elf_hash_entry): Don't clear everything, just the field specific to ia64. Index: bfd/elfxx-ia64.c =================================================================== RCS file: /cvs/src/src/bfd/elfxx-ia64.c,v retrieving revision 1.144 diff -u -p -r1.144 elfxx-ia64.c --- bfd/elfxx-ia64.c 28 Oct 2004 14:55:41 -0000 1.144 +++ bfd/elfxx-ia64.c 2 Feb 2005 01:10:26 -0000 @@ -1616,15 +1616,12 @@ elfNN_ia64_new_elf_hash_entry (entry, ta if (!ret) return 0; - /* Initialize our local data. All zeros, and definitely easier - than setting a handful of bit fields. */ - memset (ret, 0, sizeof (*ret)); - /* Call the allocation method of the superclass. */ ret = ((struct elfNN_ia64_link_hash_entry *) _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); + ret->info = 0; return (struct bfd_hash_entry *) ret; } -- Alan Modra IBM OzLabs - Linux Technology Centre