diff mbox

[1/2] toolchain/mips: kill EABI and fix N32

Message ID 1342268918-3235-1-git-send-email-gustavo@zacarias.com.ar
State Accepted
Headers show

Commit Message

Gustavo Zacarias July 14, 2012, 12:28 p.m. UTC
MIPS EABI is a bare-metal ABI so remove it.
Also fix uClibc to really work with N32 ABI, which used the EABI knob
previously.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 target/Config.in.arch      |    3 ---
 toolchain/uClibc/uclibc.mk |    2 +-
 2 files changed, 1 insertions(+), 4 deletions(-)

Comments

Thomas Petazzoni July 14, 2012, 1:03 p.m. UTC | #1
Le Sat, 14 Jul 2012 09:28:37 -0300,
Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :

> MIPS EABI is a bare-metal ABI so remove it.
> Also fix uClibc to really work with N32 ABI, which used the EABI knob
> previously.

There is no support in uClibc for o64. Is this ABI really used? I see
that gcc has support for it
(http://gcc.gnu.org/projects/mipso64-abi.html), but is it used in
practice?

Also, is the BR2_MIPS_ABI_none knob actually useful?

Thanks,

Thomas
Gustavo Zacarias July 14, 2012, 7:44 p.m. UTC | #2
On 07/14/12 10:03, Thomas Petazzoni wrote:

> Le Sat, 14 Jul 2012 09:28:37 -0300,
> Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :
> 
>> MIPS EABI is a bare-metal ABI so remove it.
>> Also fix uClibc to really work with N32 ABI, which used the EABI knob
>> previously.
> 
> There is no support in uClibc for o64. Is this ABI really used? I see
> that gcc has support for it
> (http://gcc.gnu.org/projects/mipso64-abi.html), but is it used in
> practice?
> 
> Also, is the BR2_MIPS_ABI_none knob actually useful?
> 
> Thanks,
> 
> Thomas

The patchset isn't complete, it's just a start to fix the obvious so any
comments/suggestions are welcome.
Other points to fix include:

* External MIPS toolchains (non ct-ng) - neither of them seems to
support 64 bit anything yet it's an option, we should probably filter
them out.

* uClibc 64 bit toolchains seem broken for shared objects in general.
I've been able to get a qemu test running only with static linking.
Aboriginal linux does static too for mips64 as supporting evidence.

The set is just to get thing to build, maybe not properly but not
because of buildroot.
BR2_MIPS_ABI_none is actually useless, so yes it can be removed.
o64 ABI is probably an SGI thing for IRIX, hence the reason gcc supports
it, probably can be removed too.
Regards.
diff mbox

Patch

diff --git a/target/Config.in.arch b/target/Config.in.arch
index c9bbc12..bad0f4c 100644
--- a/target/Config.in.arch
+++ b/target/Config.in.arch
@@ -280,9 +280,6 @@  config BR2_MIPS_OABI32
 config BR2_MIPS_ABI32
 	bool "n32"
 	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_EABI
-	bool "eabi"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
 config BR2_MIPS_ABI64
 	bool "n64"
 	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index f40fe36..9d0b6db 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -158,7 +158,7 @@  ifeq ($(UCLIBC_TARGET_ARCH),mips)
 ifeq ($(BR2_MIPS_OABI),y)
 	$(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
-ifeq ($(BR2_MIPS_EABI),y)
+ifeq ($(BR2_MIPS_ABI32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
 ifeq ($(BR2_MIPS_ABI64),y)