summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Britton <gbritton@doomcom.org>2004-04-27 02:53:54 +0000
committerGerald Britton <gbritton@doomcom.org>2004-04-27 02:53:54 +0000
commit5c76c320af6f82794823215c081469d3de8e64e4 (patch)
tree324384db2b3a349459fb4fa28fc910448ec52ae7
parentf63c99c34855fff1cbb932457b08bdd29b3777ff (diff)
- binutils 2.15.90.0.3 / gcc 3.4.0 toolchain
- support in glibc and uclibc for gcc 3.4.0 - new target setup for uclibc, TARGET_OS=linux-uclibc to match the uclibc project's setup and modern config.sub already has support for it. BKrev: 408dcb42JOaGKxGg3PSn6IwU4Kimfw
-rw-r--r--autoconf/autoconf-2.59/autoconf259-update-configscripts.patch0
-rw-r--r--autoconf/autoconf_2.59.oe3
-rw-r--r--automake/automake_1.8.2.oe5
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-001_ld_makefile.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-006_better_file_error.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-009_signed_char_fix.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-100_cflags_for_build.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-100-conf.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-200-build_modules.patch0
-rw-r--r--binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-210-cflags.patch0
-rw-r--r--binutils/binutils-cross_2.14.90.0.6.oe1
-rw-r--r--binutils/binutils-cross_2.14.90.0.7.oe1
-rw-r--r--binutils/binutils-cross_2.14.90.0.8.oe1
-rw-r--r--binutils/binutils-cross_2.15.90.0.1.oe1
-rw-r--r--binutils/binutils-cross_2.15.90.0.3.oe0
-rw-r--r--binutils/binutils-uclibc-cross_2.14.90.0.6.oe1
-rw-r--r--binutils/binutils-uclibc-cross_2.14.90.0.7.oe1
-rw-r--r--binutils/binutils-uclibc-cross_2.14.90.0.8.oe1
-rw-r--r--binutils/binutils-uclibc-cross_2.15.90.0.1.oe1
-rw-r--r--binutils/binutils-uclibc-cross_2.15.90.0.3.oe0
-rw-r--r--binutils/binutils-uclibc_2.14.90.0.6.oe5
-rw-r--r--binutils/binutils-uclibc_2.14.90.0.7.oe5
-rw-r--r--binutils/binutils-uclibc_2.14.90.0.8.oe5
-rw-r--r--binutils/binutils-uclibc_2.15.90.0.1.oe5
-rw-r--r--binutils/binutils-uclibc_2.15.90.0.3.oe0
-rw-r--r--binutils/binutils_2.14.90.0.6.oe23
-rw-r--r--binutils/binutils_2.14.90.0.7.oe23
-rw-r--r--binutils/binutils_2.14.90.0.8.oe23
-rw-r--r--binutils/binutils_2.15.90.0.1.oe23
-rw-r--r--binutils/binutils_2.15.90.0.3.oe0
-rw-r--r--conf/local.conf.sample6
-rw-r--r--gcc/gcc-3.4.0/gcc-uclibc-3.4.0-100-conf.patch.orig0
-rw-r--r--gcc/gcc-3.4.0/gcc-uclibc-3.4.0-120-softfloat.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc-uclibc-3.4.0-200-code.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc34-arm-ldm-peephole.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc34-arm-ldm.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc34-arm-tune.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc34-pre-modify.patch0
-rw-r--r--gcc/gcc-3.4.0/gcc34-reverse-compare.patch0
-rw-r--r--gcc/gcc-cross-initial_3.3.2.oe0
-rw-r--r--gcc/gcc-cross-initial_3.3.3.oe0
-rw-r--r--gcc/gcc-cross-initial_3.4.0.oe0
-rw-r--r--gcc/gcc-cross_3.4.0.oe0
-rw-r--r--gcc/gcc-initial-cross_3.3.2.oe21
-rw-r--r--gcc/gcc-initial-cross_3.3.3.oe26
-rw-r--r--gcc/gcc-initial-uclibc-cross_3.3.2.oe16
-rw-r--r--gcc/gcc-initial-uclibc-cross_3.3.3.oe16
-rw-r--r--gcc/gcc-uclibc-cross-initial_3.3.2.oe0
-rw-r--r--gcc/gcc-uclibc-cross-initial_3.3.3.oe0
-rw-r--r--gcc/gcc-uclibc-cross-initial_3.4.0.oe0
-rw-r--r--gcc/gcc-uclibc-cross_3.4.0.oe0
-rw-r--r--gcc/gcc-uclibc_3.3.2.oe8
-rw-r--r--gcc/gcc-uclibc_3.3.3.oe8
-rw-r--r--gcc/gcc-uclibc_3.4.0.oe0
-rw-r--r--gcc/gcc_3.3.2.oe23
-rw-r--r--gcc/gcc_3.3.3.oe23
-rw-r--r--gcc/gcc_3.4.0.oe0
-rw-r--r--glibc/glibc-2.3.2/arm-machine-gmon.patch0
-rw-r--r--glibc/glibc-2.3.2/arm-memcpy.patch756
-rw-r--r--glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch0
-rw-r--r--glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch0
-rw-r--r--glibc/glibc-cvs/arm-machine-gmon.patch0
-rw-r--r--glibc/glibc-cvs/arm-memcpy.patch756
-rw-r--r--glibc/glibc_2.3.2.oe54
-rw-r--r--glibc/glibc_cvs.oe52
-rw-r--r--libtool/libtool-1.5/libtool15-update-configscripts.patch0
-rw-r--r--libtool/libtool-cross_1.5.oe3
-rw-r--r--libtool/libtool_1.5.oe3
-rw-r--r--uclibc/uclibc-0.9.26/uClibc.config.arm30
-rw-r--r--uclibc/uclibc-0.9.26/uClibc.config.i386154
-rw-r--r--uclibc/uclibc-initial_0.9.26.oe5
-rw-r--r--uclibc/uclibc_0.9.26.oe73
72 files changed, 1877 insertions, 284 deletions
diff --git a/autoconf/autoconf-2.59/autoconf259-update-configscripts.patch b/autoconf/autoconf-2.59/autoconf259-update-configscripts.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/autoconf/autoconf-2.59/autoconf259-update-configscripts.patch
diff --git a/autoconf/autoconf_2.59.oe b/autoconf/autoconf_2.59.oe
index b80fe700bf..0c2ced0034 100644
--- a/autoconf/autoconf_2.59.oe
+++ b/autoconf/autoconf_2.59.oe
@@ -1,6 +1,7 @@
SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.bz2 \
file://${FILESDIR}/program_prefix.patch;patch=1 \
- file://${FILESDIR}/autoreconf-include.patch;patch=1"
+ file://${FILESDIR}/autoreconf-include.patch;patch=1 \
+ file://${FILESDIR}/autoconf259-update-configscripts.patch;patch=1"
DESCRIPTION = "A package of M4 macros to produce scripts to \
automatically configure sourcecode."
diff --git a/automake/automake_1.8.2.oe b/automake/automake_1.8.2.oe
index 94d0da789c..ae5117d3d9 100644
--- a/automake/automake_1.8.2.oe
+++ b/automake/automake_1.8.2.oe
@@ -1,6 +1,9 @@
-SRC_URI = "${GNU_MIRROR}/automake/automake-${PV}.tar.bz2"
+SRC_URI = "${GNU_MIRROR}/automake/automake-${PV}.tar.bz2 \
+ file://${FILESDIR}/automake182-update-configscripts.patch;patch=1;pnum=1"
DESCRIPTION = "A tool for automatically generating Makefiles."
+FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/automake-${PV}"
+
inherit autotools
do_install () {
diff --git a/binutils/binutils-2.15.90.0.3/binutils-001_ld_makefile.patch b/binutils/binutils-2.15.90.0.3/binutils-001_ld_makefile.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-001_ld_makefile.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-006_better_file_error.patch b/binutils/binutils-2.15.90.0.3/binutils-006_better_file_error.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-006_better_file_error.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-009_signed_char_fix.patch b/binutils/binutils-2.15.90.0.3/binutils-009_signed_char_fix.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-009_signed_char_fix.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-100_cflags_for_build.patch b/binutils/binutils-2.15.90.0.3/binutils-100_cflags_for_build.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-100_cflags_for_build.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-100-conf.patch b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-100-conf.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-100-conf.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-200-build_modules.patch b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-200-build_modules.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-200-build_modules.patch
diff --git a/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-210-cflags.patch b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-210-cflags.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-2.15.90.0.3/binutils-2.15.90.0.3-uclibc-210-cflags.patch
diff --git a/binutils/binutils-cross_2.14.90.0.6.oe b/binutils/binutils-cross_2.14.90.0.6.oe
index c6daeb4f14..bcd05014fc 100644
--- a/binutils/binutils-cross_2.14.90.0.6.oe
+++ b/binutils/binutils-cross_2.14.90.0.6.oe
@@ -1,7 +1,6 @@
include binutils_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-cross_2.14.90.0.7.oe b/binutils/binutils-cross_2.14.90.0.7.oe
index c6daeb4f14..bcd05014fc 100644
--- a/binutils/binutils-cross_2.14.90.0.7.oe
+++ b/binutils/binutils-cross_2.14.90.0.7.oe
@@ -1,7 +1,6 @@
include binutils_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-cross_2.14.90.0.8.oe b/binutils/binutils-cross_2.14.90.0.8.oe
index c6daeb4f14..bcd05014fc 100644
--- a/binutils/binutils-cross_2.14.90.0.8.oe
+++ b/binutils/binutils-cross_2.14.90.0.8.oe
@@ -1,7 +1,6 @@
include binutils_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-cross_2.15.90.0.1.oe b/binutils/binutils-cross_2.15.90.0.1.oe
index c6daeb4f14..bcd05014fc 100644
--- a/binutils/binutils-cross_2.15.90.0.1.oe
+++ b/binutils/binutils-cross_2.15.90.0.1.oe
@@ -1,7 +1,6 @@
include binutils_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-cross_2.15.90.0.3.oe b/binutils/binutils-cross_2.15.90.0.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-cross_2.15.90.0.3.oe
diff --git a/binutils/binutils-uclibc-cross_2.14.90.0.6.oe b/binutils/binutils-uclibc-cross_2.14.90.0.6.oe
index 31626ec9ba..6cf82282f8 100644
--- a/binutils/binutils-uclibc-cross_2.14.90.0.6.oe
+++ b/binutils/binutils-uclibc-cross_2.14.90.0.6.oe
@@ -1,7 +1,6 @@
include binutils-uclibc_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-uclibc-cross_2.14.90.0.7.oe b/binutils/binutils-uclibc-cross_2.14.90.0.7.oe
index 31626ec9ba..6cf82282f8 100644
--- a/binutils/binutils-uclibc-cross_2.14.90.0.7.oe
+++ b/binutils/binutils-uclibc-cross_2.14.90.0.7.oe
@@ -1,7 +1,6 @@
include binutils-uclibc_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-uclibc-cross_2.14.90.0.8.oe b/binutils/binutils-uclibc-cross_2.14.90.0.8.oe
index 31626ec9ba..6cf82282f8 100644
--- a/binutils/binutils-uclibc-cross_2.14.90.0.8.oe
+++ b/binutils/binutils-uclibc-cross_2.14.90.0.8.oe
@@ -1,7 +1,6 @@
include binutils-uclibc_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-uclibc-cross_2.15.90.0.1.oe b/binutils/binutils-uclibc-cross_2.15.90.0.1.oe
index 31626ec9ba..6cf82282f8 100644
--- a/binutils/binutils-uclibc-cross_2.15.90.0.1.oe
+++ b/binutils/binutils-uclibc-cross_2.15.90.0.1.oe
@@ -1,7 +1,6 @@
include binutils-uclibc_${PV}.oe
inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
-DEPENDS = "patcher-native"
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--with-sysroot=${CROSS_DIR}/${TARGET_SYS} \
diff --git a/binutils/binutils-uclibc-cross_2.15.90.0.3.oe b/binutils/binutils-uclibc-cross_2.15.90.0.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-uclibc-cross_2.15.90.0.3.oe
diff --git a/binutils/binutils-uclibc_2.14.90.0.6.oe b/binutils/binutils-uclibc_2.14.90.0.6.oe
index 9b9829325f..ffe7748799 100644
--- a/binutils/binutils-uclibc_2.14.90.0.6.oe
+++ b/binutils/binutils-uclibc_2.14.90.0.6.oe
@@ -1,11 +1,6 @@
include binutils_${PV}.oe
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
-# This will ONLY build to this target
-TARGET_VENDOR = "-uclibc"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
-
binutilsbuild_do_patch () {
oenote IN binutils patch
perl -i -p -e 's,#.*define.*ELF_DYNAMIC_INTERPRETER.*".*",#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0",;' `grep -lr ELF_DYNAMIC_INTERPRETER *`
diff --git a/binutils/binutils-uclibc_2.14.90.0.7.oe b/binutils/binutils-uclibc_2.14.90.0.7.oe
index dc68bfdf21..ffe7748799 100644
--- a/binutils/binutils-uclibc_2.14.90.0.7.oe
+++ b/binutils/binutils-uclibc_2.14.90.0.7.oe
@@ -1,11 +1,6 @@
include binutils_${PV}.oe
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
-# This will ONLY build to this target
-TARGET_VENDOR := "-uclibc"
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
binutilsbuild_do_patch () {
oenote IN binutils patch
perl -i -p -e 's,#.*define.*ELF_DYNAMIC_INTERPRETER.*".*",#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0",;' `grep -lr ELF_DYNAMIC_INTERPRETER *`
diff --git a/binutils/binutils-uclibc_2.14.90.0.8.oe b/binutils/binutils-uclibc_2.14.90.0.8.oe
index dc68bfdf21..ffe7748799 100644
--- a/binutils/binutils-uclibc_2.14.90.0.8.oe
+++ b/binutils/binutils-uclibc_2.14.90.0.8.oe
@@ -1,11 +1,6 @@
include binutils_${PV}.oe
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
-# This will ONLY build to this target
-TARGET_VENDOR := "-uclibc"
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
binutilsbuild_do_patch () {
oenote IN binutils patch
perl -i -p -e 's,#.*define.*ELF_DYNAMIC_INTERPRETER.*".*",#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0",;' `grep -lr ELF_DYNAMIC_INTERPRETER *`
diff --git a/binutils/binutils-uclibc_2.15.90.0.1.oe b/binutils/binutils-uclibc_2.15.90.0.1.oe
index dc68bfdf21..ffe7748799 100644
--- a/binutils/binutils-uclibc_2.15.90.0.1.oe
+++ b/binutils/binutils-uclibc_2.15.90.0.1.oe
@@ -1,11 +1,6 @@
include binutils_${PV}.oe
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/binutils-${PV}"
-# This will ONLY build to this target
-TARGET_VENDOR := "-uclibc"
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
binutilsbuild_do_patch () {
oenote IN binutils patch
perl -i -p -e 's,#.*define.*ELF_DYNAMIC_INTERPRETER.*".*",#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0",;' `grep -lr ELF_DYNAMIC_INTERPRETER *`
diff --git a/binutils/binutils-uclibc_2.15.90.0.3.oe b/binutils/binutils-uclibc_2.15.90.0.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils-uclibc_2.15.90.0.3.oe
diff --git a/binutils/binutils_2.14.90.0.6.oe b/binutils/binutils_2.14.90.0.6.oe
index 3f2faa778a..9d25471e1b 100644
--- a/binutils/binutils_2.14.90.0.6.oe
+++ b/binutils/binutils_2.14.90.0.6.oe
@@ -4,13 +4,22 @@ DESCRIPTION = "A GNU collection of binary utilities"
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR := ""
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc \
- virtual/libc patcher-native"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
PACKAGES = "${PN} ${PN}-dev ${PN}-doc ${PN}-symlinks"
diff --git a/binutils/binutils_2.14.90.0.7.oe b/binutils/binutils_2.14.90.0.7.oe
index 3f2faa778a..9d25471e1b 100644
--- a/binutils/binutils_2.14.90.0.7.oe
+++ b/binutils/binutils_2.14.90.0.7.oe
@@ -4,13 +4,22 @@ DESCRIPTION = "A GNU collection of binary utilities"
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR := ""
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc \
- virtual/libc patcher-native"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
PACKAGES = "${PN} ${PN}-dev ${PN}-doc ${PN}-symlinks"
diff --git a/binutils/binutils_2.14.90.0.8.oe b/binutils/binutils_2.14.90.0.8.oe
index 9c5b489804..1489ea1df6 100644
--- a/binutils/binutils_2.14.90.0.8.oe
+++ b/binutils/binutils_2.14.90.0.8.oe
@@ -4,13 +4,22 @@ DESCRIPTION = "A GNU collection of binary utilities"
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR := ""
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc \
- virtual/libc patcher-native"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
PACKAGES = "${PN} ${PN}-dev ${PN}-doc ${PN}-symlinks"
diff --git a/binutils/binutils_2.15.90.0.1.oe b/binutils/binutils_2.15.90.0.1.oe
index 9c5b489804..1489ea1df6 100644
--- a/binutils/binutils_2.15.90.0.1.oe
+++ b/binutils/binutils_2.15.90.0.1.oe
@@ -4,13 +4,22 @@ DESCRIPTION = "A GNU collection of binary utilities"
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR := ""
-TARGET_SYS := "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX := "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc \
- virtual/libc patcher-native"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
PACKAGES = "${PN} ${PN}-dev ${PN}-doc ${PN}-symlinks"
diff --git a/binutils/binutils_2.15.90.0.3.oe b/binutils/binutils_2.15.90.0.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/binutils/binutils_2.15.90.0.3.oe
diff --git a/conf/local.conf.sample b/conf/local.conf.sample
index 2599e7dd71..8ee6887cca 100644
--- a/conf/local.conf.sample
+++ b/conf/local.conf.sample
@@ -33,6 +33,12 @@ PREFERRED_PROVIDERS = "virtual/libc:glibc virtual/qte:qte-for-opie virtual/libqp
# for a machine not known to OpenEmbedded. Better use the MACHINE attribute (see above)
TARGET_ARCH = "arm"
+# Use this to specify the target operating system. This is "linux" for a normal
+# linux system with glibc. Set this to "linux-uclibc" if you want to build a
+# uclibc based system.
+#TARGET_OS = "linux"
+#TARGET_OS = "linux-uclibc"
+
# Uncomment this to select a distribution policy.
#DISTRO = "familiar"
diff --git a/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-100-conf.patch.orig b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-100-conf.patch.orig
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-100-conf.patch.orig
diff --git a/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-120-softfloat.patch b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-120-softfloat.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-120-softfloat.patch
diff --git a/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-200-code.patch b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-200-code.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc-uclibc-3.4.0-200-code.patch
diff --git a/gcc/gcc-3.4.0/gcc34-arm-ldm-peephole.patch b/gcc/gcc-3.4.0/gcc34-arm-ldm-peephole.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc34-arm-ldm-peephole.patch
diff --git a/gcc/gcc-3.4.0/gcc34-arm-ldm.patch b/gcc/gcc-3.4.0/gcc34-arm-ldm.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc34-arm-ldm.patch
diff --git a/gcc/gcc-3.4.0/gcc34-arm-tune.patch b/gcc/gcc-3.4.0/gcc34-arm-tune.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc34-arm-tune.patch
diff --git a/gcc/gcc-3.4.0/gcc34-pre-modify.patch b/gcc/gcc-3.4.0/gcc34-pre-modify.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc34-pre-modify.patch
diff --git a/gcc/gcc-3.4.0/gcc34-reverse-compare.patch b/gcc/gcc-3.4.0/gcc34-reverse-compare.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-3.4.0/gcc34-reverse-compare.patch
diff --git a/gcc/gcc-cross-initial_3.3.2.oe b/gcc/gcc-cross-initial_3.3.2.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-cross-initial_3.3.2.oe
diff --git a/gcc/gcc-cross-initial_3.3.3.oe b/gcc/gcc-cross-initial_3.3.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-cross-initial_3.3.3.oe
diff --git a/gcc/gcc-cross-initial_3.4.0.oe b/gcc/gcc-cross-initial_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-cross-initial_3.4.0.oe
diff --git a/gcc/gcc-cross_3.4.0.oe b/gcc/gcc-cross_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-cross_3.4.0.oe
diff --git a/gcc/gcc-initial-cross_3.3.2.oe b/gcc/gcc-initial-cross_3.3.2.oe
deleted file mode 100644
index 4f9cb6ddb6..0000000000
--- a/gcc/gcc-initial-cross_3.3.2.oe
+++ /dev/null
@@ -1,21 +0,0 @@
-include gcc-cross_${PV}.oe
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils glibc-initial patcher-native"
-PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
-
-EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \
- --disable-multilib \
- --with-newlib \
- --without-headers \
- --disable-nls \
- --enable-threads=no \
- --enable-symvers=gnu \
- --enable-__cxa_atexit \
- --enable-languages=c \
- --disable-shared \
- --program-prefix=${TARGET_PREFIX}"
-
-do_stage_prepend () {
- mkdir -p ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}
- ln -sf libgcc.a ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}/libgcc_eh.a
-}
diff --git a/gcc/gcc-initial-cross_3.3.3.oe b/gcc/gcc-initial-cross_3.3.3.oe
deleted file mode 100644
index 804e70944f..0000000000
--- a/gcc/gcc-initial-cross_3.3.3.oe
+++ /dev/null
@@ -1,26 +0,0 @@
-include gcc-cross_${PV}.oe
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils glibc-initial patcher-native"
-PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
-
-EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \
- --disable-multilib \
- --with-newlib \
- --without-headers \
- --disable-nls \
- --enable-threads=no \
- --enable-symvers=gnu \
- --enable-__cxa_atexit \
- --enable-languages=c \
- --disable-shared \
- --program-prefix=${TARGET_PREFIX}"
-
-do_stage_prepend () {
- mkdir -p ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}
- ln -sf libgcc.a ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}/libgcc_eh.a
-}
-
-# Override the method from gcc-cross so we don't try to install libgcc
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-}
diff --git a/gcc/gcc-initial-uclibc-cross_3.3.2.oe b/gcc/gcc-initial-uclibc-cross_3.3.2.oe
deleted file mode 100644
index ea0b0f1371..0000000000
--- a/gcc/gcc-initial-uclibc-cross_3.3.2.oe
+++ /dev/null
@@ -1,16 +0,0 @@
-include gcc-uclibc-cross_${PV}.oe
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils uclibc-initial patcher-native"
-PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
-
-EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/local \
- --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++ \
- --enable-target-optspace \
- --disable-nls \
- --with-gnu-ld \
- --disable-__cxa_atexit \
- --enable-languages=c \
- --disable-shared \
- --disable-threads \
- --enable-multilib \
- --program-prefix=${TARGET_PREFIX}"
diff --git a/gcc/gcc-initial-uclibc-cross_3.3.3.oe b/gcc/gcc-initial-uclibc-cross_3.3.3.oe
deleted file mode 100644
index ea0b0f1371..0000000000
--- a/gcc/gcc-initial-uclibc-cross_3.3.3.oe
+++ /dev/null
@@ -1,16 +0,0 @@
-include gcc-uclibc-cross_${PV}.oe
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils uclibc-initial patcher-native"
-PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
-
-EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/local \
- --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++ \
- --enable-target-optspace \
- --disable-nls \
- --with-gnu-ld \
- --disable-__cxa_atexit \
- --enable-languages=c \
- --disable-shared \
- --disable-threads \
- --enable-multilib \
- --program-prefix=${TARGET_PREFIX}"
diff --git a/gcc/gcc-uclibc-cross-initial_3.3.2.oe b/gcc/gcc-uclibc-cross-initial_3.3.2.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-uclibc-cross-initial_3.3.2.oe
diff --git a/gcc/gcc-uclibc-cross-initial_3.3.3.oe b/gcc/gcc-uclibc-cross-initial_3.3.3.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-uclibc-cross-initial_3.3.3.oe
diff --git a/gcc/gcc-uclibc-cross-initial_3.4.0.oe b/gcc/gcc-uclibc-cross-initial_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-uclibc-cross-initial_3.4.0.oe
diff --git a/gcc/gcc-uclibc-cross_3.4.0.oe b/gcc/gcc-uclibc-cross_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-uclibc-cross_3.4.0.oe
diff --git a/gcc/gcc-uclibc_3.3.2.oe b/gcc/gcc-uclibc_3.3.2.oe
index cdcfed787b..3cb6cb0dbf 100644
--- a/gcc/gcc-uclibc_3.3.2.oe
+++ b/gcc/gcc-uclibc_3.3.2.oe
@@ -5,13 +5,7 @@ DESCRIPTION = "The GNU cc and gcc C compilers (uclibc)."
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR = "-uclibc"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc \
- uclibc patcher"
+DEPENDS = "uclibc"
PACKAGES = "${PN} ${PN}-symlinks \
${PN}-c++ ${PN}-c++-symlinks \
diff --git a/gcc/gcc-uclibc_3.3.3.oe b/gcc/gcc-uclibc_3.3.3.oe
index 390a0a217f..10e4bdb371 100644
--- a/gcc/gcc-uclibc_3.3.3.oe
+++ b/gcc/gcc-uclibc_3.3.3.oe
@@ -5,13 +5,7 @@ DESCRIPTION = "The GNU cc and gcc C compilers (uclibc)."
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR = "-uclibc"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
-
-DEPENDS = "virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc \
- uclibc patcher"
+DEPENDS = "uclibc"
PACKAGES = "${PN} ${PN}-symlinks \
${PN}-c++ ${PN}-c++-symlinks \
diff --git a/gcc/gcc-uclibc_3.4.0.oe b/gcc/gcc-uclibc_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc-uclibc_3.4.0.oe
diff --git a/gcc/gcc_3.3.2.oe b/gcc/gcc_3.3.2.oe
index f1ebfa76db..ca6f239d34 100644
--- a/gcc/gcc_3.3.2.oe
+++ b/gcc/gcc_3.3.2.oe
@@ -4,13 +4,24 @@ DESCRIPTION = "The GNU cc and gcc C compilers."
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR = ""
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
-DEPENDS = "virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc \
- glibc patcher"
+DEPENDS = "glibc"
PACKAGES = "${PN} ${PN}-symlinks \
${PN}-c++ ${PN}-c++-symlinks \
diff --git a/gcc/gcc_3.3.3.oe b/gcc/gcc_3.3.3.oe
index 91985c449e..48358f48b8 100644
--- a/gcc/gcc_3.3.3.oe
+++ b/gcc/gcc_3.3.3.oe
@@ -4,13 +4,24 @@ DESCRIPTION = "The GNU cc and gcc C compilers."
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# This will ONLY build to this target
-TARGET_VENDOR = ""
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_pkg = (re.search('uclibc', oe.data.getVar('PN', d, 1)) != None)
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_pkg != uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
-DEPENDS = "virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc \
- glibc patcher"
+DEPENDS = "glibc"
PACKAGES = "${PN} ${PN}-symlinks \
${PN}-c++ ${PN}-c++-symlinks \
diff --git a/gcc/gcc_3.4.0.oe b/gcc/gcc_3.4.0.oe
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/gcc/gcc_3.4.0.oe
diff --git a/glibc/glibc-2.3.2/arm-machine-gmon.patch b/glibc/glibc-2.3.2/arm-machine-gmon.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/glibc/glibc-2.3.2/arm-machine-gmon.patch
diff --git a/glibc/glibc-2.3.2/arm-memcpy.patch b/glibc/glibc-2.3.2/arm-memcpy.patch
index e69de29bb2..7fe0040bea 100644
--- a/glibc/glibc-2.3.2/arm-memcpy.patch
+++ b/glibc/glibc-2.3.2/arm-memcpy.patch
@@ -0,0 +1,756 @@
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memcpy.S 2004-03-20 13:25:27.000000000 +0000
+@@ -0,0 +1,241 @@
++/*
++ * Optimized memcpy implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memcpy (char *dst, const char *src) */
++
++ENTRY(memcpy)
++ subs r2, r2, #4
++ stmfd sp!, {r0, r4, lr}
++ blt 7f
++ ands ip, r0, #3
++ PLD( pld [r1, #0] )
++ bne 8f
++ ands ip, r1, #3
++ bne 9f
++
++1: subs r2, r2, #4
++ blt 6f
++ subs r2, r2, #8
++ blt 5f
++ subs r2, r2, #16
++ blt 4f
++
++ PLD( subs r2, r2, #65 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 3f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #64] )
++ PLD( beq 2f )
++ PLD( rsb ip, ip, #32 )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #96] )
++ PLD( blt 2f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgeia r1!, {r3 - r6} )
++ PLD( stmgeia r0!, {r3 - r6} )
++ PLD( beq 2f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1], #4 )
++ PLD( ldrge r4, [r1], #4 )
++ PLD( ldrgt r5, [r1], #4 )
++ PLD( str r3, [r0], #4 )
++ PLD( strge r4, [r0], #4 )
++ PLD( strgt r5, [r0], #4 )
++
++2: PLD( pld [r1, #96] )
++3: ldmia r1!, {r3 - r8, ip, lr}
++ subs r2, r2, #32
++ stmia r0!, {r3 - r8, ip, lr}
++ bge 2b
++ PLD( cmn r2, #65 )
++ PLD( bge 3b )
++ PLD( add r2, r2, #65 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++4: ldmneia r1!, {r3, r4, ip, lr}
++ stmneia r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++5: ldmneia r1!, {r3, r4}
++ stmneia r0!, {r3, r4}
++
++ tst r2, #4
++6: ldrne r3, [r1], #4
++ strne r3, [r0], #4
++
++7: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb ip, [r1]
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb ip, [r0]
++ ldmfd sp!, {r0, r4, pc}
++
++8: rsb ip, ip, #4
++ cmp ip, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb lr, [r1], #1
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb lr, [r0], #1
++ subs r2, r2, ip
++ blt 7b
++ ands ip, r1, #3
++ beq 1b
++
++9: bic r1, r1, #3
++ cmp ip, #2
++ ldr lr, [r1], #4
++ beq 17f
++ bgt 18f
++
++
++ .macro forward_copy_shift pull push
++
++ cmp r2, #12
++ PLD( pld [r1, #0] )
++ blt 15f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 13f
++
++ PLD( subs r2, r2, #97 )
++ PLD( blt 12f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( rsb ip, r1, #36 )
++ PLD( pld [r1, #64] )
++ PLD( ands ip, ip, #31 )
++ PLD( pld [r1, #96] )
++ PLD( beq 11f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #128] )
++ PLD( blt 11f )
++ PLD( sub r2, r2, ip )
++10: PLD( mov r3, lr, pull #\pull )
++ PLD( ldr lr, [r1], #4 )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r3, r3, lr, push #\push )
++ PLD( str r3, [r0], #4 )
++ PLD( bgt 10b )
++
++11: PLD( pld [r1, #128] )
++12: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r9, ip, lr}
++ subs r2, r2, #32
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, r7, push #\push
++ mov r7, r7, pull #\pull
++ orr r7, r7, r8, push #\push
++ mov r8, r8, pull #\pull
++ orr r8, r8, r9, push #\push
++ mov r9, r9, pull #\pull
++ orr r9, r9, ip, push #\push
++ mov ip, ip, pull #\pull
++ orr ip, ip, lr, push #\push
++ stmia r0!, {r3 - r9, ip}
++ bge 11b
++ PLD( cmn r2, #97 )
++ PLD( bge 12b )
++ PLD( add r2, r2, #97 )
++ cmn r2, #16
++ blt 14f
++13: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r6, lr}
++ sub r2, r2, #16
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, lr, push #\push
++ stmia r0!, {r3 - r6}
++14: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 16f
++15: mov r3, lr, pull #\pull
++ ldr lr, [r1], #4
++ subs r2, r2, #4
++ orr r3, r3, lr, push #\push
++ str r3, [r0], #4
++ bge 15b
++16:
++ .endm
++
++
++ forward_copy_shift pull=8 push=24
++ sub r1, r1, #3
++ b 7b
++
++17: forward_copy_shift pull=16 push=16
++ sub r1, r1, #2
++ b 7b
++
++18: forward_copy_shift pull=24 push=8
++ sub r1, r1, #1
++ b 7b
++
++ .size memcpy, . - memcpy
++END(memcpy)
++libc_hidden_builtin_def (memcpy)
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
+@@ -0,0 +1,251 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memmove (char *dst, const char *src) */
++ENTRY(memmove)
++ subs ip, r0, r1
++ cmphi r2, ip
++ bls memcpy(PLT)
++
++ stmfd sp!, {r0, r4, lr}
++ add r1, r1, r2
++ add r0, r0, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, r0, #3
++ PLD( pld [r1, #-4] )
++ bne 26f
++ ands ip, r1, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [r1, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb r1!, {r3 - r6} )
++ PLD( stmgedb r0!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( ldrge r4, [r1, #-4]! )
++ PLD( ldrgt r5, [r1, #-4]! )
++ PLD( str r3, [r0, #-4]! )
++ PLD( strge r4, [r0, #-4]! )
++ PLD( strgt r5, [r0, #-4]! )
++
++20: PLD( pld [r1, #-96] )
++ PLD( pld [r1, #-128] )
++21: ldmdb r1!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ ldmdb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++22: ldmnedb r1!, {r3, r4, ip, lr}
++ stmnedb r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb r1!, {r3, r4}
++ stmnedb r0!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [r1, #-4]!
++ strne r3, [r0, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1, #-1]
++ ldrgeb r4, [r1, #-2]
++ ldrgtb ip, [r1, #-3]
++ strb r3, [r0, #-1]
++ strgeb r4, [r0, #-2]
++ strgtb ip, [r0, #-3]
++ ldmfd sp!, {r0, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [r1, #-1]!
++ ldrgeb r4, [r1, #-1]!
++ ldrgtb lr, [r1, #-1]!
++ strb r3, [r0, #-1]!
++ strgeb r4, [r0, #-1]!
++ strgtb lr, [r0, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, r1, #3
++ beq 19b
++
++27: bic r1, r1, #3
++ cmp ip, #2
++ ldr r3, [r1]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [r1, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [r1, #-32] )
++ PLD( blt 30f )
++ PLD( pld [r1, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [r0, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [r1, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb r1!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb r1!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [r1, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [r0, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add r1, r1, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add r1, r1, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add r1, r1, #1
++ b 25b
++
++ .size memmove, . - memmove
++END(memmove)
++libc_hidden_builtin_def (memmove)
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
+@@ -0,0 +1,255 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++dst .req r1
++src .req r0
++
++/* void *bcopy (const char *src, char *dst, size_t size) */
++ENTRY(bcopy)
++ subs ip, dst, src
++ cmphi r2, ip
++ movls r3, r0
++ movls r0, r1
++ movls r1, r3
++ bls memcpy(PLT)
++
++ stmfd sp!, {r4, lr}
++ add src, src, r2
++ add dst, dst, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, dst, #3
++ PLD( pld [src, #-4] )
++ bne 26f
++ ands ip, src, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [src, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb src!, {r3 - r6} )
++ PLD( stmgedb dst!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( ldrge r4, [src, #-4]! )
++ PLD( ldrgt r5, [src, #-4]! )
++ PLD( str r3, [dst, #-4]! )
++ PLD( strge r4, [dst, #-4]! )
++ PLD( strgt r5, [dst, #-4]! )
++
++20: PLD( pld [src, #-96] )
++ PLD( pld [src, #-128] )
++21: ldmdb src!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ ldmdb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r4, pc}
++
++ tst r2, #16
++22: ldmnedb src!, {r3, r4, ip, lr}
++ stmnedb dst!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb src!, {r3, r4}
++ stmnedb dst!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [src, #-4]!
++ strne r3, [dst, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {dst, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [src, #-1]
++ ldrgeb r4, [src, #-2]
++ ldrgtb ip, [src, #-3]
++ strb r3, [dst, #-1]
++ strgeb r4, [dst, #-2]
++ strgtb ip, [dst, #-3]
++ ldmfd sp!, {dst, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [src, #-1]!
++ ldrgeb r4, [src, #-1]!
++ ldrgtb lr, [src, #-1]!
++ strb r3, [dst, #-1]!
++ strgeb r4, [dst, #-1]!
++ strgtb lr, [dst, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, src, #3
++ beq 19b
++
++27: bic src, src, #3
++ cmp ip, #2
++ ldr r3, [src]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [src, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [src, #-32] )
++ PLD( blt 30f )
++ PLD( pld [src, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [dst, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [src, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb src!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb src!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [src, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [dst, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add src, src, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add src, src, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add src, src, #1
++ b 25b
++
++ .size bcopy, . - bcopy
++END(bcopy)
diff --git a/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch b/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch
diff --git a/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch b/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch
diff --git a/glibc/glibc-cvs/arm-machine-gmon.patch b/glibc/glibc-cvs/arm-machine-gmon.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/glibc/glibc-cvs/arm-machine-gmon.patch
diff --git a/glibc/glibc-cvs/arm-memcpy.patch b/glibc/glibc-cvs/arm-memcpy.patch
index e69de29bb2..7fe0040bea 100644
--- a/glibc/glibc-cvs/arm-memcpy.patch
+++ b/glibc/glibc-cvs/arm-memcpy.patch
@@ -0,0 +1,756 @@
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memcpy.S 2004-03-20 13:25:27.000000000 +0000
+@@ -0,0 +1,241 @@
++/*
++ * Optimized memcpy implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memcpy (char *dst, const char *src) */
++
++ENTRY(memcpy)
++ subs r2, r2, #4
++ stmfd sp!, {r0, r4, lr}
++ blt 7f
++ ands ip, r0, #3
++ PLD( pld [r1, #0] )
++ bne 8f
++ ands ip, r1, #3
++ bne 9f
++
++1: subs r2, r2, #4
++ blt 6f
++ subs r2, r2, #8
++ blt 5f
++ subs r2, r2, #16
++ blt 4f
++
++ PLD( subs r2, r2, #65 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 3f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #64] )
++ PLD( beq 2f )
++ PLD( rsb ip, ip, #32 )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #96] )
++ PLD( blt 2f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgeia r1!, {r3 - r6} )
++ PLD( stmgeia r0!, {r3 - r6} )
++ PLD( beq 2f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1], #4 )
++ PLD( ldrge r4, [r1], #4 )
++ PLD( ldrgt r5, [r1], #4 )
++ PLD( str r3, [r0], #4 )
++ PLD( strge r4, [r0], #4 )
++ PLD( strgt r5, [r0], #4 )
++
++2: PLD( pld [r1, #96] )
++3: ldmia r1!, {r3 - r8, ip, lr}
++ subs r2, r2, #32
++ stmia r0!, {r3 - r8, ip, lr}
++ bge 2b
++ PLD( cmn r2, #65 )
++ PLD( bge 3b )
++ PLD( add r2, r2, #65 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++4: ldmneia r1!, {r3, r4, ip, lr}
++ stmneia r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++5: ldmneia r1!, {r3, r4}
++ stmneia r0!, {r3, r4}
++
++ tst r2, #4
++6: ldrne r3, [r1], #4
++ strne r3, [r0], #4
++
++7: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb ip, [r1]
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb ip, [r0]
++ ldmfd sp!, {r0, r4, pc}
++
++8: rsb ip, ip, #4
++ cmp ip, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb lr, [r1], #1
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb lr, [r0], #1
++ subs r2, r2, ip
++ blt 7b
++ ands ip, r1, #3
++ beq 1b
++
++9: bic r1, r1, #3
++ cmp ip, #2
++ ldr lr, [r1], #4
++ beq 17f
++ bgt 18f
++
++
++ .macro forward_copy_shift pull push
++
++ cmp r2, #12
++ PLD( pld [r1, #0] )
++ blt 15f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 13f
++
++ PLD( subs r2, r2, #97 )
++ PLD( blt 12f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( rsb ip, r1, #36 )
++ PLD( pld [r1, #64] )
++ PLD( ands ip, ip, #31 )
++ PLD( pld [r1, #96] )
++ PLD( beq 11f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #128] )
++ PLD( blt 11f )
++ PLD( sub r2, r2, ip )
++10: PLD( mov r3, lr, pull #\pull )
++ PLD( ldr lr, [r1], #4 )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r3, r3, lr, push #\push )
++ PLD( str r3, [r0], #4 )
++ PLD( bgt 10b )
++
++11: PLD( pld [r1, #128] )
++12: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r9, ip, lr}
++ subs r2, r2, #32
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, r7, push #\push
++ mov r7, r7, pull #\pull
++ orr r7, r7, r8, push #\push
++ mov r8, r8, pull #\pull
++ orr r8, r8, r9, push #\push
++ mov r9, r9, pull #\pull
++ orr r9, r9, ip, push #\push
++ mov ip, ip, pull #\pull
++ orr ip, ip, lr, push #\push
++ stmia r0!, {r3 - r9, ip}
++ bge 11b
++ PLD( cmn r2, #97 )
++ PLD( bge 12b )
++ PLD( add r2, r2, #97 )
++ cmn r2, #16
++ blt 14f
++13: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r6, lr}
++ sub r2, r2, #16
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, lr, push #\push
++ stmia r0!, {r3 - r6}
++14: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 16f
++15: mov r3, lr, pull #\pull
++ ldr lr, [r1], #4
++ subs r2, r2, #4
++ orr r3, r3, lr, push #\push
++ str r3, [r0], #4
++ bge 15b
++16:
++ .endm
++
++
++ forward_copy_shift pull=8 push=24
++ sub r1, r1, #3
++ b 7b
++
++17: forward_copy_shift pull=16 push=16
++ sub r1, r1, #2
++ b 7b
++
++18: forward_copy_shift pull=24 push=8
++ sub r1, r1, #1
++ b 7b
++
++ .size memcpy, . - memcpy
++END(memcpy)
++libc_hidden_builtin_def (memcpy)
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
+@@ -0,0 +1,251 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memmove (char *dst, const char *src) */
++ENTRY(memmove)
++ subs ip, r0, r1
++ cmphi r2, ip
++ bls memcpy(PLT)
++
++ stmfd sp!, {r0, r4, lr}
++ add r1, r1, r2
++ add r0, r0, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, r0, #3
++ PLD( pld [r1, #-4] )
++ bne 26f
++ ands ip, r1, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [r1, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb r1!, {r3 - r6} )
++ PLD( stmgedb r0!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( ldrge r4, [r1, #-4]! )
++ PLD( ldrgt r5, [r1, #-4]! )
++ PLD( str r3, [r0, #-4]! )
++ PLD( strge r4, [r0, #-4]! )
++ PLD( strgt r5, [r0, #-4]! )
++
++20: PLD( pld [r1, #-96] )
++ PLD( pld [r1, #-128] )
++21: ldmdb r1!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ ldmdb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++22: ldmnedb r1!, {r3, r4, ip, lr}
++ stmnedb r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb r1!, {r3, r4}
++ stmnedb r0!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [r1, #-4]!
++ strne r3, [r0, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1, #-1]
++ ldrgeb r4, [r1, #-2]
++ ldrgtb ip, [r1, #-3]
++ strb r3, [r0, #-1]
++ strgeb r4, [r0, #-2]
++ strgtb ip, [r0, #-3]
++ ldmfd sp!, {r0, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [r1, #-1]!
++ ldrgeb r4, [r1, #-1]!
++ ldrgtb lr, [r1, #-1]!
++ strb r3, [r0, #-1]!
++ strgeb r4, [r0, #-1]!
++ strgtb lr, [r0, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, r1, #3
++ beq 19b
++
++27: bic r1, r1, #3
++ cmp ip, #2
++ ldr r3, [r1]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [r1, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [r1, #-32] )
++ PLD( blt 30f )
++ PLD( pld [r1, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [r0, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [r1, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb r1!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb r1!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [r1, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [r0, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add r1, r1, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add r1, r1, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add r1, r1, #1
++ b 25b
++
++ .size memmove, . - memmove
++END(memmove)
++libc_hidden_builtin_def (memmove)
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
+@@ -0,0 +1,255 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++dst .req r1
++src .req r0
++
++/* void *bcopy (const char *src, char *dst, size_t size) */
++ENTRY(bcopy)
++ subs ip, dst, src
++ cmphi r2, ip
++ movls r3, r0
++ movls r0, r1
++ movls r1, r3
++ bls memcpy(PLT)
++
++ stmfd sp!, {r4, lr}
++ add src, src, r2
++ add dst, dst, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, dst, #3
++ PLD( pld [src, #-4] )
++ bne 26f
++ ands ip, src, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [src, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb src!, {r3 - r6} )
++ PLD( stmgedb dst!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( ldrge r4, [src, #-4]! )
++ PLD( ldrgt r5, [src, #-4]! )
++ PLD( str r3, [dst, #-4]! )
++ PLD( strge r4, [dst, #-4]! )
++ PLD( strgt r5, [dst, #-4]! )
++
++20: PLD( pld [src, #-96] )
++ PLD( pld [src, #-128] )
++21: ldmdb src!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ ldmdb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r4, pc}
++
++ tst r2, #16
++22: ldmnedb src!, {r3, r4, ip, lr}
++ stmnedb dst!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb src!, {r3, r4}
++ stmnedb dst!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [src, #-4]!
++ strne r3, [dst, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {dst, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [src, #-1]
++ ldrgeb r4, [src, #-2]
++ ldrgtb ip, [src, #-3]
++ strb r3, [dst, #-1]
++ strgeb r4, [dst, #-2]
++ strgtb ip, [dst, #-3]
++ ldmfd sp!, {dst, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [src, #-1]!
++ ldrgeb r4, [src, #-1]!
++ ldrgtb lr, [src, #-1]!
++ strb r3, [dst, #-1]!
++ strgeb r4, [dst, #-1]!
++ strgtb lr, [dst, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, src, #3
++ beq 19b
++
++27: bic src, src, #3
++ cmp ip, #2
++ ldr r3, [src]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [src, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [src, #-32] )
++ PLD( blt 30f )
++ PLD( pld [src, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [dst, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [src, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb src!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb src!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [src, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [dst, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add src, src, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add src, src, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add src, src, #1
++ b 25b
++
++ .size bcopy, . - bcopy
++END(bcopy)
diff --git a/glibc/glibc_2.3.2.oe b/glibc/glibc_2.3.2.oe
index 5e72341914..0374d4e1d3 100644
--- a/glibc/glibc_2.3.2.oe
+++ b/glibc/glibc_2.3.2.oe
@@ -4,37 +4,24 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
-# We want to select whether we're building a uclibc or glibc system and
-# perform provides accordingly. We want to trigger on the original
-# TARGET_VENDOR setting, so we must do this before changing it.
-def target_is_uclibc(d):
- import oe
- if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
- return 1
- return 0
-def cond_provides(d):
- import oe
- if not target_is_uclibc(d):
- return 'virtual/libc'
- return ''
-def cond_packages(d):
- import oe
- if not target_is_uclibc(d):
- return 'glibc glibc-dev glibc-doc glibc-i18n glibc-locale'
- oe.data.setVar('PACKAGE_NO_LOCALE', '1', d)
- oe.data.setVar('PACKAGE_NO_GCONV', '1', d)
- return 'glibc-compat'
-PROVIDES := "${@cond_provides(d)}"
-PACKAGES := "${@cond_packages(d)}"
-
-# When target is not a uclibc system, do a compat-only package
-FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
-
-# This will ONLY build to this target (we override it incase we're buliding
-# the world for a uclibc system)
-TARGET_VENDOR = ""
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
+
+PROVIDES = "virtual/libc"
+PACKAGES = "glibc glibc-dev glibc-doc glibc-i18n glibc-locale"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
@@ -106,7 +93,10 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
file://${FILESDIR}/90_glibc232-statvfs.patch;patch=1;pnum=0 \
file://${FILESDIR}/90_glibc232-timezones.patch;patch=1;pnum=0 \
file://${FILESDIR}/arm-memcpy.patch;patch=1;pnum=0 \
- file://${FILESDIR}/arm-longlong.patch;patch=1;pnum=0"
+ file://${FILESDIR}/arm-longlong.patch;patch=1;pnum=0 \
+ file://${FILESDIR}/arm-machine-gmon.patch;patch=1;pnum=0 \
+ file://${FILESDIR}/glibc232-gcc34-i386-fixup-attribute.patch;patch=1;pnum=1 \
+ file://${FILESDIR}/glibc232-gcc34-no-unit-at-a-time.patch;patch=1;pnum=1"
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/glibc/glibc_cvs.oe b/glibc/glibc_cvs.oe
index 97bcd98f66..9399895d03 100644
--- a/glibc/glibc_cvs.oe
+++ b/glibc/glibc_cvs.oe
@@ -6,37 +6,24 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-# We want to select whether we're building a uclibc or glibc system and
-# perform provides accordingly. We want to trigger on the original
-# TARGET_VENDOR setting, so we must do this before changing it.
-def target_is_uclibc(d):
- import oe
- if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
- return 1
- return 0
-def cond_provides(d):
- import oe
- if not target_is_uclibc(d):
- return 'virtual/libc'
- return ''
-def cond_packages(d):
- import oe
- if not target_is_uclibc(d):
- return 'glibc glibc-dev glibc-doc glibc-i18n glibc-locale'
- oe.data.setVar('PACKAGE_NO_LOCALE', '1', d)
- oe.data.setVar('PACKAGE_NO_GCONV', '1', d)
- return 'glibc-compat'
-PROVIDES := "${@cond_provides(d)}"
-PACKAGES := "${@cond_packages(d)}"
-
-# When target is not a uclibc system, do a compat-only package
-FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
-
-# This will ONLY build to this target (we override it incase we're buliding
-# the world for a uclibc system)
-TARGET_VENDOR = ""
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
+
+PROVIDES = "virtual/libc"
+PACKAGES = "glibc glibc-dev glibc-doc glibc-i18n glibc-locale"
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
@@ -56,7 +43,8 @@ SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc \
file://${FILESDIR}/fhs-linux-paths.patch;patch=1;pnum=1 \
file://${FILESDIR}/arm-no-hwcap.patch;patch=1;pnum=0 \
file://${FILESDIR}/arm-memcpy.patch;patch=1;pnum=0 \
- file://${FILESDIR}/arm-longlong.patch;patch=1;pnum=0"
+ file://${FILESDIR}/arm-longlong.patch;patch=1;pnum=0 \
+ file://${FILESDIR}/arm-machine-gmon.patch;patch=1;pnum=0"
S = "${WORKDIR}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/libtool/libtool-1.5/libtool15-update-configscripts.patch b/libtool/libtool-1.5/libtool15-update-configscripts.patch
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/libtool/libtool-1.5/libtool15-update-configscripts.patch
diff --git a/libtool/libtool-cross_1.5.oe b/libtool/libtool-cross_1.5.oe
index 20084a7000..d9004eb718 100644
--- a/libtool/libtool-cross_1.5.oe
+++ b/libtool/libtool-cross_1.5.oe
@@ -1,5 +1,6 @@
include libtool_${PV}.oe
-#inherit cross
+# This is a cross tool, but doesn't really fit in with the cross
+# build system, so we don't actually "inherit cross" here.
SRC_URI_append = " file://${FILESDIR}/libdir-la.patch;patch=1 \
file://${FILESDIR}/sedvar.patch;patch=1 \
file://${FILESDIR}/tag.patch;patch=1 \
diff --git a/libtool/libtool_1.5.oe b/libtool/libtool_1.5.oe
index 2c36f5b626..33cfbbb98b 100644
--- a/libtool/libtool_1.5.oe
+++ b/libtool/libtool_1.5.oe
@@ -3,7 +3,8 @@ This is GNU libtool, a generic library support script. Libtool hides \
the complexity of generating special library types (such as shared \
libraries) behind a consistent interface."
-SRC_URI = "http://ftp.club.cc.cmu.edu/pub/gnu/libtool/libtool-${PV}.tar.gz"
+SRC_URI = "http://ftp.club.cc.cmu.edu/pub/gnu/libtool/libtool-${PV}.tar.gz \
+ file://${FILESDIR}/libtool15-update-configscripts.patch;patch=1;pnum=1"
S = "${WORKDIR}/libtool-${PV}"
inherit autotools
diff --git a/uclibc/uclibc-0.9.26/uClibc.config.arm b/uclibc/uclibc-0.9.26/uClibc.config.arm
index cfc53bf96e..ca67c55e9f 100644
--- a/uclibc/uclibc-0.9.26/uClibc.config.arm
+++ b/uclibc/uclibc-0.9.26/uClibc.config.arm
@@ -31,20 +31,6 @@ TARGET_ARCH="arm"
# CONFIG_ARM_SA110 is not set
# CONFIG_ARM_SA1100 is not set
CONFIG_ARM_XSCALE=y
-# CONFIG_GENERIC_386 is not set
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
ARCH_LITTLE_ENDIAN=y
# ARCH_BIG_ENDIAN is not set
# ARCH_HAS_NO_MMU is not set
@@ -105,8 +91,13 @@ UCLIBC_HAS_CTYPE_SIGNED=y
UCLIBC_HAS_CTYPE_CHECKED=y
# UCLIBC_HAS_CTYPE_ENFORCED is not set
UCLIBC_HAS_WCHAR=y
-# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_LOCALE=y
+UCLIBC_PREGENERATED_LOCALE_DATA=y
+# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set
+UCLIBC_HAS_XLOCALE=y
UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_DIGIT_GROUPING=y
+UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING=y
UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
@@ -131,22 +122,23 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
# UCLIBC_HAS_SYS_ERRLIST is not set
UCLIBC_HAS_SIGNUM_MESSAGES=y
# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GETTEXT_AWARENESS=y
UCLIBC_HAS_GNU_GETOPT=y
#
# Big and Tall
#
UCLIBC_HAS_REGEX=y
-# UCLIBC_HAS_WORDEXP is not set
-# UCLIBC_HAS_FTW is not set
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
UCLIBC_HAS_GLOB=y
#
# Library Installation Options
#
SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
-RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/"
-DEVEL_PREFIX="/home/gbritton/devel/OE/build/tmp/staging/cross/i386-uclibc-linux"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
#
# uClibc development/debugging options
diff --git a/uclibc/uclibc-0.9.26/uClibc.config.i386 b/uclibc/uclibc-0.9.26/uClibc.config.i386
index e69de29bb2..3b356930e2 100644
--- a/uclibc/uclibc-0.9.26/uClibc.config.i386
+++ b/uclibc/uclibc-0.9.26/uClibc.config.i386
@@ -0,0 +1,154 @@
+#
+# Automatically generated make config: don't edit
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_h8300 is not set
+TARGET_i386=y
+# TARGET_i960 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+
+#
+# Target Architecture Features and Options
+#
+HAVE_ELF=y
+TARGET_ARCH="i386"
+CONFIG_GENERIC_386=y
+# CONFIG_386 is not set
+# CONFIG_486 is not set
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+# CONFIG_686 is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_CRUSOE is not set
+# CONFIG_WINCHIPC6 is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_CYRIXIII is not set
+ARCH_LITTLE_ENDIAN=y
+# ARCH_BIG_ENDIAN is not set
+# ARCH_HAS_NO_MMU is not set
+UCLIBC_HAS_MMU=y
+UCLIBC_HAS_FLOATS=y
+HAS_FPU=y
+DO_C99_MATH=y
+WARNINGS="-Wall"
+KERNEL_SOURCE="/usr/src/linux"
+C_SYMBOL_PREFIX=""
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+HAVE_SHARED=y
+# ARCH_HAS_NO_LDSO is not set
+BUILD_UCLIBC_LDSO=y
+# UCLIBC_PIE_SUPPORT is not set
+LDSO_LDD_SUPPORT=y
+UCLIBC_CTOR_DTOR=y
+# UCLIBC_PROPOLICE is not set
+# UCLIBC_PROFILING is not set
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+HAS_SHADOW=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+# UCLIBC_HAS_IPV6 is not set
+UCLIBC_HAS_RPC=y
+# UCLIBC_HAS_FULL_RPC is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+UCLIBC_HAS_LOCALE=y
+UCLIBC_PREGENERATED_LOCALE_DATA=y
+# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set
+UCLIBC_HAS_XLOCALE=y
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_DIGIT_GROUPING=y
+UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GETTEXT_AWARENESS=y
+UCLIBC_HAS_GNU_GETOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# uClibc development/debugging options
+#
+# DODEBUG is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/uclibc/uclibc-initial_0.9.26.oe b/uclibc/uclibc-initial_0.9.26.oe
index 57fa385f7f..daa4cb013a 100644
--- a/uclibc/uclibc-initial_0.9.26.oe
+++ b/uclibc/uclibc-initial_0.9.26.oe
@@ -2,11 +2,6 @@ include uclibc_${PV}.oe
FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/uclibc-${PV}"
-# This will ONLY build to this target
-TARGET_VENDOR = "-uclibc"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
-
DEPENDS = ""
PACKAGES = ""
diff --git a/uclibc/uclibc_0.9.26.oe b/uclibc/uclibc_0.9.26.oe
index d7232174e8..8008b5c0e7 100644
--- a/uclibc/uclibc_0.9.26.oe
+++ b/uclibc/uclibc_0.9.26.oe
@@ -4,41 +4,49 @@ SECTION = "libs"
PRIORITY = "required"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-# We want to select whether we're building a uclibc or glibc system and
-# perform provides accordingly. We want to trigger on the original
-# TARGET_VENDOR setting, so we must do this before changing it.
-def target_is_uclibc(d):
- import oe
- if (oe.data.getVar('TARGET_VENDOR', d, 1) == '-uclibc'):
- return 1
- return 0
-def cond_provides(d):
- import oe
- if target_is_uclibc(d):
- return 'virtual/libc'
- return ''
-def cond_packages(d):
- import oe
- if target_is_uclibc(d):
- return '${PN} ${PN}-doc ${PN}-dev ${PN}-locale'
- return '${PN}-compat'
-PROVIDES := "${@cond_provides(d)}"
-PACKAGES := "${@cond_packages(d)}"
-
-# When target is not a uclibc system, do a compat-only package
-FILES_${PN}-compat = "${libdir}/lib*.so.* /lib/*.so*"
-
-# This will ONLY build to this target (we override it incase we're buliding
-# the world for a glibc system)
-TARGET_VENDOR = "-uclibc"
-TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-TARGET_PREFIX = "${TARGET_SYS}-"
+#
+# For now, we will skip building of a gcc package if it is a uclibc one
+# and our build is not a uclibc one, and we skip a glibc one if our build
+# is a uclibc build.
+#
+# See the note in gcc/gcc_3.4.0.oe
+#
+
+python __anonymous () {
+ import oe, re
+ uc_os = (re.match('.*uclibc$', oe.data.getVar('TARGET_OS', d, 1)) != None)
+ if not uc_os:
+ raise oe.parse.SkipPackage("incompatible with target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
-FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/uclibc-${PV}"
+#
+# We can only work currently with a predefined .config, this ensures we have
+# one. In the future, this may want to respect ${MACHINE} as well.
+#
+
+python __anonymous () {
+ import oe, os;
+ conf = (oe.data.getVar('FILESDIR', d, 1) + "/uClibc.config." +
+ oe.data.getVar('TARGET_ARCH', d, 1))
+ if not os.access(conf, os.R_OK):
+ raise oe.parse.SkipPackage("no available .config for target %s" %
+ oe.data.getVar('TARGET_OS', d, 1))
+}
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc-initial"
+PROVIDES = "virtual/libc"
+DEPENDS = "virtual/${TARGET_PREFIX}binutils \
+ virtual/${TARGET_PREFIX}gcc-initial"
+#
+# This locale file gets copied into uClibc-${PV}/extra/locale/ prior to
+# build, it does not need to be unpacked, but we can't inhibit the unpacking
+# in the current build system.
+#
+UCLIBC_LOCALE_FILE = "uClibc-locale-030818.tgz"
+FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/uclibc-${PV}"
SRC_URI = "http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2 \
+ http://www.uclibc.org/downloads/${UCLIBC_LOCALE_FILE} \
http://www.uclibc.org/downloads/toolchain/kernel-headers-2.4.21.tar.bz2"
S = "${WORKDIR}/uClibc-${PV}"
@@ -63,6 +71,7 @@ uclibcbuild_do_patch() {
cp ${FILESDIR}/uClibc.config.${TARGET_ARCH} ${S}/.config
else
echo ERROR: No target specific config for ${TARGET_ARCH}
+ return 1
fi
perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak
@@ -72,6 +81,8 @@ uclibcbuild_do_patch() {
perl -i -p -e 's,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH=\"/lib\",g' ${S}/.config
perl -i -p -e 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y\nUCLIBC_HAS_LOCALE=n,g' ${S}/.config
+ cp ${DL_DIR}/${UCLIBC_LOCALE_FILE} extra/locale
+
make oldconfig
}