diff options
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 } |