summaryrefslogtreecommitdiffstats
path: root/patches/glibc-2.13
diff options
context:
space:
mode:
Diffstat (limited to 'patches/glibc-2.13')
-rw-r--r--patches/glibc-2.13/0001-install-lib-all.patch45
-rw-r--r--patches/glibc-2.13/0002-fix-build-with-static-nss.patch55
-rw-r--r--patches/glibc-2.13/0003-glibc-configure-old-gcc.patch17
-rw-r--r--patches/glibc-2.13/0004-configure-in-sane-readelf.patch35
-rw-r--r--patches/glibc-2.13/0005-stdlib-longlong.patch37
-rw-r--r--patches/glibc-2.13/0006-respect-env-CPPFLAGS.patch36
-rw-r--r--patches/glibc-2.13/0007-i586-chk.patch32
-rw-r--r--patches/glibc-2.13/0008-i386-x86_64-revert-clone-cfi.patch55
-rw-r--r--patches/glibc-2.13/0009-queue-header-updates.patch89
-rw-r--r--patches/glibc-2.13/0010-manual-no-perl.patch29
-rw-r--r--patches/glibc-2.13/0011-localedef-fix-trampoline.patch74
-rw-r--r--patches/glibc-2.13/0012-posix-awk.patch23
-rw-r--r--patches/glibc-2.13/0013-resolv-dynamic.patch44
-rw-r--r--patches/glibc-2.13/0014-section-comments.patch29
-rw-r--r--patches/glibc-2.13/0015-no-inline-gmon.patch38
-rw-r--r--patches/glibc-2.13/0016-china.patch35
-rw-r--r--patches/glibc-2.13/0017-new-valencian-locale.patch122
-rw-r--r--patches/glibc-2.13/0018-strict-aliasing.patch91
-rw-r--r--patches/glibc-2.13/0019-undefine-__i686.patch49
-rw-r--r--patches/glibc-2.13/0020-dl_execstack-PaX-support.patch73
-rw-r--r--patches/glibc-2.13/0021-pre20040117-pt_pax.patch35
-rw-r--r--patches/glibc-2.13/0022-fpscr_values.patch42
-rw-r--r--patches/glibc-2.13/0023-Fix-prelinking.patch54
-rw-r--r--patches/glibc-2.13/0024-optimized-string-functions-for-NEON-from-Linaro.patch1295
-rw-r--r--patches/glibc-2.13/0025-add-libc_hidden_builtin_def-for-all-cortex-functions.patch79
-rw-r--r--patches/glibc-2.13/series25
26 files changed, 0 insertions, 2538 deletions
diff --git a/patches/glibc-2.13/0001-install-lib-all.patch b/patches/glibc-2.13/0001-install-lib-all.patch
deleted file mode 100644
index 79be15f..0000000
--- a/patches/glibc-2.13/0001-install-lib-all.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-# --- T2-COPYRIGHT-NOTE-BEGIN ---
-# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
-#
-# T2 SDE: package/.../glibc32/make-install-lib-all.patch
-# Copyright (C) 2004 - 2005 The T2 SDE Project
-#
-# More information can be found in the files COPYING and README.
-#
-# This patch file is dual-licensed. It is available under the license the
-# patched project is licensed under, as long as it is an OpenSource license
-# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
-# of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-# --- T2-COPYRIGHT-NOTE-END ---
----
-# Makerules | 8 ++++++++
-# 1 file changed, 8 insertions(+)
-#
-Index: glibc-2.13/Makerules
-===================================================================
---- glibc-2.13.orig/Makerules
-+++ glibc-2.13/Makerules
-@@ -868,6 +868,13 @@ endef
- installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
- $(inst_libdir)/$(patsubst %,$(libtype$o),\
- $(libprefix)$(libc-name)))
-+
-+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \
-+ $(inst_slibdir)/libc-$(version).so \
-+ $(inst_libdir)/libc.so \
-+ $(inst_libdir)/libc.a \
-+ install-lib
-+
- install: $(installed-libcs)
- $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
- $(make-target-directory)
-@@ -891,6 +898,7 @@ endef
- install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
- install-lib := $(filter-out %.so %_pic.a,$(install-lib))
-
-+
- ifeq (yes,$(build-shared))
- # Find which .so's have versions.
- versioned := $(strip $(foreach so,$(install-lib.so),\
diff --git a/patches/glibc-2.13/0002-fix-build-with-static-nss.patch b/patches/glibc-2.13/0002-fix-build-with-static-nss.patch
deleted file mode 100644
index a9960e7..0000000
--- a/patches/glibc-2.13/0002-fix-build-with-static-nss.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Dan Kegel <dank@kegel.com>
-Subject: [patch] fix build error with static-nss
-Date: Wed Jun 15 09:12:43 PDT 2005
-
-This patch fixes
-
-build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r'
-build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent'
-... 53 lines deleted ...
-build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r'
-collect2: ld returned 1 exit status
-make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1
-
-when building glibc with --enable-static-nss.
-
-See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631
-
-Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
-
----
- Makeconfig | 2 +-
- elf/Makefile | 7 +++++++
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-Index: glibc-2.13/Makeconfig
-===================================================================
---- glibc-2.13.orig/Makeconfig
-+++ glibc-2.13/Makeconfig
-@@ -531,7 +531,7 @@ endif
-
- # The static libraries.
- ifeq (yes,$(build-static))
--link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a
-+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a
- else
- ifeq (yes,$(build-shared))
- # We can try to link the programs with lib*_pic.a...
-Index: glibc-2.13/elf/Makefile
-===================================================================
---- glibc-2.13.orig/elf/Makefile
-+++ glibc-2.13/elf/Makefile
-@@ -146,6 +146,13 @@ install-others = $(inst_slibdir)/$(rtld-
- install-bin-script = ldd
- endif
-
-+ifeq (yes,$(build-static-nss))
-+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
-+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
-+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
-+ $(resolvobjdir)/libresolv.a
-+endif
-+
- others = sprof sln
- install-bin = sprof
- others-static = sln
diff --git a/patches/glibc-2.13/0003-glibc-configure-old-gcc.patch b/patches/glibc-2.13/0003-glibc-configure-old-gcc.patch
deleted file mode 100644
index a1c74d6..0000000
--- a/patches/glibc-2.13/0003-glibc-configure-old-gcc.patch
+++ /dev/null
@@ -1,17 +0,0 @@
----
- configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: glibc-2.13/configure
-===================================================================
---- glibc-2.13.orig/configure
-+++ glibc-2.13/configure
-@@ -5049,7 +5049,7 @@ $as_echo_n "checking version of $CC... "
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
- $as_echo "$ac_prog_version" >&6; }
- fi
--if test $ac_verc_fail = yes; then
-+if test $ac_verc_fail = yes -a -z "$enable_hacker_mode"; then
- critic_missing="$critic_missing gcc"
- fi
-
diff --git a/patches/glibc-2.13/0004-configure-in-sane-readelf.patch b/patches/glibc-2.13/0004-configure-in-sane-readelf.patch
deleted file mode 100644
index ff445af..0000000
--- a/patches/glibc-2.13/0004-configure-in-sane-readelf.patch
+++ /dev/null
@@ -1,35 +0,0 @@
----
- configure.in | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-Index: glibc-2.13/configure.in
-===================================================================
---- glibc-2.13.orig/configure.in
-+++ glibc-2.13/configure.in
-@@ -1475,6 +1475,8 @@ EOF
- fi
- fi
-
-+ AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH])
-+
- AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
- libc_cv_initfini_array, [dnl
- cat > conftest.c <<EOF
-@@ -1486,7 +1488,7 @@ EOF
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
- -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
- then
-- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
- libc_cv_initfini_array=yes
- else
- libc_cv_initfini_array=no
-@@ -1673,7 +1675,7 @@ dnl cross-platform since the gcc used ca
- dnl introducing new options this is not easily doable. Instead use a tool
- dnl which always is cross-platform: readelf. To detect whether -z combreloc
- dnl look for a section named .rel.dyn.
-- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
- libc_cv_z_combreloc=yes
- else
- libc_cv_z_combreloc=no
diff --git a/patches/glibc-2.13/0005-stdlib-longlong.patch b/patches/glibc-2.13/0005-stdlib-longlong.patch
deleted file mode 100644
index ee47efd..0000000
--- a/patches/glibc-2.13/0005-stdlib-longlong.patch
+++ /dev/null
@@ -1,37 +0,0 @@
----
- stdlib/longlong.h | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-Index: glibc-2.13/stdlib/longlong.h
-===================================================================
---- glibc-2.13.orig/stdlib/longlong.h
-+++ glibc-2.13/stdlib/longlong.h
-@@ -205,6 +205,14 @@ UDItype __umulsidi3 (USItype, USItype);
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -226,7 +234,13 @@ UDItype __umulsidi3 (USItype, USItype);
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)) __CLOBBER_CC );}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined(__arm__)
diff --git a/patches/glibc-2.13/0006-respect-env-CPPFLAGS.patch b/patches/glibc-2.13/0006-respect-env-CPPFLAGS.patch
deleted file mode 100644
index 63731b0..0000000
--- a/patches/glibc-2.13/0006-respect-env-CPPFLAGS.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Respect environment CPPFLAGS when we run ./configure so we can inject
-random -D things without having to set CFLAGS/ASFLAGS
-
-This patch was taken from gentoo.
-
-Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
-
----
- Makeconfig | 1 +
- config.make.in | 1 +
- 2 files changed, 2 insertions(+)
-
-Index: glibc-2.13/Makeconfig
-===================================================================
---- glibc-2.13.orig/Makeconfig
-+++ glibc-2.13/Makeconfig
-@@ -697,6 +697,7 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl
- $(foreach lib,$(libof-$(basename $(@F))) \
- $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
- $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
-+CPPFLAGS += $(CPPFLAGS-config)
- override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
- $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
- $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
-Index: glibc-2.13/config.make.in
-===================================================================
---- glibc-2.13.orig/config.make.in
-+++ glibc-2.13/config.make.in
-@@ -107,6 +107,7 @@ CC = @CC@
- CXX = @CXX@
- BUILD_CC = @BUILD_CC@
- CFLAGS = @CFLAGS@
-+CPPFLAGS-config = @CPPFLAGS@
- ASFLAGS-config = @ASFLAGS_config@
- AR = @AR@
- RANLIB = @RANLIB@
diff --git a/patches/glibc-2.13/0007-i586-chk.patch b/patches/glibc-2.13/0007-i586-chk.patch
deleted file mode 100644
index 646d0e4..0000000
--- a/patches/glibc-2.13/0007-i586-chk.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-http://bugs.gentoo.org/199479
-
-2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
-
- * sysdeps/i386/i586/memcpy_chk.S: New file.
- * sysdeps/i386/i586/mempcpy_chk.S: Likewise.
- * sysdeps/i386/i586/memset_chk.S: Likewise.
-
----
- i386/i586/memcpy_chk.S | 1 +
- i386/i586/mempcpy_chk.S | 1 +
- i386/i586/memset_chk.S | 1 +
- 3 files changed, 3 insertions(+)
-
-Index: glibc-2.13/i386/i586/memcpy_chk.S
-===================================================================
---- /dev/null
-+++ glibc-2.13/i386/i586/memcpy_chk.S
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/memcpy_chk.S>
-Index: glibc-2.13/i386/i586/mempcpy_chk.S
-===================================================================
---- /dev/null
-+++ glibc-2.13/i386/i586/mempcpy_chk.S
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/mempcpy_chk.S>
-Index: glibc-2.13/i386/i586/memset_chk.S
-===================================================================
---- /dev/null
-+++ glibc-2.13/i386/i586/memset_chk.S
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/memset_chk.S>
diff --git a/patches/glibc-2.13/0008-i386-x86_64-revert-clone-cfi.patch b/patches/glibc-2.13/0008-i386-x86_64-revert-clone-cfi.patch
deleted file mode 100644
index 665de83..0000000
--- a/patches/glibc-2.13/0008-i386-x86_64-revert-clone-cfi.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-revert cfi additions to clone on i386/x86_64 to workaround problems in
-gcc's unwinder code. this is not a bug in glibc, it triggers problems
-elsewhere. this cfi code does not gain us a whole lot anyways.
-
-http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
-
----
- sysdeps/unix/sysv/linux/i386/clone.S | 4 ----
- sysdeps/unix/sysv/linux/x86_64/clone.S | 4 ----
- 2 files changed, 8 deletions(-)
-
-Index: glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S
-===================================================================
---- glibc-2.13.orig/sysdeps/unix/sysv/linux/i386/clone.S
-+++ glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S
-@@ -120,9 +120,6 @@ L(pseudo_end):
- ret
-
- L(thread_start):
-- cfi_startproc;
-- /* Clearing frame pointer is insufficient, use CFI. */
-- cfi_undefined (eip);
- /* Note: %esi is zero. */
- movl %esi,%ebp /* terminate the stack frame */
- #ifdef RESET_PID
-@@ -155,7 +152,6 @@ L(nomoregetpid):
- jmp L(haspid)
- .previous
- #endif
-- cfi_endproc;
-
- cfi_startproc
- PSEUDO_END (BP_SYM (__clone))
-Index: glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S
-===================================================================
---- glibc-2.13.orig/sysdeps/unix/sysv/linux/x86_64/clone.S
-+++ glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S
-@@ -89,9 +89,6 @@ L(pseudo_end):
- ret
-
- L(thread_start):
-- cfi_startproc;
-- /* Clearing frame pointer is insufficient, use CFI. */
-- cfi_undefined (rip);
- /* Clear the frame pointer. The ABI suggests this be done, to mark
- the outermost frame obviously. */
- xorl %ebp, %ebp
-@@ -116,7 +113,6 @@ L(thread_start):
- /* Call exit with return value from function call. */
- movq %rax, %rdi
- call HIDDEN_JUMPTARGET (_exit)
-- cfi_endproc;
-
- cfi_startproc;
- PSEUDO_END (BP_SYM (__clone))
diff --git a/patches/glibc-2.13/0009-queue-header-updates.patch b/patches/glibc-2.13/0009-queue-header-updates.patch
deleted file mode 100644
index 8cd81ab..0000000
--- a/patches/glibc-2.13/0009-queue-header-updates.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-grab some updates from FreeBSD
-
-http://bugs.gentoo.org/201979
-
----
- misc/sys/queue.h | 37 +++++++++++++++++++++++++++++++++++++
- 1 file changed, 37 insertions(+)
-
-Index: glibc-2.13/misc/sys/queue.h
-===================================================================
---- glibc-2.13.orig/misc/sys/queue.h
-+++ glibc-2.13/misc/sys/queue.h
-@@ -136,6 +136,11 @@ struct { \
- (var); \
- (var) = ((var)->field.le_next))
-
-+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = LIST_FIRST((head)); \
-+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
- /*
- * List access methods.
- */
-@@ -197,6 +202,16 @@ struct { \
- #define SLIST_FOREACH(var, head, field) \
- for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
-
-+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = SLIST_FIRST((head)); \
-+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
-+ for ((varp) = &SLIST_FIRST((head)); \
-+ ((var) = *(varp)) != NULL; \
-+ (varp) = &SLIST_NEXT((var), field))
-+
- /*
- * Singly-linked List access methods.
- */
-@@ -242,6 +257,12 @@ struct { \
- (head)->stqh_last = &(elm)->field.stqe_next; \
- } while (/*CONSTCOND*/0)
-
-+#define STAILQ_LAST(head, type, field) \
-+ (STAILQ_EMPTY((head)) ? \
-+ NULL : \
-+ ((struct type *)(void *) \
-+ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
-+
- #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
- (head)->stqh_last = &(elm)->field.stqe_next; \
-@@ -286,6 +307,11 @@ struct { \
- #define STAILQ_FIRST(head) ((head)->stqh_first)
- #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-
-+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = STAILQ_FIRST((head)); \
-+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-
- /*
- * Simple queue definitions.
-@@ -437,11 +463,22 @@ struct { \
- (var); \
- (var) = ((var)->field.tqe_next))
-
-+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = TAILQ_FIRST((head)); \
-+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
- #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
- for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
- (var); \
- (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
-
-+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
-+ for ((var) = TAILQ_LAST((head), headname); \
-+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
-+ (var) = (tvar))
-+
-+
- #define TAILQ_CONCAT(head1, head2, field) do { \
- if (!TAILQ_EMPTY(head2)) { \
- *(head1)->tqh_last = (head2)->tqh_first; \
diff --git a/patches/glibc-2.13/0010-manual-no-perl.patch b/patches/glibc-2.13/0010-manual-no-perl.patch
deleted file mode 100644
index cb56446..0000000
--- a/patches/glibc-2.13/0010-manual-no-perl.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-If we're using a cvs snapshot which updates the source files, and
-perl isn't installed yet, then we can't regen the docs. Not a big
-deal, so just whine a little and continue on our merry way.
-
-http://bugs.gentoo.org/60132
-
----
- manual/Makefile | 5 +++++
- 1 file changed, 5 insertions(+)
-
-Index: glibc-2.13/manual/Makefile
-===================================================================
---- glibc-2.13.orig/manual/Makefile
-+++ glibc-2.13/manual/Makefile
-@@ -104,9 +104,14 @@ dir-add.texi: xtract-typefun.awk $(texis
- libm-err.texi: stamp-libm-err
- stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
- $(dir)/libm-test-ulps))
-+ifneq ($(PERL),no)
- pwd=`pwd`; \
- $(PERL) $< $$pwd/.. > libm-err-tmp
- $(move-if-change) libm-err-tmp libm-err.texi
-+else
-+ echo "Unable to rebuild math docs, no perl installed"
-+ touch libm-err.texi
-+endif
- touch $@
-
- # Generate Texinfo files from the C source for the example programs.
diff --git a/patches/glibc-2.13/0011-localedef-fix-trampoline.patch b/patches/glibc-2.13/0011-localedef-fix-trampoline.patch
deleted file mode 100644
index d317be6..0000000
--- a/patches/glibc-2.13/0011-localedef-fix-trampoline.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-#! /bin/sh -e
-
-# DP: Description: Fix localedef segfault when run under exec-shield,
-# PaX or similar. (#231438, #198099)
-# DP: Dpatch Author: James Troup <james@nocrew.org>
-# DP: Patch Author: (probably) Jakub Jelinek <jakub@redhat.com>
-# DP: Upstream status: Unknown
-# DP: Status Details: Unknown
-# DP: Date: 2004-03-16
-
-if [ $# -ne 2 ]; then
- echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
- exit 1
-fi
-case "$1" in
- -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
- -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
- *)
- echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
- exit 1
-esac
-exit 0
-
----
- locale/programs/3level.h | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
-
-Index: glibc-2.13/locale/programs/3level.h
-===================================================================
---- glibc-2.13.orig/locale/programs/3level.h
-+++ glibc-2.13/locale/programs/3level.h
-@@ -203,6 +203,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t,
- }
- }
- }
-+
-+/* GCC ATM seems to do a poor job with pointers to nested functions passed
-+ to inlined functions. Help it a little bit with this hack. */
-+#define wchead_table_iterate(tp, fn) \
-+do \
-+ { \
-+ struct wchead_table *t = (tp); \
-+ uint32_t index1; \
-+ for (index1 = 0; index1 < t->level1_size; index1++) \
-+ { \
-+ uint32_t lookup1 = t->level1[index1]; \
-+ if (lookup1 != ((uint32_t) ~0)) \
-+ { \
-+ uint32_t lookup1_shifted = lookup1 << t->q; \
-+ uint32_t index2; \
-+ for (index2 = 0; index2 < (1 << t->q); index2++) \
-+ { \
-+ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
-+ if (lookup2 != ((uint32_t) ~0)) \
-+ { \
-+ uint32_t lookup2_shifted = lookup2 << t->p; \
-+ uint32_t index3; \
-+ for (index3 = 0; index3 < (1 << t->p); index3++) \
-+ { \
-+ struct element_t *lookup3 \
-+ = t->level3[index3 + lookup2_shifted]; \
-+ if (lookup3 != NULL) \
-+ fn ((((index1 << t->q) + index2) << t->p) + index3, \
-+ lookup3); \
-+ } \
-+ } \
-+ } \
-+ } \
-+ } \
-+ } while (0)
-+
- #endif
-
- #ifndef NO_FINALIZE
diff --git a/patches/glibc-2.13/0012-posix-awk.patch b/patches/glibc-2.13/0012-posix-awk.patch
deleted file mode 100644
index a20fad5..0000000
--- a/patches/glibc-2.13/0012-posix-awk.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-http://bugs.gentoo.org/202511
-
-2007-12-24 Mike Frysinger <vapier@gentoo.org>
-
- * elf/Makefile ($(objpfx)ld.so): Use POSIX (EF)? in awk.
-
----
- elf/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: glibc-2.13/elf/Makefile
-===================================================================
---- glibc-2.13.orig/elf/Makefile
-+++ glibc-2.13/elf/Makefile
-@@ -389,7 +389,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
- -Wl,-soname=$(rtld-installed-name) -T $@.lds
- rm -f $@.lds
- readelf -s $@ \
-- | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
-+ | $(AWK) '($$7 ~ /^UND(EF)?$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
-
- # interp.c exists just to get this string into the libraries.
- CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \
diff --git a/patches/glibc-2.13/0013-resolv-dynamic.patch b/patches/glibc-2.13/0013-resolv-dynamic.patch
deleted file mode 100644
index 73eabc5..0000000
--- a/patches/glibc-2.13/0013-resolv-dynamic.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-ripped from SuSE
-
-if /etc/resolv.conf is updated, then make sure applications
-already running get the updated information.
-
-http://bugs.gentoo.org/177416
-
----
- resolv/res_libc.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-Index: glibc-2.13/resolv/res_libc.c
-===================================================================
---- glibc-2.13.orig/resolv/res_libc.c
-+++ glibc-2.13/resolv/res_libc.c
-@@ -22,6 +22,7 @@
- #include <arpa/nameser.h>
- #include <resolv.h>
- #include <bits/libc-lock.h>
-+#include <sys/stat.h>
-
-
- /* The following bit is copied from res_data.c (where it is #ifdef'ed
-@@ -95,6 +96,20 @@ int
- __res_maybe_init (res_state resp, int preinit)
- {
- if (resp->options & RES_INIT) {
-+ static time_t last_mtime, last_check;
-+ time_t now;
-+ struct stat statbuf;
-+
-+ time (&now);
-+ if (now != last_check) {
-+ last_check = now;
-+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
-+ last_mtime = statbuf.st_mtime;
-+ atomicinclock (lock);
-+ atomicinc (__res_initstamp);
-+ atomicincunlock (lock);
-+ }
-+ }
- if (__res_initstamp != resp->_u._ext.initstamp) {
- if (resp->nscount > 0)
- __res_iclose (resp, true);
diff --git a/patches/glibc-2.13/0014-section-comments.patch b/patches/glibc-2.13/0014-section-comments.patch
deleted file mode 100644
index cb7012f..0000000
--- a/patches/glibc-2.13/0014-section-comments.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-http://sources.redhat.com/ml/binutils/2004-04/msg00665.html
-
-fixes building on some architectures (like m68k/arm/cris/etc...) because
-it does the right thing
-
----
- include/libc-symbols.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-Index: glibc-2.13/include/libc-symbols.h
-===================================================================
---- glibc-2.13.orig/include/libc-symbols.h
-+++ glibc-2.13/include/libc-symbols.h
-@@ -239,12 +239,12 @@
- # define __make_section_unallocated(section_string)
- # endif
-
--/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
-+/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus
- section attributes on what looks like a comment to the assembler. */
- # ifdef HAVE_SECTION_QUOTES
--# define __sec_comment "\"\n\t#\""
-+# define __sec_comment "\"\n#APP\n\t#\""
- # else
--# define __sec_comment "\n\t#"
-+# define __sec_comment "\n#APP\n\t#"
- # endif
- # define link_warning(symbol, msg) \
- __make_section_unallocated (".gnu.warning." #symbol) \
diff --git a/patches/glibc-2.13/0015-no-inline-gmon.patch b/patches/glibc-2.13/0015-no-inline-gmon.patch
deleted file mode 100644
index 444073b..0000000
--- a/patches/glibc-2.13/0015-no-inline-gmon.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-http://bugs.gentoo.org/196245
-http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html
-
-Attached is a patch to add __attribute__ ((noinline)) to
-call_gmon_start.
-
-Without this patch, the sec script that processed initfini.s removes a
-part of inlined call_gmon_start, causing undefined label errors.
-
-This patch solves the problem by forcing gcc not to inline
-call_gmon_start with __attribute__ ((noinline)).
-
-Tested by building for arm-none-lixux-gnueabi. OK to apply?
-
-Kazu Hirata
-
-2006-05-07 Kazu Hirata &lt;kazu@codesourcery.com&gt;
-
- * sysdeps/generic/initfini.c (call_gmon_start): Add
- __attribute__ ((noinline)).
-
----
- sysdeps/generic/initfini.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: glibc-2.13/sysdeps/generic/initfini.c
-===================================================================
---- glibc-2.13.orig/sysdeps/generic/initfini.c
-+++ glibc-2.13/sysdeps/generic/initfini.c
-@@ -70,7 +70,7 @@ asm ("\n/*@TESTS_END*/");
- /* The beginning of _init: */
- asm ("\n/*@_init_PROLOG_BEGINS*/");
-
--static void
-+static void __attribute__ ((noinline))
- call_gmon_start(void)
- {
- extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
diff --git a/patches/glibc-2.13/0016-china.patch b/patches/glibc-2.13/0016-china.patch
deleted file mode 100644
index de4fd2a..0000000
--- a/patches/glibc-2.13/0016-china.patch
+++ /dev/null
@@ -1,35 +0,0 @@
----
- localedata/locales/zh_TW | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-Index: glibc-2.13/localedata/locales/zh_TW
-===================================================================
---- glibc-2.13.orig/localedata/locales/zh_TW
-+++ glibc-2.13/localedata/locales/zh_TW
-@@ -1,7 +1,7 @@
- comment_char %
- escape_char /
- %
--% Chinese language locale for Taiwan R.O.C.
-+% Chinese language locale for Taiwan
- % charmap: BIG5-CP950
- %
- % Original Author:
-@@ -17,7 +17,7 @@ escape_char /
- % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
-
- LC_IDENTIFICATION
--title "Chinese locale for Taiwan R.O.C."
-+title "Chinese locale for Taiwan"
- source ""
- address ""
- contact ""
-@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org"
- tel ""
- fax ""
- language "Chinese"
--territory "Taiwan R.O.C."
-+territory "Taiwan"
- revision "0.2"
- date "2000-08-02"
- %
diff --git a/patches/glibc-2.13/0017-new-valencian-locale.patch b/patches/glibc-2.13/0017-new-valencian-locale.patch
deleted file mode 100644
index 1782dfe..0000000
--- a/patches/glibc-2.13/0017-new-valencian-locale.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-http://bugs.gentoo.org/show_bug.cgi?id=131815
-http://sourceware.org/bugzilla/show_bug.cgi?id=2522
-
----
- localedata/SUPPORTED | 2
- localedata/locales/ca_ES@valencia | 96 ++++++++++++++++++++++++++++++++++++++
- 2 files changed, 98 insertions(+)
-
-Index: glibc-2.13/localedata/SUPPORTED
-===================================================================
---- glibc-2.13.orig/localedata/SUPPORTED
-+++ glibc-2.13/localedata/SUPPORTED
-@@ -72,6 +72,8 @@ ca_AD/ISO-8859-15 \
- ca_ES.UTF-8/UTF-8 \
- ca_ES/ISO-8859-1 \
- ca_ES@euro/ISO-8859-15 \
-+ca_ES.UTF-8@valencia/UTF-8 \
-+ca_ES@valencia/ISO-8859-15 \
- ca_FR.UTF-8/UTF-8 \
- ca_FR/ISO-8859-15 \
- ca_IT.UTF-8/UTF-8 \
-Index: glibc-2.13/localedata/locales/ca_ES@valencia
-===================================================================
---- /dev/null
-+++ glibc-2.13/localedata/locales/ca_ES@valencia
-@@ -0,0 +1,96 @@
-+comment_char %
-+escape_char /
-+%
-+% Valencian (southern Catalan) locale for Spain with Euro
-+%
-+% Note that this locale is almost the same as ca_ES@euro. The point of having
-+% a separate locale is only for PO translations, which have a lot of social
-+% support and are very appreciated by the Valencian-speaking community.
-+%
-+% Contact: Jordi Mallach
-+% Email: jordi@gnu.org
-+% Tel:
-+% Fax:
-+% Language: ca
-+% Territory: ES
-+% Option: euro
-+% Revision: 1.0
-+% Date: 2006-04-06
-+% Application: general
-+% Users: general
-+% Repertoiremap: mnemonic,ds
-+% Charset: ISO-8859-15
-+% Distribution and use is free, also
-+% for commercial purposes.
-+
-+LC_IDENTIFICATION
-+title "Valencian (southern Catalan) locale for Spain with Euro"
-+source ""
-+address ""
-+contact "Jordi Mallach"
-+email "jordi@gnu.org"
-+tel ""
-+fax ""
-+language "Catalan"
-+territory "Spain"
-+revision "1.0"
-+date "2006-04-06"
-+%
-+category "ca_ES@valencia:2006";LC_IDENTIFICATION
-+category "ca_ES@valencia:2006";LC_CTYPE
-+category "ca_ES@valencia:2006";LC_COLLATE
-+category "ca_ES@valencia:2006";LC_MONETARY
-+category "ca_ES@valencia:2006";LC_NUMERIC
-+category "ca_ES@valencia:2006";LC_TIME
-+category "ca_ES@valencia:2006";LC_MESSAGES
-+category "ca_ES@valencia:2006";LC_PAPER
-+category "ca_ES@valencia:2006";LC_NAME
-+category "ca_ES@valencia:2006";LC_ADDRESS
-+category "ca_ES@valencia:2006";LC_TELEPHONE
-+category "ca_ES@valencia:2006";LC_MEASUREMENT
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_COLLATE
-+copy "ca_ES"
-+END LC_COLLATE
-+
-+LC_MONETARY
-+copy "ca_ES"
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+copy "ca_ES"
-+END LC_NUMERIC
-+
-+LC_TIME
-+copy "ca_ES"
-+END LC_TIME
-+
-+LC_MESSAGES
-+copy "ca_ES"
-+END LC_MESSAGES
-+
-+LC_PAPER
-+copy "ca_ES"
-+END LC_PAPER
-+
-+LC_NAME
-+copy "ca_ES"
-+END LC_NAME
-+
-+LC_ADDRESS
-+copy "ca_ES"
-+END LC_ADDRESS
-+
-+LC_TELEPHONE
-+copy "ca_ES"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+copy "ca_ES"
-+END LC_MEASUREMENT
diff --git a/patches/glibc-2.13/0018-strict-aliasing.patch b/patches/glibc-2.13/0018-strict-aliasing.patch
deleted file mode 100644
index 7a3150c..0000000
--- a/patches/glibc-2.13/0018-strict-aliasing.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-workaround strict aliasing warnings on individual files rather than
-forcing the whole build with -fno-strict-aliasing
-
-http://bugs.gentoo.org/155906
-
-note that we leave the logout.c and logwtmp.c warnings alone as the
-code path that invokes the warning should not be executed when the
-warning is applicable.
-
----
- libio/Makefile | 4 ++--
- nis/Makefile | 3 +++
- nptl/Makefile | 1 +
- nss/Makefile | 2 ++
- sunrpc/Makefile | 2 +-
- 5 files changed, 9 insertions(+), 3 deletions(-)
-
-Index: glibc-2.13/libio/Makefile
-===================================================================
---- glibc-2.13.orig/libio/Makefile
-+++ glibc-2.13/libio/Makefile
-@@ -91,7 +91,7 @@ CFLAGS-fseeko.c = $(exceptions)
- CFLAGS-ftello64.c = $(exceptions)
- CFLAGS-ftello.c = $(exceptions)
- CFLAGS-fwide.c = $(exceptions)
--CFLAGS-genops.c = $(exceptions)
-+CFLAGS-genops.c = $(exceptions) -fno-strict-aliasing
- CFLAGS-getc.c = $(exceptions)
- CFLAGS-getchar.c = $(exceptions)
- CFLAGS-getwc.c = $(exceptions)
-@@ -133,7 +133,7 @@ CFLAGS-putwc.c = $(exceptions)
- CFLAGS-putwchar.c = $(exceptions)
- CFLAGS-rewind.c = $(exceptions)
- CFLAGS-wfileops.c = $(exceptions)
--CFLAGS-wgenops.c = $(exceptions)
-+CFLAGS-wgenops.c = $(exceptions) -fno-strict-aliasing
- CFLAGS-oldiofopen.c = $(exceptions)
- CFLAGS-iofopen.c = $(exceptions)
- CFLAGS-iofopen64.c = $(exceptions)
-Index: glibc-2.13/nis/Makefile
-===================================================================
---- glibc-2.13.orig/nis/Makefile
-+++ glibc-2.13/nis/Makefile
-@@ -67,6 +67,9 @@ libnss_nisplus-routines := $(addprefix n
- nss-nisplus nisplus-initgroups
- libnss_nisplus-inhibit-o = $(filter-out .os,$(object-suffixes))
-
-+CFLAGS-nis_xdr.c += -fno-strict-aliasing
-+CFLAGS-yp_xdr.c += -fno-strict-aliasing
-+
- include ../Rules
-
-
-Index: glibc-2.13/nptl/Makefile
-===================================================================
---- glibc-2.13.orig/nptl/Makefile
-+++ glibc-2.13/nptl/Makefile
-@@ -195,6 +195,7 @@ CFLAGS-tcdrain.c = -fexceptions -fasynch
-
- CFLAGS-pt-system.c = -fexceptions
-
-+CFLAGS-unwind-dw2.c += -fno-strict-aliasing
-
- tests = tst-typesizes \
- tst-attr1 tst-attr2 tst-attr3 \
-Index: glibc-2.13/nss/Makefile
-===================================================================
---- glibc-2.13.orig/nss/Makefile
-+++ glibc-2.13/nss/Makefile
-@@ -73,6 +73,8 @@ ifneq ($(build-static-nss),yes)
- libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
- endif
-
-+CFLAGS-nsswitch.c += -fno-strict-aliasing
-+
- include ../Rules
-
-
-Index: glibc-2.13/sunrpc/Makefile
-===================================================================
---- glibc-2.13.orig/sunrpc/Makefile
-+++ glibc-2.13/sunrpc/Makefile
-@@ -127,7 +127,7 @@ CFLAGS-pmap_rmt.c = -fexceptions
- CFLAGS-clnt_perr.c = -fexceptions
- CFLAGS-openchild.c = -fexceptions
-
--CPPFLAGS += -D_RPC_THREAD_SAFE_
-+CPPFLAGS += -D_RPC_THREAD_SAFE_ -fno-strict-aliasing
-
- include ../Rules
-
diff --git a/patches/glibc-2.13/0019-undefine-__i686.patch b/patches/glibc-2.13/0019-undefine-__i686.patch
deleted file mode 100644
index 2928fe6..0000000
--- a/patches/glibc-2.13/0019-undefine-__i686.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-If gcc is configured to generate i686 code or better by default (like
-when using the --with-arch=pentium3 configure option), then the __i686
-macro will always be defined automatically and thus screw up the
-compilation of some .S files.
-http://bugs.gentoo.org/131108
-http://sourceware.org/ml/libc-alpha/2006-04/msg00090.html
-
-2006-04-25 Mike Frysinger <vapier@gentoo.org>
-
- * sysdeps/i386/sysdep.h (__i686): Undefine.
-
----
- nptl/sysdeps/pthread/pt-initfini.c | 3 +++
- sysdeps/i386/sysdep.h | 8 ++++++++
- 2 files changed, 11 insertions(+)
-
-Index: glibc-2.13/nptl/sysdeps/pthread/pt-initfini.c
-===================================================================
---- glibc-2.13.orig/nptl/sysdeps/pthread/pt-initfini.c
-+++ glibc-2.13/nptl/sysdeps/pthread/pt-initfini.c
-@@ -45,6 +45,9 @@
- /* Embed an #include to pull in the alignment and .end directives. */
- asm ("\n#include \"defs.h\"");
-
-+/* Embed an #include to pull in asm settings. */
-+asm ("\n#ifdef __i686__\n#include <sysdep.h>\n#endif");
-+
- /* The initial common code ends here. */
- asm ("\n/*@HEADER_ENDS*/");
-
-Index: glibc-2.13/sysdeps/i386/sysdep.h
-===================================================================
---- glibc-2.13.orig/sysdeps/i386/sysdep.h
-+++ glibc-2.13/sysdeps/i386/sysdep.h
-@@ -18,6 +18,14 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+/*
-+ * When building for i686 targets or better, gcc automatically defines
-+ * '__i686' to '1' for us which causes trouble when using section names
-+ * like '__i686.get_pc_thunk.reg'. Since we check for __i686__ in the
-+ * code, killing '__i686' shouldn't be a problem.
-+ */
-+#undef __i686
-+
- #include <sysdeps/generic/sysdep.h>
-
- #ifdef __ASSEMBLER__
diff --git a/patches/glibc-2.13/0020-dl_execstack-PaX-support.patch b/patches/glibc-2.13/0020-dl_execstack-PaX-support.patch
deleted file mode 100644
index 1bd7432..0000000
--- a/patches/glibc-2.13/0020-dl_execstack-PaX-support.patch
+++ /dev/null
@@ -1,73 +0,0 @@
- With latest versions of glibc, a lot of apps failed on a PaX enabled
- system with:
- cannot enable executable stack as shared object requires: Permission denied
-
- This is due to PaX 'exec-protecting' the stack, and ld.so then trying
- to make the stack executable due to some libraries not containing the
- PT_GNU_STACK section. Bug #32960. <azarah@gentoo.org> (12 Nov 2003).
-
- Patch also NPTL. Bug #116086. <kevquinn@gentoo.org> (20 Dec 2005).
-
----
- nptl/allocatestack.c | 3 ++-
- sysdeps/unix/sysv/linux/dl-execstack.c | 19 ++++++++++++++++---
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-Index: glibc-2.13/nptl/allocatestack.c
-===================================================================
---- glibc-2.13.orig/nptl/allocatestack.c
-+++ glibc-2.13/nptl/allocatestack.c
-@@ -329,7 +329,8 @@ change_stack_perm (struct pthread *pd
- # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
- #endif
- if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
-- return errno;
-+ if (errno != EACCES) /* PAX is enabled */
-+ return errno;
-
- return 0;
- }
-Index: glibc-2.13/sysdeps/unix/sysv/linux/dl-execstack.c
-===================================================================
---- glibc-2.13.orig/sysdeps/unix/sysv/linux/dl-execstack.c
-+++ glibc-2.13/sysdeps/unix/sysv/linux/dl-execstack.c
-@@ -63,7 +63,10 @@ _dl_make_stack_executable (void **stack_
- else
- # endif
- {
-- result = errno;
-+ if (errno == EACCES) /* PAX is enabled */
-+ result = 0;
-+ else
-+ result = errno;
- goto out;
- }
- }
-@@ -89,7 +92,12 @@ _dl_make_stack_executable (void **stack_
- page -= size;
- else
- {
-- if (errno != ENOMEM) /* Unexpected failure mode. */
-+ if (errno == EACCES) /* PAX is enabled */
-+ {
-+ result = 0;
-+ goto out;
-+ }
-+ else if (errno != ENOMEM) /* Unexpected failure mode. */
- {
- result = errno;
- goto out;
-@@ -115,7 +123,12 @@ _dl_make_stack_executable (void **stack_
- page += size;
- else
- {
-- if (errno != ENOMEM) /* Unexpected failure mode. */
-+ if (errno == EACCES) /* PAX is enabled */
-+ {
-+ result = 0;
-+ goto out;
-+ }
-+ else if (errno != ENOMEM) /* Unexpected failure mode. */
- {
- result = errno;
- goto out;
diff --git a/patches/glibc-2.13/0021-pre20040117-pt_pax.patch b/patches/glibc-2.13/0021-pre20040117-pt_pax.patch
deleted file mode 100644
index 674571e..0000000
--- a/patches/glibc-2.13/0021-pre20040117-pt_pax.patch
+++ /dev/null
@@ -1,35 +0,0 @@
----
- elf/elf.h | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-Index: glibc-2.13/elf/elf.h
-===================================================================
---- glibc-2.13.orig/elf/elf.h
-+++ glibc-2.13/elf/elf.h
-@@ -580,6 +580,7 @@ typedef struct
- #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
- #define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
- #define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
-+#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */
- #define PT_LOSUNW 0x6ffffffa
- #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
- #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
-@@ -593,6 +594,18 @@ typedef struct
- #define PF_X (1 << 0) /* Segment is executable */
- #define PF_W (1 << 1) /* Segment is writable */
- #define PF_R (1 << 2) /* Segment is readable */
-+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
-+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
-+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
-+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
-+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
-+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
-+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
-+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
-+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
-+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
-+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
-+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
- #define PF_MASKOS 0x0ff00000 /* OS-specific */
- #define PF_MASKPROC 0xf0000000 /* Processor-specific */
-
diff --git a/patches/glibc-2.13/0022-fpscr_values.patch b/patches/glibc-2.13/0022-fpscr_values.patch
deleted file mode 100644
index c1b7cbc..0000000
--- a/patches/glibc-2.13/0022-fpscr_values.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-http://sources.redhat.com/ml/libc-alpha/2003-06/msg00027.html
-http://www.m17n.org/linux-sh/ml/linux-sh/2003-05/msg00010.html
-
-http://rpm.sh-linux.org/rpm-2004/target/SRPMS/glibc-2.3.3-27.12.src.rpm
-
-http://bugs.gentoo.org/100696
-
----
- sysdeps/unix/sysv/linux/sh/Versions | 1 +
- sysdeps/unix/sysv/linux/sh/sysdep.S | 10 ++++++++++
- 2 files changed, 11 insertions(+)
-
-Index: glibc-2.13/sysdeps/unix/sysv/linux/sh/Versions
-===================================================================
---- glibc-2.13.orig/sysdeps/unix/sysv/linux/sh/Versions
-+++ glibc-2.13/sysdeps/unix/sysv/linux/sh/Versions
-@@ -2,6 +2,7 @@ libc {
- GLIBC_2.2 {
- # functions used in other libraries
- __xstat64; __fxstat64; __lxstat64;
-+ __fpscr_values;
-
- # a*
- alphasort64;
-Index: glibc-2.13/sysdeps/unix/sysv/linux/sh/sysdep.S
-===================================================================
---- glibc-2.13.orig/sysdeps/unix/sysv/linux/sh/sysdep.S
-+++ glibc-2.13/sysdeps/unix/sysv/linux/sh/sysdep.S
-@@ -32,3 +32,13 @@ ENTRY (__syscall_error)
-
- #define __syscall_error __syscall_error_1
- #include <sysdeps/unix/sh/sysdep.S>
-+
-+ .data
-+ .align 3
-+ .globl ___fpscr_values
-+ .type ___fpscr_values, @object
-+ .size ___fpscr_values, 8
-+___fpscr_values:
-+ .long 0
-+ .long 0x80000
-+weak_alias (___fpscr_values, __fpscr_values)
diff --git a/patches/glibc-2.13/0023-Fix-prelinking.patch b/patches/glibc-2.13/0023-Fix-prelinking.patch
deleted file mode 100644
index b63d8f5..0000000
--- a/patches/glibc-2.13/0023-Fix-prelinking.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Andreas Schwab <schwab@redhat.com>
-Date: Tue, 28 Sep 2010 15:11:48 +0200
-Subject: [PATCH] Don't try to write to _rtld_global_ro after performing relro protection
-
-mol: Without this prelinking results in segfaults.
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- ChangeLog | 5 +++++
- elf/rtld.c | 8 ++++----
- 2 files changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index f551860..ea387db 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,8 @@
-+2010-09-28 Andreas Schwab <schwab@redhat.com>
-+
-+ * elf/rtld.c (dl_main): Move setting of GLRO(dl_init_all_dirs)
-+ before performing relro protection.
-+
- 2011-01-17 Ulrich Drepper <drepper@gmail.com>
-
- * version.h (RELEASE): Bump for 2.13 release.
-diff --git a/elf/rtld.c b/elf/rtld.c
-index 8510380..e442528 100644
---- a/elf/rtld.c
-+++ b/elf/rtld.c
-@@ -2179,6 +2179,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
- we need it in the memory handling later. */
- GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist;
-
-+ /* Remember the last search directory added at startup, now that
-+ malloc will no longer be the one from dl-minimal.c. */
-+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
-+
- if (prelinked)
- {
- if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL)
-@@ -2298,10 +2302,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
- lossage);
- }
-
-- /* Remember the last search directory added at startup, now that
-- malloc will no longer be the one from dl-minimal.c. */
-- GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
--
- if (! prelinked && rtld_multiple_ref)
- {
- /* There was an explicit ref to the dynamic linker as a shared lib.
---
-1.7.2.3
-
diff --git a/patches/glibc-2.13/0024-optimized-string-functions-for-NEON-from-Linaro.patch b/patches/glibc-2.13/0024-optimized-string-functions-for-NEON-from-Linaro.patch
deleted file mode 100644
index 3e56ec8..0000000
--- a/patches/glibc-2.13/0024-optimized-string-functions-for-NEON-from-Linaro.patch
+++ /dev/null
@@ -1,1295 +0,0 @@
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Thu, 15 Sep 2011 16:50:56 +0200
-Subject: [PATCH] optimized string functions for NEON from Linaro
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- .../sysdeps/arm/eabi/arm/cortex-a8/memchr.S | 150 +++++++
- .../sysdeps/arm/eabi/arm/cortex-a8/memcpy.S | 152 +++++++
- .../sysdeps/arm/eabi/arm/cortex-a8/memset.S | 118 +++++
- .../sysdeps/arm/eabi/arm/cortex-a8/strchr.S | 76 ++++
- .../sysdeps/arm/eabi/arm/cortex-a8/strcmp.c | 449 ++++++++++++++++++++
- .../sysdeps/arm/eabi/arm/cortex-a8/strcpy.c | 172 ++++++++
- .../sysdeps/arm/eabi/arm/cortex-a8/strlen.S | 111 +++++
- 7 files changed, 1228 insertions(+), 0 deletions(-)
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcmp.c
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
- create mode 100644 cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
-new file mode 100644
-index 0000000..8f5aaa9
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
-@@ -0,0 +1,150 @@
-+/* Copyright (c) 2010-2011, Linaro Limited
-+ All rights reserved.
-+
-+ Redistribution and use in source and binary forms, with or without
-+ modification, are permitted provided that the following conditions
-+ are met:
-+
-+ * Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+
-+ * Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+
-+ * Neither the name of Linaro Limited nor the names of its
-+ contributors may be used to endorse or promote products derived
-+ from this software without specific prior written permission.
-+
-+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ Written by Dave Gilbert <david.gilbert@linaro.org>
-+
-+ This memchr routine is optimised on a Cortex-A9 and should work on
-+ all ARMv7 processors. It has a fast past for short sizes, and has
-+ an optimised path for large data sets; the worst case is finding the
-+ match early in a large data set. */
-+
-+@ 2011-02-07 david.gilbert@linaro.org
-+@ Extracted from local git a5b438d861
-+@ 2011-07-14 david.gilbert@linaro.org
-+@ Import endianness fix from local git ea786f1b
-+
-+ .syntax unified
-+ .arch armv7-a
-+
-+@ this lets us check a flag in a 00/ff byte easily in either endianness
-+#ifdef __ARMEB__
-+#define CHARTSTMASK(c) 1<<(31-(c*8))
-+#else
-+#define CHARTSTMASK(c) 1<<(c*8)
-+#endif
-+ .text
-+ .thumb
-+
-+@ ---------------------------------------------------------------------------
-+ .thumb_func
-+ .align 2
-+ .p2align 4,,15
-+ .global memchr
-+ .type memchr,%function
-+memchr:
-+ @ r0 = start of memory to scan
-+ @ r1 = character to look for
-+ @ r2 = length
-+ @ returns r0 = pointer to character or NULL if not found
-+ and r1,r1,#0xff @ Don't think we can trust the caller to actually pass a char
-+
-+ cmp r2,#16 @ If it's short don't bother with anything clever
-+ blt 20f
-+
-+ tst r0, #7 @ If it's already aligned skip the next bit
-+ beq 10f
-+
-+ @ Work up to an aligned point
-+5:
-+ ldrb r3, [r0],#1
-+ subs r2, r2, #1
-+ cmp r3, r1
-+ beq 50f @ If it matches exit found
-+ tst r0, #7
-+ cbz r2, 40f @ If we run off the end, exit not found
-+ bne 5b @ If not aligned yet then do next byte
-+
-+10:
-+ @ At this point, we are aligned, we know we have at least 8 bytes to work with
-+ push {r4,r5,r6,r7}
-+ orr r1, r1, r1, lsl #8 @ expand the match word across to all bytes
-+ orr r1, r1, r1, lsl #16
-+ bic r4, r2, #7 @ Number of double words to work with
-+ mvns r7, #0 @ all F's
-+ movs r3, #0
-+
-+15:
-+ ldmia r0!,{r5,r6}
-+ subs r4, r4, #8
-+ eor r5,r5, r1 @ Get it so that r5,r6 have 00's where the bytes match the target
-+ eor r6,r6, r1
-+ uadd8 r5, r5, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
-+ sel r5, r3, r7 @ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
-+ uadd8 r6, r6, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
-+ sel r6, r5, r7 @ chained....bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
-+ cbnz r6, 60f
-+ bne 15b @ (Flags from the subs above) If not run out of bytes then go around again
-+
-+ pop {r4,r5,r6,r7}
-+ and r1,r1,#0xff @ Get r1 back to a single character from the expansion above
-+ and r2,r2,#7 @ Leave the count remaining as the number after the double words have been done
-+
-+20:
-+ cbz r2, 40f @ 0 length or hit the end already then not found
-+
-+21: @ Post aligned section, or just a short call
-+ ldrb r3,[r0],#1
-+ subs r2,r2,#1
-+ eor r3,r3,r1 @ r3 = 0 if match - doesn't break flags from sub
-+ cbz r3, 50f
-+ bne 21b @ on r2 flags
-+
-+40:
-+ movs r0,#0 @ not found
-+ bx lr
-+
-+50:
-+ subs r0,r0,#1 @ found
-+ bx lr
-+
-+60: @ We're here because the fast path found a hit - now we have to track down exactly which word it was
-+ @ r0 points to the start of the double word after the one that was tested
-+ @ r5 has the 00/ff pattern for the first word, r6 has the chained value
-+ cmp r5, #0
-+ itte eq
-+ moveq r5, r6 @ the end is in the 2nd word
-+ subeq r0,r0,#3 @ Points to 2nd byte of 2nd word
-+ subne r0,r0,#7 @ or 2nd byte of 1st word
-+
-+ @ r0 currently points to the 3rd byte of the word containing the hit
-+ tst r5, # CHARTSTMASK(0) @ 1st character
-+ bne 61f
-+ adds r0,r0,#1
-+ tst r5, # CHARTSTMASK(1) @ 2nd character
-+ ittt eq
-+ addeq r0,r0,#1
-+ tsteq r5, # (3<<15) @ 2nd & 3rd character
-+ @ If not the 3rd must be the last one
-+ addeq r0,r0,#1
-+
-+61:
-+ pop {r4,r5,r6,r7}
-+ subs r0,r0,#1
-+ bx lr
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
-new file mode 100644
-index 0000000..3be24ca
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
-@@ -0,0 +1,152 @@
-+/* Copyright (c) 2010-2011, Linaro Limited
-+ All rights reserved.
-+
-+ Redistribution and use in source and binary forms, with or without
-+ modification, are permitted provided that the following conditions
-+ are met:
-+
-+ * Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+
-+ * Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+
-+ * Neither the name of Linaro Limited nor the names of its
-+ contributors may be used to endorse or promote products derived
-+ from this software without specific prior written permission.
-+
-+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ Written by Dave Gilbert <david.gilbert@linaro.org>
-+
-+ This memcpy routine is optimised on a Cortex-A9 and should work on
-+ all ARMv7 processors with NEON. */
-+
-+@ 2011-09-01 david.gilbert@linaro.org
-+@ Extracted from local git 2f11b436
-+
-+ .syntax unified
-+ .arch armv7-a
-+
-+@ this lets us check a flag in a 00/ff byte easily in either endianness
-+#ifdef __ARMEB__
-+#define CHARTSTMASK(c) 1<<(31-(c*8))
-+#else
-+#define CHARTSTMASK(c) 1<<(c*8)
-+#endif
-+ .text
-+ .thumb
-+
-+@ ---------------------------------------------------------------------------
-+ .thumb_func
-+ .align 2
-+ .p2align 4,,15
-+ .global memcpy
-+ .type memcpy,%function
-+memcpy:
-+ @ r0 = dest
-+ @ r1 = source
-+ @ r2 = count
-+ @ returns dest in r0
-+ @ Overlaps of source/dest not allowed according to spec
-+ @ Note this routine relies on v7 misaligned loads/stores
-+ pld [r1]
-+ mov r12, r0 @ stash original r0
-+ cmp r2,#32
-+ blt 10f @ take the small copy case separately
-+
-+ @ test for either source or destination being misaligned
-+ @ (We only rely on word align)
-+ tst r0,#3
-+ it eq
-+ tsteq r1,#3
-+ bne 30f @ misaligned case
-+
-+4:
-+ @ at this point we are word (or better) aligned and have at least
-+ @ 32 bytes to play with
-+
-+ @ If it's a huge copy, try Neon
-+ cmp r2, #128*1024
-+ bge 35f @ Sharing general non-aligned case here, aligned could be faster
-+
-+ push {r3,r4,r5,r6,r7,r8,r10,r11}
-+5:
-+ ldmia r1!,{r3,r4,r5,r6,r7,r8,r10,r11}
-+ sub r2,r2,#32
-+ pld [r1,#96]
-+ cmp r2,#32
-+ stmia r0!,{r3,r4,r5,r6,r7,r8,r10,r11}
-+ bge 5b
-+
-+ pop {r3,r4,r5,r6,r7,r8,r10,r11}
-+ @ We are now down to less than 32 bytes
-+ cbz r2,15f @ quick exit for the case where we copied a multiple of 32
-+
-+10: @ small copies (not necessarily aligned - note might be slightly more than 32bytes)
-+ cmp r2,#4
-+ blt 12f
-+11:
-+ sub r2,r2,#4
-+ cmp r2,#4
-+ ldr r3, [r1],#4
-+ str r3, [r0],#4
-+ bge 11b
-+12:
-+ tst r2,#2
-+ itt ne
-+ ldrhne r3, [r1],#2
-+ strhne r3, [r0],#2
-+
-+ tst r2,#1
-+ itt ne
-+ ldrbne r3, [r1],#1
-+ strbne r3, [r0],#1
-+
-+15: @ exit
-+ mov r0,r12 @ restore r0
-+ bx lr
-+
-+ .align 2
-+ .p2align 4,,15
-+30: @ non-aligned - at least 32 bytes to play with
-+ @ Test for co-misalignment
-+ eor r3, r0, r1
-+ tst r3,#3
-+ beq 50f
-+
-+ @ Use Neon for misaligned
-+35:
-+ vld1.8 {d0,d1,d2,d3}, [r1]!
-+ sub r2,r2,#32
-+ cmp r2,#32
-+ pld [r1,#96]
-+ vst1.8 {d0,d1,d2,d3}, [r0]!
-+ bge 35b
-+ b 10b @ TODO: Probably a bad idea to switch to ARM at this point
-+
-+ .align 2
-+ .p2align 4,,15
-+50: @ Co-misaligned
-+ @ At this point we've got at least 32 bytes
-+51:
-+ ldrb r3,[r1],#1
-+ sub r2,r2,#1
-+ strb r3,[r0],#1
-+ tst r0,#7
-+ bne 51b
-+
-+ cmp r2,#32
-+ blt 10b
-+ b 4b
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
-new file mode 100644
-index 0000000..921cb75
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
-@@ -0,0 +1,118 @@
-+/* Copyright (c) 2010-2011, Linaro Limited
-+ All rights reserved.
-+
-+ Redistribution and use in source and binary forms, with or without
-+ modification, are permitted provided that the following conditions
-+ are met:
-+
-+ * Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+
-+ * Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+
-+ * Neither the name of Linaro Limited nor the names of its
-+ contributors may be used to endorse or promote products derived
-+ from this software without specific prior written permission.
-+
-+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ Written by Dave Gilbert <david.gilbert@linaro.org>
-+
-+ This memset routine is optimised on a Cortex-A9 and should work on
-+ all ARMv7 processors. */
-+
-+ .syntax unified
-+ .arch armv7-a
-+
-+@ 2011-08-30 david.gilbert@linaro.org
-+@ Extracted from local git 2f11b436
-+
-+@ this lets us check a flag in a 00/ff byte easily in either endianness
-+#ifdef __ARMEB__
-+#define CHARTSTMASK(c) 1<<(31-(c*8))
-+#else
-+#define CHARTSTMASK(c) 1<<(c*8)
-+#endif
-+ .text
-+ .thumb
-+
-+@ ---------------------------------------------------------------------------
-+ .thumb_func
-+ .align 2
-+ .p2align 4,,15
-+ .global memset
-+ .type memset,%function
-+memset:
-+ @ r0 = address
-+ @ r1 = character
-+ @ r2 = count
-+ @ returns original address in r0
-+
-+ mov r3, r0 @ Leave r0 alone
-+ cbz r2, 10f @ Exit if 0 length
-+
-+ tst r0, #7
-+ beq 2f @ Already aligned
-+
-+ @ Ok, so we're misaligned here
-+1:
-+ strb r1, [r3], #1
-+ subs r2,r2,#1
-+ tst r3, #7
-+ cbz r2, 10f @ Exit if we hit the end
-+ bne 1b @ go round again if still misaligned
-+
-+2:
-+ @ OK, so we're aligned
-+ push {r4,r5,r6,r7}
-+ bics r4, r2, #15 @ if less than 16 bytes then need to finish it off
-+ beq 5f
-+
-+3:
-+ @ POSIX says that ch is cast to an unsigned char. A uxtb is one
-+ @ byte and takes two cycles, where an AND is four bytes but one
-+ @ cycle.
-+ and r1, #0xFF
-+ orr r1, r1, r1, lsl#8 @ Same character into all bytes
-+ orr r1, r1, r1, lsl#16
-+ mov r5,r1
-+ mov r6,r1
-+ mov r7,r1
-+
-+4:
-+ subs r4,r4,#16
-+ stmia r3!,{r1,r5,r6,r7}
-+ bne 4b
-+ and r2,r2,#15
-+
-+ @ At this point we're still aligned and we have upto align-1 bytes left to right
-+ @ we can avoid some of the byte-at-a time now by testing for some big chunks
-+ tst r2,#8
-+ itt ne
-+ subne r2,r2,#8
-+ stmiane r3!,{r1,r5}
-+
-+5:
-+ pop {r4,r5,r6,r7}
-+ cbz r2, 10f
-+
-+ @ Got to do any last < alignment bytes
-+6:
-+ subs r2,r2,#1
-+ strb r1,[r3],#1
-+ bne 6b
-+
-+10:
-+ bx lr @ goodbye
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
-new file mode 100644
-index 0000000..8875dbf
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
-@@ -0,0 +1,76 @@
-+/* Copyright (c) 2010-2011, Linaro Limited
-+ All rights reserved.
-+
-+ Redistribution and use in source and binary forms, with or without
-+ modification, are permitted provided that the following conditions
-+ are met:
-+
-+ * Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+
-+ * Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+
-+ * Neither the name of Linaro Limited nor the names of its
-+ contributors may be used to endorse or promote products derived
-+ from this software without specific prior written permission.
-+
-+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ Written by Dave Gilbert <david.gilbert@linaro.org>
-+
-+ A very simple strchr routine, from benchmarks on A9 it's a bit faster than
-+ the current version in eglibc (2.12.1-0ubuntu14 package)
-+ I don't think doing a word at a time version is worth it since a lot
-+ of strchr cases are very short anyway */
-+
-+@ 2011-02-07 david.gilbert@linaro.org
-+@ Extracted from local git a5b438d861
-+
-+ .syntax unified
-+ .arch armv7-a
-+
-+ .text
-+ .thumb
-+
-+@ ---------------------------------------------------------------------------
-+
-+ .thumb_func
-+ .align 2
-+ .p2align 4,,15
-+ .global strchr
-+ .type strchr,%function
-+strchr:
-+ @ r0 = start of string
-+ @ r1 = character to match
-+ @ returns NULL for no match, or a pointer to the match
-+ and r1,r1, #255
-+
-+1:
-+ ldrb r2,[r0],#1
-+ cmp r2,r1
-+ cbz r2,10f
-+ bne 1b
-+
-+ @ We're here if it matched
-+5:
-+ subs r0,r0,#1
-+ bx lr
-+
-+10:
-+ @ We're here if we ran off the end
-+ cmp r1, #0 @ Corner case - you're allowed to search for the nil and get a pointer to it
-+ beq 5b @ A bit messy, if it's common we should branch at the start to a special loop
-+ mov r0,#0
-+ bx lr
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcmp.c b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcmp.c
-new file mode 100644
-index 0000000..fb2280d
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcmp.c
-@@ -0,0 +1,449 @@
-+/*
-+ * Copyright (c) 2008 ARM Ltd
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. The name of the company may not be used to endorse or promote
-+ * products derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include <string.h>
-+#include <memcopy.h>
-+
-+#undef strcmp
-+
-+
-+#ifdef __ARMEB__
-+#define SHFT2LSB "lsl"
-+#define SHFT2MSB "lsr"
-+#define MSB "0x000000ff"
-+#define LSB "0xff000000"
-+#else
-+#define SHFT2LSB "lsr"
-+#define SHFT2MSB "lsl"
-+#define MSB "0xff000000"
-+#define LSB "0x000000ff"
-+#endif
-+
-+#ifdef __thumb2__
-+#define magic1(REG) "#0x01010101"
-+#define magic2(REG) "#0x80808080"
-+#else
-+#define magic1(REG) #REG
-+#define magic2(REG) #REG ", lsl #7"
-+#endif
-+
-+int
-+__attribute__((naked)) strcmp (const char* s1, const char* s2)
-+{
-+ asm(
-+#if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
-+ (defined (__thumb__) && !defined (__thumb2__)))
-+ "pld [r0, #0]\n\t"
-+ "pld [r1, #0]\n\t"
-+ "eor r2, r0, r1\n\t"
-+ "tst r2, #3\n\t"
-+ /* Strings not at same byte offset from a word boundary. */
-+ "bne strcmp_unaligned\n\t"
-+ "ands r2, r0, #3\n\t"
-+ "bic r0, r0, #3\n\t"
-+ "bic r1, r1, #3\n\t"
-+ "ldr ip, [r0], #4\n\t"
-+ "it eq\n\t"
-+ "ldreq r3, [r1], #4\n\t"
-+ "beq 1f\n\t"
-+ /* Although s1 and s2 have identical initial alignment, they are
-+ not currently word aligned. Rather than comparing bytes,
-+ make sure that any bytes fetched from before the addressed
-+ bytes are forced to 0xff. Then they will always compare
-+ equal. */
-+ "eor r2, r2, #3\n\t"
-+ "lsl r2, r2, #3\n\t"
-+ "mvn r3, #"MSB"\n\t"
-+ SHFT2LSB" r2, r3, r2\n\t"
-+ "ldr r3, [r1], #4\n\t"
-+ "orr ip, ip, r2\n\t"
-+ "orr r3, r3, r2\n"
-+ "1:\n\t"
-+#ifndef __thumb2__
-+ /* Load the 'magic' constant 0x01010101. */
-+ "str r4, [sp, #-4]!\n\t"
-+ "mov r4, #1\n\t"
-+ "orr r4, r4, r4, lsl #8\n\t"
-+ "orr r4, r4, r4, lsl #16\n"
-+#endif
-+ ".p2align 2\n"
-+ "4:\n\t"
-+ "pld [r0, #8]\n\t"
-+ "pld [r1, #8]\n\t"
-+ "sub r2, ip, "magic1(r4)"\n\t"
-+ "cmp ip, r3\n\t"
-+ "itttt eq\n\t"
-+ /* check for any zero bytes in first word */
-+ "biceq r2, r2, ip\n\t"
-+ "tsteq r2, "magic2(r4)"\n\t"
-+ "ldreq ip, [r0], #4\n\t"
-+ "ldreq r3, [r1], #4\n\t"
-+ "beq 4b\n"
-+ "2:\n\t"
-+ /* There's a zero or a different byte in the word */
-+ SHFT2MSB" r0, ip, #24\n\t"
-+ SHFT2LSB" ip, ip, #8\n\t"
-+ "cmp r0, #1\n\t"
-+ "it cs\n\t"
-+ "cmpcs r0, r3, "SHFT2MSB" #24\n\t"
-+ "it eq\n\t"
-+ SHFT2LSB"eq r3, r3, #8\n\t"
-+ "beq 2b\n\t"
-+ /* On a big-endian machine, r0 contains the desired byte in bits
-+ 0-7; on a little-endian machine they are in bits 24-31. In
-+ both cases the other bits in r0 are all zero. For r3 the
-+ interesting byte is at the other end of the word, but the
-+ other bits are not necessarily zero. We need a signed result
-+ representing the differnece in the unsigned bytes, so for the
-+ little-endian case we can't just shift the interesting bits
-+ up. */
-+#ifdef __ARMEB__
-+ "sub r0, r0, r3, lsr #24\n\t"
-+#else
-+ "and r3, r3, #255\n\t"
-+#ifdef __thumb2__
-+ /* No RSB instruction in Thumb2 */
-+ "lsr r0, r0, #24\n\t"
-+ "sub r0, r0, r3\n\t"
-+#else
-+ "rsb r0, r3, r0, lsr #24\n\t"
-+#endif
-+#endif
-+#ifndef __thumb2__
-+ "ldr r4, [sp], #4\n\t"
-+#endif
-+ "BX LR"
-+#elif (defined (__thumb__) && !defined (__thumb2__))
-+ "1:\n\t"
-+ "ldrb r2, [r0]\n\t"
-+ "ldrb r3, [r1]\n\t"
-+ "add r0, r0, #1\n\t"
-+ "add r1, r1, #1\n\t"
-+ "cmp r2, #0\n\t"
-+ "beq 2f\n\t"
-+ "cmp r2, r3\n\t"
-+ "beq 1b\n\t"
-+ "2:\n\t"
-+ "sub r0, r2, r3\n\t"
-+ "bx lr"
-+#else
-+ "3:\n\t"
-+ "ldrb r2, [r0], #1\n\t"
-+ "ldrb r3, [r1], #1\n\t"
-+ "cmp r2, #1\n\t"
-+ "it cs\n\t"
-+ "cmpcs r2, r3\n\t"
-+ "beq 3b\n\t"
-+ "sub r0, r2, r3\n\t"
-+ "BX LR"
-+#endif
-+ );
-+}
-+
-+#if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
-+ (defined (__thumb__) && !defined (__thumb2__)))
-+static int __attribute__((naked, used))
-+strcmp_unaligned(const char* s1, const char* s2)
-+{
-+#if 0
-+ /* The assembly code below is based on the following alogrithm. */
-+#ifdef __ARMEB__
-+#define RSHIFT <<
-+#define LSHIFT >>
-+#else
-+#define RSHIFT >>
-+#define LSHIFT <<
-+#endif
-+
-+#define body(shift) \
-+ mask = 0xffffffffU RSHIFT shift; \
-+ w1 = *wp1++; \
-+ w2 = *wp2++; \
-+ do \
-+ { \
-+ t1 = w1 & mask; \
-+ if (__builtin_expect(t1 != w2 RSHIFT shift, 0)) \
-+ { \
-+ w2 RSHIFT= shift; \
-+ break; \
-+ } \
-+ if (__builtin_expect(((w1 - b1) & ~w1) & (b1 << 7), 0)) \
-+ { \
-+ /* See comment in assembler below re syndrome on big-endian */\
-+ if ((((w1 - b1) & ~w1) & (b1 << 7)) & mask) \
-+ w2 RSHIFT= shift; \
-+ else \
-+ { \
-+ w2 = *wp2; \
-+ t1 = w1 RSHIFT (32 - shift); \
-+ w2 = (w2 LSHIFT (32 - shift)) RSHIFT (32 - shift); \
-+ } \
-+ break; \
-+ } \
-+ w2 = *wp2++; \
-+ t1 ^= w1; \
-+ if (__builtin_expect(t1 != w2 LSHIFT (32 - shift), 0)) \
-+ { \
-+ t1 = w1 >> (32 - shift); \
-+ w2 = (w2 << (32 - shift)) RSHIFT (32 - shift); \
-+ break; \
-+ } \
-+ w1 = *wp1++; \
-+ } while (1)
-+
-+ const unsigned* wp1;
-+ const unsigned* wp2;
-+ unsigned w1, w2;
-+ unsigned mask;
-+ unsigned shift;
-+ unsigned b1 = 0x01010101;
-+ char c1, c2;
-+ unsigned t1;
-+
-+ while (((unsigned) s1) & 3)
-+ {
-+ c1 = *s1++;
-+ c2 = *s2++;
-+ if (c1 == 0 || c1 != c2)
-+ return c1 - (int)c2;
-+ }
-+ wp1 = (unsigned*) (((unsigned)s1) & ~3);
-+ wp2 = (unsigned*) (((unsigned)s2) & ~3);
-+ t1 = ((unsigned) s2) & 3;
-+ if (t1 == 1)
-+ {
-+ body(8);
-+ }
-+ else if (t1 == 2)
-+ {
-+ body(16);
-+ }
-+ else
-+ {
-+ body (24);
-+ }
-+
-+ do
-+ {
-+#ifdef __ARMEB__
-+ c1 = (char) t1 >> 24;
-+ c2 = (char) w2 >> 24;
-+#else
-+ c1 = (char) t1;
-+ c2 = (char) w2;
-+#endif
-+ t1 RSHIFT= 8;
-+ w2 RSHIFT= 8;
-+ } while (c1 != 0 && c1 == c2);
-+ return c1 - c2;
-+#endif
-+
-+ asm("wp1 .req r0\n\t"
-+ "wp2 .req r1\n\t"
-+ "b1 .req r2\n\t"
-+ "w1 .req r4\n\t"
-+ "w2 .req r5\n\t"
-+ "t1 .req ip\n\t"
-+ "@ r3 is scratch\n"
-+
-+ /* First of all, compare bytes until wp1(sp1) is word-aligned. */
-+ "1:\n\t"
-+ "tst wp1, #3\n\t"
-+ "beq 2f\n\t"
-+ "ldrb r2, [wp1], #1\n\t"
-+ "ldrb r3, [wp2], #1\n\t"
-+ "cmp r2, #1\n\t"
-+ "it cs\n\t"
-+ "cmpcs r2, r3\n\t"
-+ "beq 1b\n\t"
-+ "sub r0, r2, r3\n\t"
-+ "BX LR\n"
-+
-+ "2:\n\t"
-+ "str r5, [sp, #-4]!\n\t"
-+ "str r4, [sp, #-4]!\n\t"
-+ // "stmfd sp!, {r4, r5}\n\t"
-+ "mov b1, #1\n\t"
-+ "orr b1, b1, b1, lsl #8\n\t"
-+ "orr b1, b1, b1, lsl #16\n\t"
-+
-+ "and t1, wp2, #3\n\t"
-+ "bic wp2, wp2, #3\n\t"
-+ "ldr w1, [wp1], #4\n\t"
-+ "ldr w2, [wp2], #4\n\t"
-+ "cmp t1, #2\n\t"
-+ "beq 2f\n\t"
-+ "bhi 3f\n"
-+
-+ /* Critical inner Loop: Block with 3 bytes initial overlap */
-+ ".p2align 2\n"
-+ "1:\n\t"
-+ "bic t1, w1, #"MSB"\n\t"
-+ "cmp t1, w2, "SHFT2LSB" #8\n\t"
-+ "sub r3, w1, b1\n\t"
-+ "bic r3, r3, w1\n\t"
-+ "bne 4f\n\t"
-+ "ands r3, r3, b1, lsl #7\n\t"
-+ "it eq\n\t"
-+ "ldreq w2, [wp2], #4\n\t"
-+ "bne 5f\n\t"
-+ "eor t1, t1, w1\n\t"
-+ "cmp t1, w2, "SHFT2MSB" #24\n\t"
-+ "bne 6f\n\t"
-+ "ldr w1, [wp1], #4\n\t"
-+ "b 1b\n"
-+ "4:\n\t"
-+ SHFT2LSB" w2, w2, #8\n\t"
-+ "b 8f\n"
-+
-+ "5:\n\t"
-+#ifdef __ARMEB__
-+ /* The syndrome value may contain false ones if the string ends
-+ with the bytes 0x01 0x00 */
-+ "tst w1, #0xff000000\n\t"
-+ "itt ne\n\t"
-+ "tstne w1, #0x00ff0000\n\t"
-+ "tstne w1, #0x0000ff00\n\t"
-+ "beq 7f\n\t"
-+#else
-+ "bics r3, r3, #0xff000000\n\t"
-+ "bne 7f\n\t"
-+#endif
-+ "ldrb w2, [wp2]\n\t"
-+ SHFT2LSB" t1, w1, #24\n\t"
-+#ifdef __ARMEB__
-+ "lsl w2, w2, #24\n\t"
-+#endif
-+ "b 8f\n"
-+
-+ "6:\n\t"
-+ SHFT2LSB" t1, w1, #24\n\t"
-+ "and w2, w2, #"LSB"\n\t"
-+ "b 8f\n"
-+
-+ /* Critical inner Loop: Block with 2 bytes initial overlap */
-+ ".p2align 2\n"
-+ "2:\n\t"
-+ SHFT2MSB" t1, w1, #16\n\t"
-+ "sub r3, w1, b1\n\t"
-+ SHFT2LSB" t1, t1, #16\n\t"
-+ "bic r3, r3, w1\n\t"
-+ "cmp t1, w2, "SHFT2LSB" #16\n\t"
-+ "bne 4f\n\t"
-+ "ands r3, r3, b1, lsl #7\n\t"
-+ "it eq\n\t"
-+ "ldreq w2, [wp2], #4\n\t"
-+ "bne 5f\n\t"
-+ "eor t1, t1, w1\n\t"
-+ "cmp t1, w2, "SHFT2MSB" #16\n\t"
-+ "bne 6f\n\t"
-+ "ldr w1, [wp1], #4\n\t"
-+ "b 2b\n"
-+
-+ "5:\n\t"
-+#ifdef __ARMEB__
-+ /* The syndrome value may contain false ones if the string ends
-+ with the bytes 0x01 0x00 */
-+ "tst w1, #0xff000000\n\t"
-+ "it ne\n\t"
-+ "tstne w1, #0x00ff0000\n\t"
-+ "beq 7f\n\t"
-+#else
-+ "lsls r3, r3, #16\n\t"
-+ "bne 7f\n\t"
-+#endif
-+ "ldrh w2, [wp2]\n\t"
-+ SHFT2LSB" t1, w1, #16\n\t"
-+#ifdef __ARMEB__
-+ "lsl w2, w2, #16\n\t"
-+#endif
-+ "b 8f\n"
-+
-+ "6:\n\t"
-+ SHFT2MSB" w2, w2, #16\n\t"
-+ SHFT2LSB" t1, w1, #16\n\t"
-+ "4:\n\t"
-+ SHFT2LSB" w2, w2, #16\n\t"
-+ "b 8f\n\t"
-+
-+ /* Critical inner Loop: Block with 1 byte initial overlap */
-+ ".p2align 2\n"
-+ "3:\n\t"
-+ "and t1, w1, #"LSB"\n\t"
-+ "cmp t1, w2, "SHFT2LSB" #24\n\t"
-+ "sub r3, w1, b1\n\t"
-+ "bic r3, r3, w1\n\t"
-+ "bne 4f\n\t"
-+ "ands r3, r3, b1, lsl #7\n\t"
-+ "it eq\n\t"
-+ "ldreq w2, [wp2], #4\n\t"
-+ "bne 5f\n\t"
-+ "eor t1, t1, w1\n\t"
-+ "cmp t1, w2, "SHFT2MSB" #8\n\t"
-+ "bne 6f\n\t"
-+ "ldr w1, [wp1], #4\n\t"
-+ "b 3b\n"
-+ "4:\n\t"
-+ SHFT2LSB" w2, w2, #24\n\t"
-+ "b 8f\n"
-+ "5:\n\t"
-+ /* The syndrome value may contain false ones if the string ends
-+ with the bytes 0x01 0x00 */
-+ "tst w1, #"LSB"\n\t"
-+ "beq 7f\n\t"
-+ "ldr w2, [wp2], #4\n"
-+ "6:\n\t"
-+ SHFT2LSB" t1, w1, #8\n\t"
-+ "bic w2, w2, #"MSB"\n\t"
-+ "b 8f\n"
-+ "7:\n\t"
-+ "mov r0, #0\n\t"
-+ // "ldmfd sp!, {r4, r5}\n\t"
-+ "ldr r4, [sp], #4\n\t"
-+ "ldr r5, [sp], #4\n\t"
-+ "BX LR\n"
-+ "8:\n\t"
-+ "and r2, t1, #"LSB"\n\t"
-+ "and r0, w2, #"LSB"\n\t"
-+ "cmp r0, #1\n\t"
-+ "it cs\n\t"
-+ "cmpcs r0, r2\n\t"
-+ "itt eq\n\t"
-+ SHFT2LSB"eq t1, t1, #8\n\t"
-+ SHFT2LSB"eq w2, w2, #8\n\t"
-+ "beq 8b\n\t"
-+ "sub r0, r2, r0\n\t"
-+ // "ldmfd sp!, {r4, r5}\n\t"
-+ "ldr r4, [sp], #4\n\t"
-+ "ldr r5, [sp], #4\n\t"
-+ "BX LR");
-+}
-+
-+#endif
-+
-+libc_hidden_builtin_def (strcmp)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
-new file mode 100644
-index 0000000..aa8cb06
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
-@@ -0,0 +1,172 @@
-+/*
-+ * Copyright (c) 2008 ARM Ltd
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. The name of the company may not be used to endorse or promote
-+ * products derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include <string.h>
-+#include <memcopy.h>
-+
-+#undef strcmp
-+
-+
-+#ifdef __thumb2__
-+#define magic1(REG) "#0x01010101"
-+#define magic2(REG) "#0x80808080"
-+#else
-+#define magic1(REG) #REG
-+#define magic2(REG) #REG ", lsl #7"
-+#endif
-+
-+char* __attribute__((naked))
-+strcpy (char* dst, const char* src)
-+{
-+ asm (
-+#if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
-+ (defined (__thumb__) && !defined (__thumb2__)))
-+ "pld [r1, #0]\n\t"
-+ "eor r2, r0, r1\n\t"
-+ "mov ip, r0\n\t"
-+ "tst r2, #3\n\t"
-+ "bne 4f\n\t"
-+ "tst r1, #3\n\t"
-+ "bne 3f\n"
-+ "5:\n\t"
-+#ifndef __thumb2__
-+ "str r5, [sp, #-4]!\n\t"
-+ "mov r5, #0x01\n\t"
-+ "orr r5, r5, r5, lsl #8\n\t"
-+ "orr r5, r5, r5, lsl #16\n\t"
-+#endif
-+
-+ "str r4, [sp, #-4]!\n\t"
-+ "tst r1, #4\n\t"
-+ "ldr r3, [r1], #4\n\t"
-+ "beq 2f\n\t"
-+ "sub r2, r3, "magic1(r5)"\n\t"
-+ "bics r2, r2, r3\n\t"
-+ "tst r2, "magic2(r5)"\n\t"
-+ "itt eq\n\t"
-+ "streq r3, [ip], #4\n\t"
-+ "ldreq r3, [r1], #4\n"
-+ "bne 1f\n\t"
-+ /* Inner loop. We now know that r1 is 64-bit aligned, so we
-+ can safely fetch up to two words. This allows us to avoid
-+ load stalls. */
-+ ".p2align 2\n"
-+ "2:\n\t"
-+ "pld [r1, #8]\n\t"
-+ "ldr r4, [r1], #4\n\t"
-+ "sub r2, r3, "magic1(r5)"\n\t"
-+ "bics r2, r2, r3\n\t"
-+ "tst r2, "magic2(r5)"\n\t"
-+ "sub r2, r4, "magic1(r5)"\n\t"
-+ "bne 1f\n\t"
-+ "str r3, [ip], #4\n\t"
-+ "bics r2, r2, r4\n\t"
-+ "tst r2, "magic2(r5)"\n\t"
-+ "itt eq\n\t"
-+ "ldreq r3, [r1], #4\n\t"
-+ "streq r4, [ip], #4\n\t"
-+ "beq 2b\n\t"
-+ "mov r3, r4\n"
-+ "1:\n\t"
-+#ifdef __ARMEB__
-+ "rors r3, r3, #24\n\t"
-+#endif
-+ "strb r3, [ip], #1\n\t"
-+ "tst r3, #0xff\n\t"
-+#ifdef __ARMEL__
-+ "ror r3, r3, #8\n\t"
-+#endif
-+ "bne 1b\n\t"
-+ "ldr r4, [sp], #4\n\t"
-+#ifndef __thumb2__
-+ "ldr r5, [sp], #4\n\t"
-+#endif
-+ "BX LR\n"
-+
-+ /* Strings have the same offset from word alignment, but it's
-+ not zero. */
-+ "3:\n\t"
-+ "tst r1, #1\n\t"
-+ "beq 1f\n\t"
-+ "ldrb r2, [r1], #1\n\t"
-+ "strb r2, [ip], #1\n\t"
-+ "cmp r2, #0\n\t"
-+ "it eq\n"
-+ "BXEQ LR\n"
-+ "1:\n\t"
-+ "tst r1, #2\n\t"
-+ "beq 5b\n\t"
-+ "ldrh r2, [r1], #2\n\t"
-+#ifdef __ARMEB__
-+ "tst r2, #0xff00\n\t"
-+ "iteet ne\n\t"
-+ "strneh r2, [ip], #2\n\t"
-+ "lsreq r2, r2, #8\n\t"
-+ "streqb r2, [ip]\n\t"
-+ "tstne r2, #0xff\n\t"
-+#else
-+ "tst r2, #0xff\n\t"
-+ "itet ne\n\t"
-+ "strneh r2, [ip], #2\n\t"
-+ "streqb r2, [ip]\n\t"
-+ "tstne r2, #0xff00\n\t"
-+#endif
-+ "bne 5b\n\t"
-+ "BX LR\n"
-+
-+ /* src and dst do not have a common word-alignement. Fall back to
-+ byte copying. */
-+ "4:\n\t"
-+ "ldrb r2, [r1], #1\n\t"
-+ "strb r2, [ip], #1\n\t"
-+ "cmp r2, #0\n\t"
-+ "bne 4b\n\t"
-+ "BX LR"
-+
-+#elif !defined (__thumb__) || defined (__thumb2__)
-+ "mov r3, r0\n\t"
-+ "1:\n\t"
-+ "ldrb r2, [r1], #1\n\t"
-+ "strb r2, [r3], #1\n\t"
-+ "cmp r2, #0\n\t"
-+ "bne 1b\n\t"
-+ "BX LR"
-+#else
-+ "mov r3, r0\n\t"
-+ "1:\n\t"
-+ "ldrb r2, [r1]\n\t"
-+ "add r1, r1, #1\n\t"
-+ "strb r2, [r3]\n\t"
-+ "add r3, r3, #1\n\t"
-+ "cmp r2, #0\n\t"
-+ "bne 1b\n\t"
-+ "BX LR"
-+#endif
-+ );
-+}
-+libc_hidden_builtin_def (strcpy)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-new file mode 100644
-index 0000000..125e92f
---- /dev/null
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-@@ -0,0 +1,111 @@
-+/* Copyright (c) 2010-2011, Linaro Limited
-+ All rights reserved.
-+
-+ Redistribution and use in source and binary forms, with or without
-+ modification, are permitted provided that the following conditions
-+ are met:
-+
-+ * Redistributions of source code must retain the above copyright
-+ notice, this list of conditions and the following disclaimer.
-+
-+ * Redistributions in binary form must reproduce the above copyright
-+ notice, this list of conditions and the following disclaimer in the
-+ documentation and/or other materials provided with the distribution.
-+
-+ * Neither the name of Linaro Limited nor the names of its
-+ contributors may be used to endorse or promote products derived
-+ from this software without specific prior written permission.
-+
-+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ Written by Dave Gilbert <david.gilbert@linaro.org>
-+
-+ This strlen routine is optimised on a Cortex-A9 and should work on
-+ all ARMv7 processors. This routine is reasonably fast for short
-+ strings, but is probably slower than a simple implementation if all
-+ your strings are very short */
-+
-+@ 2011-02-08 david.gilbert@linaro.org
-+@ Extracted from local git 6848613a
-+
-+
-+@ this lets us check a flag in a 00/ff byte easily in either endianness
-+#ifdef __ARMEB__
-+#define CHARTSTMASK(c) 1<<(31-(c*8))
-+#else
-+#define CHARTSTMASK(c) 1<<(c*8)
-+#endif
-+
-+@-----------------------------------------------------------------------------------------------------------------------------
-+ .syntax unified
-+ .arch armv7-a
-+
-+ .thumb_func
-+ .align 2
-+ .p2align 4,,15
-+ .global strlen
-+ .type strlen,%function
-+strlen:
-+ @ r0 = string
-+ @ returns count of bytes in string not including terminator
-+ mov r1, r0
-+ push { r4,r6 }
-+ mvns r6, #0 @ all F
-+ movs r4, #0
-+ tst r0, #7
-+ beq 2f
-+
-+1:
-+ ldrb r2, [r1], #1
-+ tst r1, #7 @ Hit alignment yet?
-+ cbz r2, 10f @ Exit if we found the 0
-+ bne 1b
-+
-+ @ So we're now aligned
-+2:
-+ ldmia r1!,{r2,r3}
-+ uadd8 r2, r2, r6 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
-+ sel r2, r4, r6 @ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
-+ uadd8 r3, r3, r6 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0
-+ sel r3, r2, r6 @ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION
-+ cmp r3, #0
-+ beq 2b
-+
-+strlenendtmp:
-+ @ One (or more) of the bytes we loaded was 0 - but which one?
-+ @ r2 has the mask corresponding to the first loaded word
-+ @ r3 has a combined mask of the two words - but if r2 was all-non 0
-+ @ then it's just the 2nd words
-+ cmp r2, #0
-+ itte eq
-+ moveq r2, r3 @ the end is in the 2nd word
-+ subeq r1,r1,#3
-+ subne r1,r1,#7
-+
-+ @ r1 currently points to the 2nd byte of the word containing the 0
-+ tst r2, # CHARTSTMASK(0) @ 1st character
-+ bne 10f
-+ adds r1,r1,#1
-+ tst r2, # CHARTSTMASK(1) @ 2nd character
-+ ittt eq
-+ addeq r1,r1,#1
-+ tsteq r2, # (3<<15) @ 2nd & 3rd character
-+ @ If not the 3rd must be the last one
-+ addeq r1,r1,#1
-+
-+10:
-+ @ r0 is still at the beginning, r1 is pointing 1 byte after the terminator
-+ sub r0, r1, r0
-+ subs r0, r0, #1
-+ pop { r4, r6 }
-+ bx lr
---
-1.7.7
-
diff --git a/patches/glibc-2.13/0025-add-libc_hidden_builtin_def-for-all-cortex-functions.patch b/patches/glibc-2.13/0025-add-libc_hidden_builtin_def-for-all-cortex-functions.patch
deleted file mode 100644
index c5e0d23..0000000
--- a/patches/glibc-2.13/0025-add-libc_hidden_builtin_def-for-all-cortex-functions.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Thu, 15 Sep 2011 23:30:25 +0200
-Subject: [PATCH] add libc_hidden_builtin_def for all cortex functions
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- .../sysdeps/arm/eabi/arm/cortex-a8/memchr.S | 3 +++
- .../sysdeps/arm/eabi/arm/cortex-a8/memcpy.S | 2 ++
- .../sysdeps/arm/eabi/arm/cortex-a8/memset.S | 2 ++
- .../sysdeps/arm/eabi/arm/cortex-a8/strchr.S | 3 +++
- .../sysdeps/arm/eabi/arm/cortex-a8/strcpy.c | 1 +
- .../sysdeps/arm/eabi/arm/cortex-a8/strlen.S | 2 ++
- 6 files changed, 13 insertions(+), 0 deletions(-)
-
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
-index 8f5aaa9..6d497cb 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memchr.S
-@@ -148,3 +148,6 @@ memchr:
- pop {r4,r5,r6,r7}
- subs r0,r0,#1
- bx lr
-+
-+strong_alias (memchr, __memchr)
-+libc_hidden_builtin_def (memchr)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
-index 3be24ca..c274207 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memcpy.S
-@@ -150,3 +150,5 @@ memcpy:
- cmp r2,#32
- blt 10b
- b 4b
-+
-+libc_hidden_builtin_def (memcpy)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
-index 921cb75..d4c12a4 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/memset.S
-@@ -116,3 +116,5 @@ memset:
-
- 10:
- bx lr @ goodbye
-+
-+libc_hidden_builtin_def (memset)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
-index 8875dbf..05c832f 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strchr.S
-@@ -74,3 +74,6 @@ strchr:
- beq 5b @ A bit messy, if it's common we should branch at the start to a special loop
- mov r0,#0
- bx lr
-+
-+weak_alias (strchr, index)
-+libc_hidden_builtin_def (strchr)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
-index aa8cb06..3bbaa86 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strcpy.c
-@@ -169,4 +169,5 @@ strcpy (char* dst, const char* src)
- #endif
- );
- }
-+
- libc_hidden_builtin_def (strcpy)
-diff --git a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-index 125e92f..a1e02ad 100644
---- a/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-+++ b/cortex-strings/sysdeps/arm/eabi/arm/cortex-a8/strlen.S
-@@ -109,3 +109,5 @@ strlenendtmp:
- subs r0, r0, #1
- pop { r4, r6 }
- bx lr
-+
-+libc_hidden_builtin_def (strlen)
---
-1.7.7
-
diff --git a/patches/glibc-2.13/series b/patches/glibc-2.13/series
deleted file mode 100644
index 313e852..0000000
--- a/patches/glibc-2.13/series
+++ /dev/null
@@ -1,25 +0,0 @@
-0001-install-lib-all.patch
-0002-fix-build-with-static-nss.patch
-0003-glibc-configure-old-gcc.patch
-0004-configure-in-sane-readelf.patch
-0005-stdlib-longlong.patch
-0006-respect-env-CPPFLAGS.patch
-0007-i586-chk.patch
-0008-i386-x86_64-revert-clone-cfi.patch
-0009-queue-header-updates.patch
-0010-manual-no-perl.patch
-0011-localedef-fix-trampoline.patch
-0012-posix-awk.patch
-0013-resolv-dynamic.patch
-0014-section-comments.patch
-0015-no-inline-gmon.patch
-0016-china.patch
-0017-new-valencian-locale.patch
-0018-strict-aliasing.patch
-0019-undefine-__i686.patch
-0020-dl_execstack-PaX-support.patch
-0021-pre20040117-pt_pax.patch
-0022-fpscr_values.patch
-0023-Fix-prelinking.patch
-0024-optimized-string-functions-for-NEON-from-Linaro.patch
-0025-add-libc_hidden_builtin_def-for-all-cortex-functions.patch