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

Stuart Winter m-lists at biscuit.org.uk
Wed Jul 21 07:11:59 UTC 2010


> you'd have to explicitly tell the compiler to target Thumb instead of
> normal 32-bit ARM instructions by specifying -mthumb or similar to gcc.
> Assuming AS isn't compiled in such a way, the only problem would be EABI's
> use of the "bx" instruction to return from function calls.

In the build scripts this hasn't been set although it may be set in some
of the makefiles or configure scripts when they detect the ARM cpu.

> b) The kernel is emulating the "bx" instruction via an Undefined
> Instruction trap.

In the kernel there is this option:

CONFIG_OABI_COMPAT:

 This option preserves the old syscall interface along with the
 new (ARM EABI) one. It also provides a compatibility layer to
 intercept syscalls that have structure arguments which layout
 in memory differs between the legacy ABI and the new ARM EABI
 (only for non "thumb" binaries). This option adds a tiny
 overhead to all syscalls and produces a slightly larger kernel.
 If you know you'll be using only pure EABI user space then you
 can say N here. If this option is not selected and you attempt
 to execute a legacy ABI binary then the result will be
 UNPREDICTABLE (in fact it can be predicted that it won't work
 at all). If in doubt say Y.

I only just removed this from -current's kernel 2.6.35 package
(and forgot to put it into the changelog - it can go in the next "rc")
but I don't think this is what would help you, if it's in the kernel
you're using.

John - if you need to get your project done soon, perhaps you can
just compile newer versions of particular software in 12.2?
If you look at the "arm/build" scripts in armedslack's source tree, it'll
give you an idea of what the dependencies are.
You could also get a SheevaPlug, put 12.2 on it and compile on there since
it has a 1GHz CPU and 512MB RAM.


More information about the ARMedslack mailing list