Re: [PATCH] options: allow to specify the desired arch with --arch=<arch>

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 29, 2019 at 02:32:15AM +0000, Ramsay Jones wrote:
> 
> 
> On 28/10/2019 21:43, Luc Van Oostenryck wrote:
> > Sparse is universal in the sense that the same executable can
> > be used for all architectures. For this, most arch-specific
> > setting can be set with an option and the default values
> > are taken from the host machine.
> > 
> > This is working nicely for native targets. However, for cross-
> > compilation, while seeming to work relatively well (thanks to
> > the kernel build system using -m32/-m64 for all archs, for example)
> > things can never work 100% correctly. For example, in the case
> > an X86-64 host machine is used for an ARM target, the kernel
> > build system will call sparse with -m32, Sparse will 'autodetect'
> > the target arch as i386 (x86-64 + -m32) and will then predefine
> > the macro __i386__. Most of the time this is not a problem (at
> > least for the kernel) unless, of course, if the code contains
> > something like:
> > 	#ifdef __i386__
> > 	...
> > 	#elif  __arm__
> > 	...
> > 
> > So, add an option --arch=<arch> to specify the target architecture.
> > The native arch is still used if no such flag is given.
> 
> How does this interact with the cgcc --target=<spec> and the
> (otherwise) guessing of the 'native' specs?

I didn't yet looked at how it interacts with cgcc --target=<spec>.
I had losely planned to do this after having removed all the defines
in cgcc that are now unneeded (integer_type() and define_size_t()
are now done by sparse itself, float_types() should also).

I think that the OS-specific parts can be kept in cgcc and in
the 'arch' parts it would be easy enough to call sparse with the
right '--arch=<...>' (either guessed via uname or specified via
--target=<spec>, it wouldn't matter).

Do you see some complications?

--Luc



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux