From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31229 invoked by alias); 20 Apr 2005 22:58:23 -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 31169 invoked from network); 20 Apr 2005 22:58:17 -0000 Received: from unknown (HELO rwcrmhc12.comcast.net) (216.148.227.85) by sourceware.org with SMTP; 20 Apr 2005 22:58:17 -0000 Received: from lucon.org ([24.6.212.230]) by comcast.net (rwcrmhc12) with ESMTP id <2005042022581601400nmrsfe>; Wed, 20 Apr 2005 22:58:16 +0000 Received: by lucon.org (Postfix, from userid 1000) id 6FB9263E09; Wed, 20 Apr 2005 15:58:16 -0700 (PDT) Date: Wed, 20 Apr 2005 22:58:00 -0000 From: "H. J. Lu" To: binutils@sources.redhat.com Subject: Re: Empty section removal has messed up MIPS gdb Message-ID: <20050420225816.GA19890@lucon.org> References: <20050420213533.GA31598@nevyn.them.org> <20050420215317.GA18859@lucon.org> <20050420215746.GA32312@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050420215746.GA32312@nevyn.them.org> User-Agent: Mutt/1.4.1i X-SW-Source: 2005-04/txt/msg00586.txt.bz2 On Wed, Apr 20, 2005 at 05:57:46PM -0400, Daniel Jacobowitz wrote: > On Wed, Apr 20, 2005 at 02:53:17PM -0700, H. J. Lu wrote: > > On Wed, Apr 20, 2005 at 05:35:33PM -0400, Daniel Jacobowitz wrote: > > > GCC used to leave a message for the debugger in the form of an empty > > > section: > > > > > > /* Generate a special section to describe the ABI switches used to > > > produce the resultant binary. This used to be done by the assembler > > > setting bits in the ELF header's flags field, but we have run out of > > > bits. GDB needs this information in order to be able to correctly > > > debug these binaries. See the function mips_gdbarch_init() in > > > gdb/mips-tdep.c. This is unnecessary for the IRIX 5/6 ABIs and > > > causes unnecessary IRIX 6 ld warnings. */ > > > > > > The emitted bits were simply: > > > > > > .section .mdebug.abi64 > > > .previous > > > > > > The sections are now stripped. I don't want to put contents in them and > > > waste object file space unless it's absolutely necessary. How should I > > > cajole ld into leaving them? > > > > > > > Mark it KEEP? > > This is something that has to be done in the linker, right? i.e. the > linker would also need to know about this convention. > It is done in linker script: [hjl@gnu scripttempl]$ grep KEEP elf.sc KEEP (*crtbegin*.o(.ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) KEEP (*crtbegin*.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) KEEP (*(.init)) KEEP (*(.text.*personality*)) KEEP (*(.fini)) .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) } .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) } .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) } .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) } KEEP (*(.gnu.linkonce.d.*personality*)) You can do it for .mdebug.abi64. H.J.