On Fri, Sep 1, 2017 at 9:02 AM, Josh Triplett <josh@xxxxxxxxxxxxxxxx> wrote: > On Thu, Aug 31, 2017 at 08:47:55PM -0400, Christopher Li wrote: >> On Thu, Aug 31, 2017 at 4:55 PM, Uwe Kleine-König <uwe@kleine-> Yes >> that works. So to address the Debian bug I can do: >> > >> > - move sparse to /usr/lib >> > - teach cgcc about the move of sparse >> > - make /usr/bin/sparse call cgcc -no-compile "$@" >> >> I don't like that. It means the user can't invoke sparse directly. >> >> > >> > or is it easier to teach sparse about the architecture stuff? >> >> First of all. It is not very trivial to teach sparse about the architecture >> stuff. To my mind, we need to move all the cgcc logic into sparse. > > Related to that: while it would mean we couldn't necessarily just rely > entirely on GCC's definitions for a target platform, I think in an ideal > world we could have a sparse binary that understood *all* target > platforms at once, such that you could ask Sparse on x86_64 to "compile" > as though targeting any arbitrary architecture. That would also have the > major advantage of making it easy to run the Sparse testsuite for > *every* target architecture without needing compilers for every such > architecture. I really think that the testsuite should not depend on system or library header. Otherwise, I'm not at all opposed to sparse being universal but I would like to note that things can become very quickly very very messy. For example, for the current problem here I understood that it was at least partially based on the lack of a definition of _CALL_ELF but do we need to define it to 1 or to 2, in other words, do we need to support the ELFv1 ABI or the ELFv2? GCC has some flags for this (-mabi=elfv[12]) but what default value do we want? ELFv1 is the default for big-endian platform and ELFv2 for little-endian platform, so yes, we need a flag for the endianness but which endianness we want as default? And so on. Things become even more fun when taking in account the difference between GCC version. Do we want to be universal there too (and thus have some flags for to specify which gcc's version we want to mimick)? What about other compilers? I think that part of the needed info can be auto-extracted from GCC when doing a native build. Using some sort of spec file or a .sparserc can help too. I also note that currently, sparse is already largely universal *because* it *doesn't* need those platform details (or only the very minimal: word size). -- Luc Van Oostenryck -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html