Re: [PATCH] MIPS: Fix -mabi=64 build of vdso.lds

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

 



On Fri, Oct 07, 2016 at 12:52:32AM +0100, Maciej W. Rozycki wrote:
> On Thu, 6 Oct 2016, James Hogan wrote:
> 
> > The native ABI vDSO linker script vdso.lds is built by preprocessing
> > vdso.lds.S, with the native -mabi flag passed in to get the correct ABI
> > definitions. Unfortunately however certain toolchains choke on -mabi=64
> > without a corresponding compatible -march flag, for example:
> > 
> > cc1: error: ‘-march=mips32r2’ is not compatible with the selected ABI
> > scripts/Makefile.build:338: recipe for target 'arch/mips/vdso/vdso.lds' failed
> > 
> > Fix this by including ccflags-vdso in the KBUILD_CPPFLAGS for vdso.lds,
> > which includes the appropriate -march flag.
> > 
> > Fixes: ebb5e78cc634 ("MIPS: Initial implementation of a VDSO")
> > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx>
> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
> > Cc: linux-mips@xxxxxxxxxxxxxx
> > Cc: <stable@xxxxxxxxxxxxxxx> # 4.4.x-
> > ---
> 
> Reviewed-by: Maciej W. Rozycki <macro@xxxxxxxxxx>
> 
>  NB by default GCC is configured for the default of `-march=from-abi', 
> which is why saying `-mabi=64' only often works as such GCC implicitly 
> switches to a compatible `-march=' setting (i.e. `mips3' vs `mips1' for 
> o32).  However when configured with `-march=' set to a particular ISA 
> level, such as `mips32r2' quoted above you need to select a compatible ISA 
> explicitly when switching to a 64-bit ABI (arguably you could configure 
> with `-march=mips64r2' instead as with a 32-bit ABI such a setting would 
> limit the instruction set to the 32-bit subset automatically).

Thanks Maciej for the description. The toolchain in question was a
buildroot toolchain, which does I believe default to a particular
-march, so that makes a lot of sense.

> 
>  Also I've noticed $(aflags-vdso) duplicate `-I' and `-E' options already 
> included with $(ccflags-vdso); I wonder if the duplicates should simply be 
> removed or whether $(cflags-vdso) ought to filter from $(KBUILD_CFLAGS) 
> and $(aflags-vdso) -- from $(KBUILD_AFLAGS) instead (or $(ccflags-vdso) 
> should just take the options from $(KBUILD_CPPFLAGS)).  Also why `-E' is 
> supposed to take an argument?  Can you please have a look at it?

I think -E is to catch -EL / -EB. Removing the duplication is easily
fixed (I'll post a patch soon). As for whether it should filter from the
other KBUILD_ flags, I'm inclined to avoid changing it unless we can be
sure it will be more robust as a result.

Cheers
James

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]