From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16352 invoked by alias); 7 Mar 2005 07:36:09 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 16290 invoked from network); 7 Mar 2005 07:35:59 -0000 Received: from unknown (HELO emea1-mh.id2.novell.com) (195.33.99.129) by sourceware.org with SMTP; 7 Mar 2005 07:35:59 -0000 Received: from EMEA1-MTA by emea1-mh.id2.novell.com with Novell_GroupWise; Mon, 07 Mar 2005 07:35:58 +0100 Message-Id: Date: Mon, 07 Mar 2005 07:36:00 -0000 From: "Jan Beulich" To: , Cc: Subject: Re: gas: should duplicate .macro directives be allowed? Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline X-SW-Source: 2005-03/txt/msg00071.txt.bz2 Yes, the change was deliberate, and I don't think it'd be wise to revert it (it's simply dangerous considering that you might have these collisions resulting from two include files, each of which relies on their definition of the respective macro). Instead, if you need to override a previous macro definition (and know what you're doing), you can use easily use .purgem before the new definition (really, I'd rather recommend not to to catch the collision). Jan >>> Daniel Jacobowitz 06.03.05 18:56:05 >>> My system assembler is binutils 2.15, and allows duplicate macros; the later one wins. GDB's testsuite relies on this; I built a combined tree and dejagnu decided to use the in-tree assembler for asm-source.exp, which no longer allows this. Thus: /nevyn/big/fsf/objects/commit-gdb/gdb/testsuite/gdb.asm/arch.inc: Assembler messages: /nevyn/big/fsf/objects/commit-gdb/gdb/testsuite/gdb.asm/arch.inc:35: Error: Macro with this name was already defined >From gdb.asm/common.inc: comment "arch.inc is responsible for defining the following macros:" comment "enter - subroutine prologue" comment "leave - subroutine epilogue" comment "call - call a named subroutine" comment "several_nops - execute several (typically 4) nops" comment "exit0 - exit (0)" comment "arch.inc may also override the default definitions of:" comment "datavar - define a data variable" comment "declare - declare the start of a subroutine" comment "end - end a subroutine" Then an architecture-specific file is included, in this case i386.inc. Was the change deliberate? If so, it needs to be documented (I'd prefer to revert it). It appears to have come in here: 2005-01-31 Jan Beulich * macro.c (do_formals): Adjust to no longer accept empty parameter names. (define_macro): Adjust to no longer accept empty macro name, garbage following the parameters, or macros that were previously defined. * read.c (s_bad_end): Declare. (potable): Add endm. Handler for endr and endm is s_bad_end. (s_bad_end): Rename from s_bad_endr. Adjust to handle both .endm and .endr. * read.h (s_bad_endr): Remove. -- Daniel Jacobowitz CodeSourcery, LLC