Messages in this thread | | | Date | Tue, 27 Sep 2005 08:10:25 +0100 | From | Al Viro <> | Subject | Re: [PATCH] m32r: set CHECKFLAGS properly |
| |
On Tue, Sep 27, 2005 at 03:13:01PM +0900, Hirokazu Takata wrote: > Please don't specify __BIG_ENDIAN__. ;-) > We have supported both big- and little-endian for the m32r kernel. > I hope it will be kept unconditional. > > Now, the endianness is to be determined by a (cross)compiler: > - For the big-endian, a compiler (m32r-linux-gcc or m32r-linux-gnu-gcc) > provides a predefined macro __BIG_ENDIAN__. > - For little-endian, a compiler (m32rle-linux-gcc or m32rle-linux-gnu-gcc) > provides a predefined macro __LITTLE_ENDIAN__. > > Here is a modified patch. > > Thank you.
You do realize that this way sparse will get neither? It does not pick predefined symbols from gcc; thus the -D<your_arch>, etc.
One solution would be to really run cross-gcc on something like
#define HAVE(x) -D##x=x #ifdef __LITTLE_ENDIAN__ HAVE(__LITTLE_ENDIAN__) #endif #ifdef __BIG_ENDIAN__ HAVE(__BIG_ENDIAN__) #endif
with grep -- -D on the output and have it added to CHECKFLAGS. The only problem being, for a generic solution we want to make sure that this sucker is run _after_ we have decided on gcc arguments.
Note that it's potentially more than just m32r - e.g. s390 wants __s390x__ added only for case of 64bit target. Similar for powerpc if these get merged, etc.
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? - 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/
| |