Patchwork Makefile: Set default emulation for MIPS64/MIPS64el n64

login
register
mail settings
Submitter Markos Chandras
Date May 17, 2013, 7:42 p.m.
Message ID <1368819760-11931-1-git-send-email-markos.chandras@gmail.com>
Download mbox | patch
Permalink /patch/244694/
State Rejected
Headers show

Comments

Markos Chandras - May 17, 2013, 7:42 p.m.
From: Markos Chandras <markos.chandras@imgtec.com>

binutils set the default emulation for MIPS64/MIPS64el to
elf32btsmipn32 and elf32ltsmipn3 respectively. This breaks
linking for programs calling the linker directly without passing
the appropriate emulation parameter (-m). Unfortunately,
binutils do not provide a way to set the default emulation when
building the linker therefore we export the LDEMULATION variable
to set the preferred emulation ourselves. This fixes

http://autobuild.buildroot.net/results/0f2a760b94069ac915d856cd1ae1998e5483807a/

and possibly other build failures as well.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
---
 Makefile | 4 ++++
 1 file changed, 4 insertions(+)
Thomas Petazzoni - May 18, 2013, 5:31 p.m.
Dear Markos Chandras,

On Fri, 17 May 2013 20:42:40 +0100, Markos Chandras wrote:
> From: Markos Chandras <markos.chandras@imgtec.com>
> 
> binutils set the default emulation for MIPS64/MIPS64el to
> elf32btsmipn32 and elf32ltsmipn3 respectively. This breaks
> linking for programs calling the linker directly without passing
> the appropriate emulation parameter (-m). Unfortunately,
> binutils do not provide a way to set the default emulation when
> building the linker therefore we export the LDEMULATION variable
> to set the preferred emulation ourselves. This fixes
> 
> http://autobuild.buildroot.net/results/0f2a760b94069ac915d856cd1ae1998e5483807a/
> 
> and possibly other build failures as well.

I am not sure this is the right fix for the problem. I believe the
problem is that the external toolchain wrapper should also wrap "ld" in
order to pass the right arguments to select the correct emulation, just
like we have a wrapper for "gcc" to select the correct architecture,
ABI and so on.

No?

Thomas
Markos Chandras - May 18, 2013, 5:58 p.m.
On 05/18/2013 06:31 PM, Thomas Petazzoni wrote:
> Dear Markos Chandras,
> 
> On Fri, 17 May 2013 20:42:40 +0100, Markos Chandras wrote:
>> From: Markos Chandras <markos.chandras@imgtec.com>
>>
>> binutils set the default emulation for MIPS64/MIPS64el to
>> elf32btsmipn32 and elf32ltsmipn3 respectively. This breaks
>> linking for programs calling the linker directly without passing
>> the appropriate emulation parameter (-m). Unfortunately,
>> binutils do not provide a way to set the default emulation when
>> building the linker therefore we export the LDEMULATION variable
>> to set the preferred emulation ourselves. This fixes
>>
>> http://autobuild.buildroot.net/results/0f2a760b94069ac915d856cd1ae1998e5483807a/
>>
>> and possibly other build failures as well.
> 
> I am not sure this is the right fix for the problem. I believe the
> problem is that the external toolchain wrapper should also wrap "ld" in
> order to pass the right arguments to select the correct emulation, just
> like we have a wrapper for "gcc" to select the correct architecture,
> ABI and so on.
> 
> No?
> 
> Thomas
> 
Hi Thomas,

I am not sure what you mean by "external toolchain" here since this is a
problem with the buildroot toolchain as well. I probably don't
understand the solution you propose. This is a "quick and dirty" fix.
The ideal solution to this problem would be to fix the build systems to
use "gcc" instead of "ld" for linking.

Patch

diff --git a/Makefile b/Makefile
index 5d2a7ae..d80d12d 100644
--- a/Makefile
+++ b/Makefile
@@ -354,6 +354,10 @@  ifeq ($(BR2_ECLIPSE_REGISTER),y)
 TARGETS+=toolchain-eclipse-register
 endif
 
+ifeq ($(BR2_MIPS_NABI64),y)
+export LDEMULATION=elf64btsmip
+endif
+
 include fs/common.mk
 
 TARGETS+=target-post-image