Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965241AbVI1Boq (ORCPT ); Tue, 27 Sep 2005 21:44:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S965245AbVI1Boq (ORCPT ); Tue, 27 Sep 2005 21:44:46 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:40371 "EHLO ZenIV.linux.org.uk") by vger.kernel.org with ESMTP id S965241AbVI1Boq (ORCPT ); Tue, 27 Sep 2005 21:44:46 -0400 Date: Wed, 28 Sep 2005 02:44:43 +0100 From: Al Viro To: Sam Ravnborg Cc: Hirokazu Takata , torvalds@odsl.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] m32r: set CHECKFLAGS properly Message-ID: <20050928014443.GX7992@ftp.linux.org.uk> References: <20050927.151301.189720995.takata.hirokazu@renesas.com> <20050927071025.GS7992@ftp.linux.org.uk> <20050927200230.GA8403@mars.ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050927200230.GA8403@mars.ravnborg.org> User-Agent: Mutt/1.4.1i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2058 Lines: 51 On Tue, Sep 27, 2005 at 10:02:30PM +0200, Sam Ravnborg wrote: > > > Sam, any help in that area? Ideally we want to have something equivalent > > to > > PREDEFINED_WE_MIGHT_WANT = __m32r__ __LITTLE_ENDIAN__ __BIG_ENDIAN__ > > and CHECKFLAGS done from that - basically, the subset of cross-gcc > > predefined symbols reproduced for sparse. Ideally with -m64 added > > if we have sizeof(long) == 8 on target, to take care of all that > > crap in one go. > > > > Suggestions? > The most simple solution would be to provide a small script that > create the defines as we need and run it for each invocation of sparse. > The script should use same trick as scripts/gcc-version.sh does. > > So we could have: > #!/bin/sh > compiler="$*" > > BIG=$(echo __BIG_ENDIAN__ | $compiler -E -xc - | tail -n 1) > LITTLE=$(echo __LITTLE_ENDIAN__ | $compiler -E -xc - | tail -n 1) > > Then BIG would be set to "1" if this is big endian, and "__BIG_ENDIAN__" > if little endian. > A little bit of shell script and we have the defines we want for m32r. > Then we could add calling this script as part of sparse invocation. Oww... Somehow that doesn't look like a good idea. Two spawned gcc per sparse run? Not pretty... > The better solution would be to find the relevant flags before we > start building the kernel. This is not so easy if we want access to > final CFLAGS. But for the architecture the important ones are > defined in arch/Makefile so placing this late in the file and > use $(CC) $(CFLAGS) should be OK in almost all cases. Alternatively, we could generate something like #define HAVE(x) -D##x=x #ifdef HAVE() #endif ... into arch/$ARCH/kernel/predefines.S, have arch/$ARCH/kernel/predefines.s generated by normal rules and have echo `grep -- -D arch/.../predefines.s` do the rest... - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/