All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markos Chandras <Markos.Chandras@imgtec.com>
To: <linux-mips@linux-mips.org>
Subject: Re: [RFC PATCH v3] MIPS: fix build with binutils 2.24.51+
Date: Thu, 23 Oct 2014 13:22:49 +0100	[thread overview]
Message-ID: <5448F319.50503@imgtec.com> (raw)
In-Reply-To: <5448ED4E.7040507@imgtec.com>

On 10/23/2014 12:58 PM, Markos Chandras wrote:
> On 10/11/2014 11:09 AM, Manuel Lauss wrote:
>> Starting with version 2.24.51.20140728 MIPS binutils complain loudly
>> about mixing soft-float and hard-float object files, leading to this
>> build failure since GCC is invoked with "-msoft-float" on MIPS:
>>
>> {standard input}: Warning: .gnu_attribute 4,3 requires `softfloat'
>>   LD      arch/mips/alchemy/common/built-in.o
>> mipsel-softfloat-linux-gnu-ld: Warning: arch/mips/alchemy/common/built-in.o
>>  uses -msoft-float (set by arch/mips/alchemy/common/prom.o),
>>  arch/mips/alchemy/common/sleeper.o uses -mhard-float
>>
>> To fix this, we detect if GAS is new enough to support "-msoft-float" command
>> option, and if it does, we can let GCC pass it to GAS;  but then we also need
>> to sprinkle the files which make use of floating point registers with the
>> necessary ".set hardfloat" directives.
>>
>> Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
>> ---
>> I've only tested a mips32r1 build, but at least binutils-2.23 and a
>> snapshot from today (with the MIPS fp changes) compile a bootable
>> kernel.
>>
>> Tests on 64bit and with MSA and other extensions also appreciated!
>>
>> v3: incorporate Maciej's suggestions:
>> 	- detect if gas can handle -msoft-float and ".set hardfloat"
>> 	- apply .set hardfloat only where really necessary
>>
>> v2: cover more files
>>
>> This was introduced in binutils commit  351cdf24d223290b15fa991e5052ec9e9bd1e284
>> ("[MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions").
>>
>>  arch/mips/Makefile                  |  9 +++++++++
>>  arch/mips/include/asm/asmmacro-32.h |  5 +++++
>>  arch/mips/include/asm/asmmacro.h    | 18 ++++++++++++++++++
>>  arch/mips/include/asm/fpregdef.h    | 14 ++++++++++++++
>>  arch/mips/include/asm/mipsregs.h    | 19 +++++++++++++++++++
>>  arch/mips/kernel/genex.S            |  1 +
>>  arch/mips/kernel/r2300_switch.S     |  5 +++++
>>  arch/mips/kernel/r4k_fpu.S          |  7 +++++++
>>  arch/mips/kernel/r4k_switch.S       |  9 +++++++++
>>  arch/mips/kernel/r6000_fpu.S        |  5 +++++
>>  10 files changed, 92 insertions(+)
>>
> Hi,
> 
> I applied this patch but it still does not build for me on a
> malta_defconfig:
> 
> arch/mips/kernel/r4k_fpu.S: Assembler messages:
> arch/mips/kernel/r4k_fpu.S:52: Error: float register should be even, was 1
> arch/mips/kernel/r4k_fpu.S:53: Error: float register should be even, was 3
> arch/mips/kernel/r4k_fpu.S:54: Error: float register should be even, was 5
> arch/mips/kernel/r4k_fpu.S:55: Error: float register should be even, was 7
> ...
> 
> The error is different this time so we probably need a follow-up patch
>

I also get a problem with an older version of binutils (the one from the
latest Sourcery CodeBench toolchain[1])

{standard input}: Assembler messages:
{standard input}:406: Error: opcode not supported on this processor:
mips1 (mips1) `cfc1 $9,$31'
scripts/Makefile.build:257: recipe for target
'arch/mips/kernel/branch.o' failed
make[2]: *** [arch/mips/kernel/branch.o] Error 1

[1] https://sourcery.mentor.com/GNUToolchain/release2791

-- 
markos

WARNING: multiple messages have this Message-ID (diff)
From: Markos Chandras <Markos.Chandras@imgtec.com>
To: linux-mips@linux-mips.org
Subject: Re: [RFC PATCH v3] MIPS: fix build with binutils 2.24.51+
Date: Thu, 23 Oct 2014 13:22:49 +0100	[thread overview]
Message-ID: <5448F319.50503@imgtec.com> (raw)
Message-ID: <20141023122249.M1ZXUdjkz1G5MedOOwngZ55ra6rm0T339D6vgqlO15Q@z> (raw)
In-Reply-To: <5448ED4E.7040507@imgtec.com>

On 10/23/2014 12:58 PM, Markos Chandras wrote:
> On 10/11/2014 11:09 AM, Manuel Lauss wrote:
>> Starting with version 2.24.51.20140728 MIPS binutils complain loudly
>> about mixing soft-float and hard-float object files, leading to this
>> build failure since GCC is invoked with "-msoft-float" on MIPS:
>>
>> {standard input}: Warning: .gnu_attribute 4,3 requires `softfloat'
>>   LD      arch/mips/alchemy/common/built-in.o
>> mipsel-softfloat-linux-gnu-ld: Warning: arch/mips/alchemy/common/built-in.o
>>  uses -msoft-float (set by arch/mips/alchemy/common/prom.o),
>>  arch/mips/alchemy/common/sleeper.o uses -mhard-float
>>
>> To fix this, we detect if GAS is new enough to support "-msoft-float" command
>> option, and if it does, we can let GCC pass it to GAS;  but then we also need
>> to sprinkle the files which make use of floating point registers with the
>> necessary ".set hardfloat" directives.
>>
>> Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
>> ---
>> I've only tested a mips32r1 build, but at least binutils-2.23 and a
>> snapshot from today (with the MIPS fp changes) compile a bootable
>> kernel.
>>
>> Tests on 64bit and with MSA and other extensions also appreciated!
>>
>> v3: incorporate Maciej's suggestions:
>> 	- detect if gas can handle -msoft-float and ".set hardfloat"
>> 	- apply .set hardfloat only where really necessary
>>
>> v2: cover more files
>>
>> This was introduced in binutils commit  351cdf24d223290b15fa991e5052ec9e9bd1e284
>> ("[MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions").
>>
>>  arch/mips/Makefile                  |  9 +++++++++
>>  arch/mips/include/asm/asmmacro-32.h |  5 +++++
>>  arch/mips/include/asm/asmmacro.h    | 18 ++++++++++++++++++
>>  arch/mips/include/asm/fpregdef.h    | 14 ++++++++++++++
>>  arch/mips/include/asm/mipsregs.h    | 19 +++++++++++++++++++
>>  arch/mips/kernel/genex.S            |  1 +
>>  arch/mips/kernel/r2300_switch.S     |  5 +++++
>>  arch/mips/kernel/r4k_fpu.S          |  7 +++++++
>>  arch/mips/kernel/r4k_switch.S       |  9 +++++++++
>>  arch/mips/kernel/r6000_fpu.S        |  5 +++++
>>  10 files changed, 92 insertions(+)
>>
> Hi,
> 
> I applied this patch but it still does not build for me on a
> malta_defconfig:
> 
> arch/mips/kernel/r4k_fpu.S: Assembler messages:
> arch/mips/kernel/r4k_fpu.S:52: Error: float register should be even, was 1
> arch/mips/kernel/r4k_fpu.S:53: Error: float register should be even, was 3
> arch/mips/kernel/r4k_fpu.S:54: Error: float register should be even, was 5
> arch/mips/kernel/r4k_fpu.S:55: Error: float register should be even, was 7
> ...
> 
> The error is different this time so we probably need a follow-up patch
>

I also get a problem with an older version of binutils (the one from the
latest Sourcery CodeBench toolchain[1])

{standard input}: Assembler messages:
{standard input}:406: Error: opcode not supported on this processor:
mips1 (mips1) `cfc1 $9,$31'
scripts/Makefile.build:257: recipe for target
'arch/mips/kernel/branch.o' failed
make[2]: *** [arch/mips/kernel/branch.o] Error 1

[1] https://sourcery.mentor.com/GNUToolchain/release2791

-- 
markos

  reply	other threads:[~2014-10-23 12:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-11 10:09 [RFC PATCH v3] MIPS: fix build with binutils 2.24.51+ Manuel Lauss
2014-10-23 11:58 ` Markos Chandras
2014-10-23 12:22   ` Markos Chandras [this message]
2014-10-23 12:22     ` Markos Chandras
2014-10-23 15:20 ` Markos Chandras
2014-10-23 16:21   ` Matthew Fortune
2014-10-23 17:10     ` Manuel Lauss

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5448F319.50503@imgtec.com \
    --to=markos.chandras@imgtec.com \
    --cc=linux-mips@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.