Re: [PATCH] MIPS: IP22: Fix build error in IP22 cache code
From: Maciej W. Rozycki
Date: Mon Oct 17 2016 - 09:35:01 EST
On Fri, 14 Oct 2016, Matt Redfearn wrote:
> Recent MIPS toolchains complain about the use of an immediate larger
> than 32bits when compiling a 32bit kernel, leading to the following
> build failure:
> {standard input}: Assembler messages:
> {standard input}:131: Error: number (0x9000000080000000) larger than 32
> bits
> {standard input}:154: Error: number (0x9000000080000000) larger than 32
> bits
> {standard input}:191: Error: number (0x9000000080000000) larger than 32
> bits
>
> Fix this by specifying registers are 64bit via the .set gp=64 directive.
>
> Since IP22 is the default MIPS machine, this is causing allnoconfig
> build failures.
>
> Fixes: 1da177e4c3f4
> Signed-off-by: Matt Redfearn <matt.redfearn@xxxxxxxxxx>
>
> Cc: stable@xxxxxxxxxxxxxxx
> ---
This GAS regression introduced with upstream binutils commit 919731affbef
("Add MIPS .module directive") has been fixed with commit 22522f880a8e
("MIPS/GAS: Fix an ISA override not lifting ABI restrictions") and release
2.27 has been subsequently made.
Moving forward with your workaround may still make sense, although it
will bump the minimum binutils version to 2.18, which is when `.set gp=64'
has been added only, from the advertised version 2.12; it may have already
effectively happened due to changes elsewhere. If doing so however,
please be accurate with your commit description in that versions 2.25 and
2.26 (and their patch releases) only rather than "recent" have been
affected.
See also: <http://lkml.iu.edu/hypermail/linux/kernel/1604.2/00187.html>
and the discussion downthread. Based on the conclusions made there I'd
rather ban binutils 2.25 and 2.26 from use with the MIPS/Linux kernel as
the problem with ISA restoration may lead to bad code generation. So
maybe we should really leave this piece unchanged, as a fatal trigger for
unsupported binutils versions in the affected scenarios.
Maciej