Building newlib without -mhard-float
Dave Murphy
wintermute2k4@ntlworld.com
Tue Sep 4 23:52:00 GMT 2007
Rick Mann wrote:
> I'm having a heck of a time getting newlib variants for ARM with VFP
> instructions. I configure using --with-float=soft, but it still builds
> a bunch of versions using -mhard-float. I tried modifying
> CFLAGS_FOR_TARGET to include -mcpu=xscale and/or -march=armv5te, but
> then I get errors about it confilicting with -mhard-float.
I've been maintaining a gcc/newlib based arm cross compiler for a few
years now and in the beginning I experienced a lot of trouble with soft
vs hard float library issues. After a lot of searching and testing I
found that an arm-elf compiler produces soft-float binaries by default
but that the object files are actually marked as hard-float which, as
far as I could determine, is a legacy thing related to systems which
used FPU emulation. The only way I could get my toolchain to function as
intended was to use the default options and *not* use -msoft-float at
*any* point anywhere in the build process.
Most recently I had problems with a system which contains dual
processors, one arm7tdmi and one arm946e-s. The arm-elf toolchain
complained loudly about VFP mismatches when I tried to build code for
armv5te but obviously I wanted the libraries to be built for armv4t so
that the toolchain could still build binaries for the other supported
platforms. I asked for advice on IRC from Richard Earnshaw and some of
the other developers working with ARM and they advised me to switch to
arm-eabi which allows code for armv4t and armv5te to be mixed freely
without all the mismatching problems. It also allows for arm and thumb
code to co-exist without the need for the interworking libraries needed
with arm-elf. I've had very few problems since switching over.
The toolchain I'm maintaining is biased towards amateur game development
but is still useful as a more general ARM toolchain. The main site is at
http://www.devkitpro.org, all the buildscripts and patches I use are in
CVS at http://sourceforge.net/projects/devkitpro
My newlib patches are heavily modified to add a pseudo device API which
handles the low level stdio functions so you're probably better off
sticking with vanilla newlib and just using the buildscripts for general
guidance.
Dave
More information about the Newlib
mailing list