[ARMedslack] Slackware 13.1 and forward is EABI...

Stuart Winter m-lists at biscuit.org.uk
Tue Jul 20 09:03:21 UTC 2010

> > The only thing is you need to make sure they are OABI and not EABI as
> > the Cavium CPU does not support thumb instructions and therefore it
> > does not support EABI.

Well - if that's what he says, I'd go with that.

However, my personal opinion is that this is not a future-proof board:
Old ABI is dead.
Debian don't support old ABI anymore and I don't think anyone else does so
you'll end up finding stuff that either won't build anymore, or does but
doesn't work since the number of people testing it is minimal - an example
is "Seamonkey" which is why I haven't released an updated version for

> I don't know whether this is correct or not. Certainly I ran several
> binaries from slack 13.1, and they seemed ok, but not knowing much about
> the instruction set or even how gcc is set up, how can I say when it
> would bother to use those?

I am not a toolchain or architecture wizard, so I might be wrong here;
but I think it's not just compiling it for armv4t that matters (compared
with -march=armv4 which is what AS 12.2 used).

GCC specs from as 12.2 box:

root at stokely-as-12-2:~# gcc -dumpspecs | grep abi
%{mbig-endian:-EB} %{mlittle-endian:-EL} %{mcpu=*:-mcpu=%*}
%{march=*:-march=%*} %{mapcs-*:-mapcs-%*} %(subtarget_asm_float_spec)
%{mthumb-interwork:-mthumb-interwork} %{msoft-float:-mfloat-abi=soft}
%{mhard-float:-mfloat-abi=hard} %{mfloat-abi=*} %{mfpu=*}
%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat}
-lgcc_eh}%{!static:%{!static-libgcc:%{!shared-libgcc:-lgcc --as-needed
-lgcc_s --no-as-needed}%{shared-libgcc:-lgcc_s%{!shared: -lgcc}}}}
root at stokely-as-12-2:~#

On a -current box (EABI)

root at zaden:~# gcc -dumpspecs | grep abi
%{mbig-endian:-EB} %{mlittle-endian:-EL} %{mcpu=*:-mcpu=%*}
%{march=*:-march=%*} %{mapcs-*:-mapcs-%*} %(subtarget_asm_float_spec)
%{mthumb-interwork:-mthumb-interwork} %{msoft-float:-mfloat-abi=soft}
%{mhard-float:-mfloat-abi=hard} %{mfloat-abi=*} %{mfpu=*}
%(subtarget_extra_asm_spec) %{!-mimplicit-it=*:-mimplicit-it=thumb}
%{!static:--eh-frame-hdr} %{h*} %{version:-v}    %{b}
%{static:-Bstatic}    %{shared:-shared}    %{symbolic:-Bsymbolic}
%{rdynamic:-export-dynamic}    %{!dynamic-linker:-dynamic-linker
%{muclibc:%{mglibc:%e-mglibc and -muclibc used
together}/lib/ld-uClibc.so.0;:/lib/ld-linux.so.3}}    -X
%{mbig-endian:-EB} %{mlittle-endian:-EL} -m armelf_linux_eabi
root at zaden:~#

If you read this thread here:

and this post in particular:

"One option, I think, is to do a linker fixup, changing all 'bx  Rm' into 'mov
pc,Rm'.  This is in binutils since v2.15, using the '--fix-v4bx' option to
linker (and assembler).  But you would really have to rebuild *everything*
scratch, since debian did choose ARMv4t as their minimum processor.

which you can see in gcc's specs for EABI, that this is present.
This *may* be why the binaries from -current are working on that CPU.

If Jim is reading, he can probably tell for sure since he's our
resident ARM assembler expert :-)

> I'd like to have Slackware on this thing, rather than debian (ugh), and
> I'm probably willing to compile my own 13.1 if it comes down to that...
> but I'd also like to steal the compiler out of 12.2 or whatever to
> bootstrap back up to it.

It's quite an task, building the entire thing, or even if you're only
building what you need - esp if you're building natively on a 250MHz ARM
machine.  I have my cross toolchain which you can find here:
which might help if you'd setup distcc.  This is what I use to build

More information about the ARMedslack mailing list