Remove any reference to libfloat. That has gone once and for all.

Rationale:
Most of the time, soft-float problems are caused by this sucker of gcc:
it has support for soft float for all of the targets I've tried so far,
but does not activate this code until you dwelve into half a dozen of
files to make it accept to build and link the support code...

So, yes: gcc has soft-float support. And again, yes: gcc is a sucker.
This commit is contained in:
Yann E. MORIN" 2007-07-30 20:02:13 +00:00
parent 20e08ffa90
commit 7131764f9c
17 changed files with 4 additions and 230 deletions

View File

@ -12,8 +12,6 @@ the following terms.
patches/uClibc/*/*.patch : available under the LGPL v2.1
patches/glibc/*/*.patch : ditto
patches/dmalloc/*/*.patch : ditto
patches/libfloat/*/*.patch: Seems to be some BSD-like license; see the
full source.
patches/*/*/*.patch not covered by any license above:
GPL v2 (some are GPL v2 or later, see the
full source).

View File

@ -20,7 +20,6 @@ config ARCH_ARM
bool
prompt "arm"
select ARCH_SUPPORTS_BOTH_ENDIAN
select ARCH_SUPPORTS_LIBFLOAT
config ARCH_MIPS
bool
@ -30,7 +29,6 @@ config ARCH_MIPS
config ARCH_x86
bool
prompt "x86"
select ARCH_SUPPORTS_LIBFLOAT
config ARCH_x86_64
bool
@ -183,30 +181,6 @@ config ARCH_FLOAT_SW
endchoice
config ARCH_SUPPORTS_LIBFLOAT
bool
default n
config ARCH_FLOAT_SW_LIBFLOAT
bool
prompt "Use libfloat"
default n
depends on ARCH_FLOAT_SW && ARCH_SUPPORTS_LIBFLOAT
help
For those targets upporting it, you can use libfloat for the software
floating point emulation.
Note that some versions of gcc have support code that supersedes libfloat,
while others don't. Known version of gcc that don't have support code are
versions prior to 3.0, and version above 4.0.
You should check gcc before deciding to use libfloat.
config LIBFLOAT_VERSION
string
default "990616.orig"
depends on ARCH_FLOAT_SW_LIBFLOAT
config TARGET_CFLAGS
string
prompt "Target CFLAGS"

View File

@ -1,4 +1,5 @@
Enable building a pure soft-float compiler without the need for libfloat.
Enable building a pure soft-float compiler without the need for a software
floating point library.
diff -dur gcc-4.0.4.orig/gcc/config.gcc gcc-4.0.4/gcc/config.gcc
--- gcc-4.0.4.orig/gcc/config.gcc 2007-02-02 19:12:28.000000000 +0100

View File

@ -1,48 +0,0 @@
This patch comes from the Debian archive:
ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat/libfloat_990616-3.diff.gz
It was stripped of all Debian-related hunks.
Kept is the library versioning.
--- libfloat-990616.orig/Makefile
+++ libfloat-990616/Makefile
@@ -4,15 +4,15 @@
#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
AR=ar
-all: libfloat.a libfloat.so
+all: libfloat.a libfloat.so.1
libfloat.a: softfloat.o fplib_glue.o
rm -f libfloat.a
$(AR) cq libfloat.a softfloat.o fplib_glue.o
-libfloat.so: softfloat.os fplib_glue.os
- rm -f libfloat.so
- gcc -shared softfloat.os fplib_glue.os -o libfloat.so
+libfloat.so.1: softfloat.os fplib_glue.os
+ rm -f libfloat.so.1
+ gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
softfloat.o: softfloat/bits64/softfloat.c
$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
@@ -26,14 +26,14 @@
fplib_glue.os: fplib_glue.S
$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
-install: libfloat.a libfloat.so
- cp -a libfloat.a /usr/lib
- cp -a libfloat.so /usr/lib
- ldconfig
+install: libfloat.a libfloat.so.1
+ cp -a libfloat.a $(DESTDIR)/usr/lib
+ cp -a libfloat.so.1 $(DESTDIR)/usr/lib
+ cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
clean:
rm -f *.o
rm -f *.os
rm -f libfloat.a
- rm -f libfloat.so
+ rm -f libfloat.so.1
rm -f *~

View File

@ -1,63 +0,0 @@
When linking, call directly ld in place of the gcc wrapper, because the wrapper
will try to link with -lfloat, which we don't have right now...
Simplify CFLAGS to stay ABI compliant (ot so I guess)...
diff -dur libfloat.orig/Makefile libfloat/Makefile
--- libfloat.orig/Makefile 2007-02-16 19:38:55.000000000 +0100
+++ libfloat/Makefile 2007-02-16 19:46:23.000000000 +0100
@@ -1,8 +1,11 @@
# Makefile for the Linux soft-float library
-CC=gcc -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
-#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
-AR=ar
+AR=$(CROSS_COMPILE)ar
+#CFLAGS=-O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
+CFLAGS=-O2 -D__LIBFLOAT__
+CC=$(CROSS_COMPILE)gcc
+LDFLAGS=-shared -nostdlib
+LD=$(CROSS_COMPILE)ld
all: libfloat.a libfloat.so.1
@@ -12,28 +13,31 @@
libfloat.so.1: softfloat.os fplib_glue.os
rm -f libfloat.so.1
- gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
+ $(LD) $(LDFLAGS) -soname=libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
softfloat.o: softfloat/bits64/softfloat.c
- $(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
+ $(CC) $(CFLAGS) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
fplib_glue.o: fplib_glue.S
- $(CC) -c -o fplib_glue.o fplib_glue.S
+ $(CC) $(CFLAGS) -c -o fplib_glue.o fplib_glue.S
softfloat.os: softfloat/bits64/softfloat.c
- $(CC) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
+ $(CC) $(CFLAGS) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
fplib_glue.os: fplib_glue.S
- $(CC) -fpic -c -o fplib_glue.os fplib_glue.S
+ $(CC) $(CFLAGS) -fpic -c -o fplib_glue.os fplib_glue.S
install: libfloat.a libfloat.so.1
- cp -a libfloat.a $(DESTDIR)/usr/lib
- cp -a libfloat.so.1 $(DESTDIR)/usr/lib
- cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
+ install -d -m 755 "$(DESTDIR)/usr/lib"
+ install -m 755 libfloat.a "$(DESTDIR)/usr/lib"
+ install -m 755 libfloat.so.1 "$(DESTDIR)/usr/lib"
+ cd $(DESTDIR)/usr/lib
+ ln -s libfloat.so.1 libfloat.so
clean:
rm -f *.o
rm -f *.os
rm -f libfloat.a
rm -f libfloat.so.1
+ rm -f libfloat.so
rm -f *~

View File

@ -92,8 +92,6 @@ CT_ARCH_TUNE="xscale"
CT_ARCH_FPU=""
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_ARCH_SUPPORTS_LIBFLOAT=y
# CT_ARCH_FLOAT_SW_LIBFLOAT is not set
CT_TARGET_CFLAGS=""
#

View File

@ -92,8 +92,6 @@ CT_ARCH_TUNE="xscale"
CT_ARCH_FPU=""
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_ARCH_SUPPORTS_LIBFLOAT=y
# CT_ARCH_FLOAT_SW_LIBFLOAT is not set
CT_TARGET_CFLAGS=""
#

View File

@ -92,8 +92,6 @@ CT_ARCH_TUNE="xscale"
CT_ARCH_FPU=""
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_ARCH_SUPPORTS_LIBFLOAT=y
# CT_ARCH_FLOAT_SW_LIBFLOAT is not set
CT_TARGET_CFLAGS=""
#

View File

@ -90,7 +90,6 @@ CT_ARCH_TUNE=""
CT_ARCH_FPU=""
CT_ARCH_FLOAT_HW=y
# CT_ARCH_FLOAT_SW is not set
CT_ARCH_SUPPORTS_LIBFLOAT=y
CT_TARGET_CFLAGS=""
#

View File

@ -90,7 +90,6 @@ CT_ARCH_TUNE="i686"
CT_ARCH_FPU=""
CT_ARCH_FLOAT_HW=y
# CT_ARCH_FLOAT_SW is not set
CT_ARCH_SUPPORTS_LIBFLOAT=y
CT_TARGET_CFLAGS=""
#

View File

@ -92,7 +92,6 @@ CT_ARCH_TUNE=""
CT_ARCH_FPU=""
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
# CT_ARCH_SUPPORTS_LIBFLOAT is not set
CT_TARGET_CFLAGS=""
#

View File

@ -90,7 +90,6 @@ CT_ARCH_TUNE=""
CT_ARCH_FPU=""
CT_ARCH_FLOAT_HW=y
# CT_ARCH_FLOAT_SW is not set
# CT_ARCH_SUPPORTS_LIBFLOAT is not set
CT_TARGET_CFLAGS=""
#

View File

@ -45,7 +45,7 @@ do_binutils() {
# Make those new tools available to the core C compilers to come:
# Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
# well. Create that (libfloat is one such sucker).
# well. Create that.
mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin"
mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin"
mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin"

View File

@ -1,72 +0,0 @@
# This file adds functions to build libfloat
# Copyright 2007 Yann E. MORIN
# Licensed under the GPL v2. See COPYING in the root of this package
# Define libfloat functions depending on wether it is selected or not
if [ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ]; then
do_print_filename() {
echo "libfloat-${CT_LIBFLOAT_VERSION}"
}
# Download libfloat
do_libfloat_get() {
# Ah! libfloat separates the version string from the base name with
# an underscore. We need to workaround this in a sane manner: soft link.
local libfloat_file=`echo "${CT_LIBFLOAT_FILE}" |sed -r -e 's/^libfloat-/libfloat_/;'`
CT_GetFile "${libfloat_file}" \
ftp://ftp.de.debian.org/debian/pool/main/libf/libfloat
CT_Pushd "${CT_TARBALLS_DIR}"
ext=`CT_GetFileExtension "${libfloat_file}"`
ln -vf "${libfloat_file}${ext}" "${CT_LIBFLOAT_FILE}${ext}" |CT_DoLog DEBUG
CT_Popd
}
# Extract libfloat
do_libfloat_extract() {
CT_ExtractAndPatch "${CT_LIBFLOAT_FILE}"
}
# Build libfloat
do_libfloat() {
# Here we build and install libfloat for the target, so that the C library
# builds OK with those versions of gcc that have severed softfloat support
# code
CT_DoStep INFO "Installing software floating point emulation library libfloat"
CT_Pushd "${CT_BUILD_DIR}"
mkdir -p build-libfloat
cd build-libfloat
CT_DoLog EXTRA "Copying sources to build dir"
( cd "${CT_SRC_DIR}/${CT_LIBFLOAT_FILE}"; tar cf - . ) |tar xvf - |CT_DoLog ALL
CT_DoLog EXTRA "Cleaning library"
make clean 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Building library"
make CROSS_COMPILE="${CT_TARGET}-" 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Installing library"
make DESTDIR="${CT_SYSROOT_DIR}" install 2>&1 |CT_DoLog ALL
CT_Popd
CT_EndStep
}
else # "${CT_ARCH_FLOAT_SW_LIBFLOAT}" != "y"
do_print_filename() {
true
}
do_libfloat_get() {
true
}
do_libfloat_extract() {
true
}
do_libfloat() {
true
}
fi

View File

@ -90,7 +90,6 @@ fi
CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}"
CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}"
CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}"
CT_LIBFLOAT_FILE="libfloat-${CT_LIBFLOAT_VERSION}"
# Where will we work?
CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
@ -345,7 +344,6 @@ fi
# export any variable, nor re-parse the configuration and functions files.
. "${CT_LIB_DIR}/scripts/build/kernel_${CT_KERNEL}.sh"
. "${CT_LIB_DIR}/scripts/build/binutils.sh"
. "${CT_LIB_DIR}/scripts/build/libfloat.sh"
. "${CT_LIB_DIR}/scripts/build/libc_${CT_LIBC}.sh"
. "${CT_LIB_DIR}/scripts/build/cc_core_${CT_CC_CORE}.sh"
. "${CT_LIB_DIR}/scripts/build/cc_${CT_CC}.sh"
@ -357,7 +355,6 @@ if [ -z "${CT_RESTART}" ]; then
do_kernel_get
do_binutils_get
do_cc_core_get
do_libfloat_get
do_libc_get
do_cc_get
do_tools_get
@ -373,7 +370,6 @@ if [ -z "${CT_RESTART}" ]; then
do_kernel_extract
do_binutils_extract
do_cc_core_extract
do_libfloat_extract
do_libc_extract
do_cc_extract
do_tools_extract
@ -396,7 +392,6 @@ if [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then
libc_headers \
libc_start_files \
cc_core_pass_2 \
libfloat \
libc \
cc \
libc_finish \

View File

@ -416,7 +416,7 @@ CT_ExtractAndPatch() {
esac
# Snapshots might not have the version number in the extracted directory
# name. This is also the case for some (old) packages, such as libfloat.
# name. This is also the case for some (odd) packages, such as D.U.M.A.
# Overcome this issue by symlink'ing the directory.
if [ ! -d "${file}" -a "${libc_addon}" != "y" ]; then
case "${ext}" in

View File

@ -9,7 +9,6 @@ CT_STEPS := libc_check_config \
libc_headers \
libc_start_files \
cc_core_pass_2 \
libfloat \
libc \
cc \
libc_finish \