mirror of
https://git.yoctoproject.org/poky
synced 2026-03-17 04:39:40 +01:00
glibc: remove all old recipes
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
This commit is contained in:
committed by
Richard Purdie
parent
7e8f14d2d8
commit
735210556d
@@ -1,39 +0,0 @@
|
||||
Index: Makerules
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/libc/Makerules,v
|
||||
retrieving revision 1.430
|
||||
diff -u -r1.430 Makerules
|
||||
--- libc/Makerules 5 Mar 2005 19:24:32 -0000 1.430
|
||||
+++ libc/Makerules 22 Apr 2005 18:31:27 -0000
|
||||
@@ -1390,15 +1390,26 @@
|
||||
$(addprefix $(objpfx),$(extra-objs))
|
||||
$(objpfx)stubs: $(objs-for-stubs)
|
||||
ifneq (,$(strip $(objs-for-stubs)))
|
||||
- $(OBJDUMP) -h $^ | \
|
||||
- $(AWK) '/\.gnu\.glibc-stub\./ { \
|
||||
- sub(/\.gnu\.glibc-stub\./, "", $$2); \
|
||||
- stubs[$$2] = 1; } \
|
||||
- END { for (s in stubs) print "#define __stub_" s }' > $@T
|
||||
+ $(stub-obj-list)
|
||||
+ cat $@L | xargs \
|
||||
+ $(OBJDUMP) -h | \
|
||||
+ $(AWK) '/\.gnu\.glibc-stub\./ { \
|
||||
+ sub(/\.gnu\.glibc-stub\./, "", $$2); \
|
||||
+ stubs[$$2] = 1; } \
|
||||
+ END { for (s in stubs) print "#define __stub_" s }' \
|
||||
+ > $@T
|
||||
+ -rm -f $@L
|
||||
mv -f $@T $@
|
||||
else
|
||||
> $@
|
||||
endif
|
||||
+
|
||||
+define stub-obj-list
|
||||
+-@rm -f $@L
|
||||
+-@echo "Generating stub obj list..."
|
||||
+$(foreach file,$^,
|
||||
+@echo >> $@L '$(file)')
|
||||
+endef
|
||||
|
||||
# This information is not used for making distributions any more.
|
||||
# But it's used by MakeTAGS for making TAGS files and the .pot files.
|
||||
@@ -1,41 +0,0 @@
|
||||
# All lines beginning with `# DP:' are a description of the patch.
|
||||
# DP: Description: allow dynamic long-running processes to
|
||||
# DP: re-read a dynamically updated resolv.conf on the fly
|
||||
# DP: Dpatch author: Adam Conrad <adconrad@ubuntu.com>
|
||||
# DP: Patch author: Thorsten Kukuk <kukuk@suse.de>
|
||||
# DP: Upstream status: Ubuntu-Specific
|
||||
# DP: Date: 2006-01-13 08:14:21 UTC
|
||||
|
||||
Index: resolv/res_libc.c
|
||||
===================================================================
|
||||
--- resolv/res_libc.c.orig
|
||||
+++ resolv/res_libc.c
|
||||
@@ -22,7 +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
|
||||
out) since res_init() should go into libc.so but the rest of that
|
||||
@@ -94,8 +94,17 @@
|
||||
int
|
||||
__res_maybe_init (res_state resp, int preinit)
|
||||
{
|
||||
- if (resp->options & RES_INIT) {
|
||||
- if (__res_initstamp != resp->_u._ext.initstamp) {
|
||||
+ static time_t last_mtime;
|
||||
+ struct stat statbuf;
|
||||
+ int ret;
|
||||
+
|
||||
+
|
||||
+ if (resp->options & RES_INIT) {
|
||||
+ ret = stat (_PATH_RESCONF, &statbuf);
|
||||
+ if (__res_initstamp != resp->_u._ext.initstamp
|
||||
+ || (ret == 0) && (last_mtime != statbuf.st_mtime))
|
||||
+ {
|
||||
+ last_mtime = statbuf.st_mtime;
|
||||
if (resp->nscount > 0) {
|
||||
__res_iclose (resp, true);
|
||||
return __res_vinit (resp, 1);
|
||||
@@ -1,20 +0,0 @@
|
||||
Submitted By: Joe Ciccone <jciccone@linuxfromscratch.org>
|
||||
Date: 07-02-2007
|
||||
Initial Package Version: 2.6
|
||||
Origin: http://sourceware.org/ml/libc-ports/2007-05/msg00051.html
|
||||
Upstream Status: Unknown
|
||||
Description: Defines RTLD_SINGLE_THREAD_P for arm.
|
||||
|
||||
diff -Naur glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
|
||||
--- glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:22.000000000 -0400
|
||||
+++ glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:36.000000000 -0400
|
||||
@@ -126,3 +126,9 @@
|
||||
# define NO_CANCELLATION 1
|
||||
|
||||
#endif
|
||||
+
|
||||
+#ifndef __ASSEMBLER__
|
||||
+# define RTLD_SINGLE_THREAD_P \
|
||||
+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
|
||||
+ header.multiple_threads) == 0, 1)
|
||||
+#endif
|
||||
@@ -1,30 +0,0 @@
|
||||
Source: http://sourceware.org/ml/libc-alpha/2008-01/msg00017.html
|
||||
|
||||
I am checking this x86 assembler patch:
|
||||
|
||||
http://sourceware.org/ml/binutils/2008-01/msg00148.html
|
||||
|
||||
to check operand size. fnstsw stores 16bit into %ax. The upper
|
||||
16bit of %eax is unchanged. The new assembler will disallow
|
||||
"fnstsw %eax". Here is a patch for glibc.
|
||||
|
||||
|
||||
H.J.
|
||||
|
||||
---
|
||||
sysdeps/i386/fpu/ftestexcept.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c
|
||||
===================================================================
|
||||
--- glibc-2.6.1.orig/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:00:45.000000000 -0700
|
||||
+++ glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:01:25.000000000 -0700
|
||||
@@ -26,7 +26,7 @@
|
||||
int
|
||||
fetestexcept (int excepts)
|
||||
{
|
||||
- int temp;
|
||||
+ short temp;
|
||||
int xtemp = 0;
|
||||
|
||||
/* Get current exceptions. */
|
||||
@@ -1,52 +0,0 @@
|
||||
Disable the extra hwcaps fields, they cause ld.so to look in many strange paths
|
||||
before searching for binaries in /lib. We don't install binaries into any other
|
||||
place so this just wastes time.
|
||||
|
||||
RP - 20/08/2008
|
||||
|
||||
Index: glibc-2.6.1/elf/dl-sysdep.c
|
||||
===================================================================
|
||||
--- glibc-2.6.1.orig/elf/dl-sysdep.c 2008-08-15 15:54:49.000000000 +0100
|
||||
+++ glibc-2.6.1/elf/dl-sysdep.c 2008-08-15 17:45:28.000000000 +0100
|
||||
@@ -346,7 +346,7 @@
|
||||
{
|
||||
/* Determine how many important bits are set. */
|
||||
uint64_t masked = GLRO(dl_hwcap) & GLRO(dl_hwcap_mask);
|
||||
- size_t cnt = platform != NULL;
|
||||
+ size_t cnt = 0;
|
||||
size_t n, m;
|
||||
size_t total;
|
||||
struct r_strlenpair *temp;
|
||||
@@ -354,11 +354,6 @@
|
||||
struct r_strlenpair *rp;
|
||||
char *cp;
|
||||
|
||||
- /* Count the number of bits set in the masked value. */
|
||||
- for (n = 0; (~((1ULL << n) - 1) & masked) != 0; ++n)
|
||||
- if ((masked & (1ULL << n)) != 0)
|
||||
- ++cnt;
|
||||
-
|
||||
#if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED
|
||||
/* The system-supplied DSO can contain a note of type 2, vendor "GNU".
|
||||
This gives us a list of names to treat as fake hwcap bits. */
|
||||
@@ -434,20 +429,6 @@
|
||||
}
|
||||
}
|
||||
#endif
|
||||
- for (n = 0; masked != 0; ++n)
|
||||
- if ((masked & (1ULL << n)) != 0)
|
||||
- {
|
||||
- temp[m].str = _dl_hwcap_string (n);
|
||||
- temp[m].len = strlen (temp[m].str);
|
||||
- masked ^= 1ULL << n;
|
||||
- ++m;
|
||||
- }
|
||||
- if (platform != NULL)
|
||||
- {
|
||||
- temp[m].str = platform;
|
||||
- temp[m].len = platform_len;
|
||||
- ++m;
|
||||
- }
|
||||
|
||||
temp[m].str = "tls";
|
||||
temp[m].len = 3;
|
||||
@@ -1,12 +0,0 @@
|
||||
Index: glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
|
||||
===================================================================
|
||||
--- glibc-2.6.1.orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2005-06-10 11:12:09.000000000 +0000
|
||||
+++ glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2009-06-16 21:16:16.007016198 +0000
|
||||
@@ -45,7 +45,6 @@
|
||||
#include <sys/mman.h>
|
||||
|
||||
#include <linux/version.h>
|
||||
-#include <asm/page.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
|
||||
@@ -1,175 +0,0 @@
|
||||
diff
|
||||
--- glibc-2.3.6/nptl/sysdeps/pthread/configure.in.orig 2006-09-14 11:12:16.000000000 +0100
|
||||
+++ glibc-2.3.6/nptl/sysdeps/pthread/configure.in 2006-09-14 11:12:16.000000000 +0100
|
||||
@@ -21,29 +21,4 @@
|
||||
|
||||
dnl Iff <unwind.h> is available, make sure it is the right one and it
|
||||
dnl contains struct _Unwind_Exception.
|
||||
-AC_CACHE_CHECK(dnl
|
||||
-for forced unwind support, libc_cv_forced_unwind, [dnl
|
||||
-AC_TRY_LINK([#include <unwind.h>], [
|
||||
-struct _Unwind_Exception exc;
|
||||
-struct _Unwind_Context *context;
|
||||
-_Unwind_GetCFA (context)],
|
||||
-libc_cv_forced_unwind=yes, libc_cv_forced_unwind=no)])
|
||||
-if test $libc_cv_forced_unwind = yes; then
|
||||
- AC_DEFINE(HAVE_FORCED_UNWIND)
|
||||
-dnl Check for C cleanup handling.
|
||||
- old_CFLAGS="$CFLAGS"
|
||||
- CFLAGS="$CFLAGS -Werror -fexceptions"
|
||||
- AC_CACHE_CHECK([for C cleanup handling], libc_cv_c_cleanup, [dnl
|
||||
- AC_TRY_LINK([
|
||||
-#include <stdio.h>
|
||||
-void cl (void *a) { }], [
|
||||
- int a __attribute__ ((cleanup (cl)));
|
||||
- puts ("test")],
|
||||
-libc_cv_c_cleanup=yes, libc_cv_c_cleanup=no)])
|
||||
- CFLAGS="$old_CFLAGS"
|
||||
- if test $libc_cv_c_cleanup = no; then
|
||||
- AC_MSG_ERROR([the compiler must support C cleanup handling])
|
||||
- fi
|
||||
-else
|
||||
- AC_MSG_ERROR(forced unwind support is required)
|
||||
-fi
|
||||
+AC_DEFINE(HAVE_FORCED_UNWIND)
|
||||
diff
|
||||
--- glibc-2.3.6/nptl/sysdeps/pthread/configure.orig 2006-09-14 11:11:12.000000000 +0100
|
||||
+++ glibc-2.3.6/nptl/sysdeps/pthread/configure 2006-09-14 11:11:12.000000000 +0100
|
||||
@@ -24,136 +24,7 @@
|
||||
fi
|
||||
|
||||
|
||||
-echo "$as_me:$LINENO: checking for forced unwind support" >&5
|
||||
-echo $ECHO_N "checking for forced unwind support... $ECHO_C" >&6
|
||||
-if test "${libc_cv_forced_unwind+set}" = set; then
|
||||
- echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
-else
|
||||
- cat >conftest.$ac_ext <<_ACEOF
|
||||
-/* confdefs.h. */
|
||||
-_ACEOF
|
||||
-cat confdefs.h >>conftest.$ac_ext
|
||||
-cat >>conftest.$ac_ext <<_ACEOF
|
||||
-/* end confdefs.h. */
|
||||
-#include <unwind.h>
|
||||
-int
|
||||
-main ()
|
||||
-{
|
||||
-
|
||||
-struct _Unwind_Exception exc;
|
||||
-struct _Unwind_Context *context;
|
||||
-_Unwind_GetCFA (context)
|
||||
- ;
|
||||
- return 0;
|
||||
-}
|
||||
-_ACEOF
|
||||
-rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
- (eval $ac_link) 2>conftest.er1
|
||||
- ac_status=$?
|
||||
- grep -v '^ *+' conftest.er1 >conftest.err
|
||||
- rm -f conftest.er1
|
||||
- cat conftest.err >&5
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); } &&
|
||||
- { ac_try='test -z "$ac_c_werror_flag"
|
||||
- || test ! -s conftest.err'
|
||||
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
- (eval $ac_try) 2>&5
|
||||
- ac_status=$?
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); }; } &&
|
||||
- { ac_try='test -s conftest$ac_exeext'
|
||||
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
- (eval $ac_try) 2>&5
|
||||
- ac_status=$?
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); }; }; then
|
||||
- libc_cv_forced_unwind=yes
|
||||
-else
|
||||
- echo "$as_me: failed program was:" >&5
|
||||
-sed 's/^/| /' conftest.$ac_ext >&5
|
||||
-
|
||||
-libc_cv_forced_unwind=no
|
||||
-fi
|
||||
-rm -f conftest.err conftest.$ac_objext \
|
||||
- conftest$ac_exeext conftest.$ac_ext
|
||||
-fi
|
||||
-echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5
|
||||
-echo "${ECHO_T}$libc_cv_forced_unwind" >&6
|
||||
-if test $libc_cv_forced_unwind = yes; then
|
||||
- cat >>confdefs.h <<\_ACEOF
|
||||
+cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_FORCED_UNWIND 1
|
||||
_ACEOF
|
||||
|
||||
- old_CFLAGS="$CFLAGS"
|
||||
- CFLAGS="$CFLAGS -Werror -fexceptions"
|
||||
- echo "$as_me:$LINENO: checking for C cleanup handling" >&5
|
||||
-echo $ECHO_N "checking for C cleanup handling... $ECHO_C" >&6
|
||||
-if test "${libc_cv_c_cleanup+set}" = set; then
|
||||
- echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
-else
|
||||
- cat >conftest.$ac_ext <<_ACEOF
|
||||
-/* confdefs.h. */
|
||||
-_ACEOF
|
||||
-cat confdefs.h >>conftest.$ac_ext
|
||||
-cat >>conftest.$ac_ext <<_ACEOF
|
||||
-/* end confdefs.h. */
|
||||
-
|
||||
-#include <stdio.h>
|
||||
-void cl (void *a) { }
|
||||
-int
|
||||
-main ()
|
||||
-{
|
||||
-
|
||||
- int a __attribute__ ((cleanup (cl)));
|
||||
- puts ("test")
|
||||
- ;
|
||||
- return 0;
|
||||
-}
|
||||
-_ACEOF
|
||||
-rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
- (eval $ac_link) 2>conftest.er1
|
||||
- ac_status=$?
|
||||
- grep -v '^ *+' conftest.er1 >conftest.err
|
||||
- rm -f conftest.er1
|
||||
- cat conftest.err >&5
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); } &&
|
||||
- { ac_try='test -z "$ac_c_werror_flag"
|
||||
- || test ! -s conftest.err'
|
||||
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
- (eval $ac_try) 2>&5
|
||||
- ac_status=$?
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); }; } &&
|
||||
- { ac_try='test -s conftest$ac_exeext'
|
||||
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
- (eval $ac_try) 2>&5
|
||||
- ac_status=$?
|
||||
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
- (exit $ac_status); }; }; then
|
||||
- libc_cv_c_cleanup=yes
|
||||
-else
|
||||
- echo "$as_me: failed program was:" >&5
|
||||
-sed 's/^/| /' conftest.$ac_ext >&5
|
||||
-
|
||||
-libc_cv_c_cleanup=no
|
||||
-fi
|
||||
-rm -f conftest.err conftest.$ac_objext \
|
||||
- conftest$ac_exeext conftest.$ac_ext
|
||||
-fi
|
||||
-echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5
|
||||
-echo "${ECHO_T}$libc_cv_c_cleanup" >&6
|
||||
- CFLAGS="$old_CFLAGS"
|
||||
- if test $libc_cv_c_cleanup = no; then
|
||||
- { { echo "$as_me:$LINENO: error: the compiler must support C cleanup handling" >&5
|
||||
-echo "$as_me: error: the compiler must support C cleanup handling" >&2;}
|
||||
- { (exit 1); exit 1; }; }
|
||||
- fi
|
||||
-else
|
||||
- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5
|
||||
-echo "$as_me: error: forced unwind support is required" >&2;}
|
||||
- { (exit 1); exit 1; }; }
|
||||
-fi
|
||||
58
meta/packages/glibc/glibc-2.4/arm-longlong.patch
vendored
58
meta/packages/glibc/glibc-2.4/arm-longlong.patch
vendored
@@ -1,58 +0,0 @@
|
||||
--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100
|
||||
+++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100
|
||||
@@ -206,6 +206,14 @@
|
||||
"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" \
|
||||
@@ -227,7 +235,13 @@
|
||||
: "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 (__hppa) && W_TYPE_SIZE == 32
|
||||
--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100
|
||||
+++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* __clz_tab -- support for longlong.h
|
||||
+ Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
|
||||
+/* Nothing required. */
|
||||
+#else
|
||||
+#include <stdlib/mp_clz_tab.c>
|
||||
+#endif
|
||||
758
meta/packages/glibc/glibc-2.4/arm-memcpy.patch
vendored
758
meta/packages/glibc/glibc-2.4/arm-memcpy.patch
vendored
@@ -1,758 +0,0 @@
|
||||
--- /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)
|
||||
|
||||
--- /dev/null 2004-02-02 20:32:13.000000000 +0000
|
||||
+++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
|
||||
@@ -0,0 +1,242 @@
|
||||
+/*
|
||||
+ * 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)
|
||||
+
|
||||
@@ -1,94 +0,0 @@
|
||||
From libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Mon Aug 21 20:08:57 2006
|
||||
Return-Path: <libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
|
||||
Delivered-To: listarch-libc-ports at sources dot redhat dot com
|
||||
Received: (qmail 9913 invoked by alias); 21 Aug 2006 20:08:56 -0000
|
||||
Received: (qmail 9893 invoked by uid 22791); 21 Aug 2006 20:08:53 -0000
|
||||
X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_HM,TW_SG,TW_SN
|
||||
X-Spam-Check-By: sourceware.org
|
||||
Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 21 Aug 2006 20:08:44 +0000
|
||||
Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GFG4f-0007gO-TW for libc-ports@sourceware.org; Mon, 21 Aug 2006 16:08:42 -0400
|
||||
Date: Mon, 21 Aug 2006 16:08:41 -0400
|
||||
From: Daniel Jacobowitz <drow at false dot org>
|
||||
To: libc-ports at sourceware dot org
|
||||
Subject: ARM IPC fix
|
||||
Message-ID: <20060821200841.GA29502@nevyn.them.org>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
User-Agent: Mutt/1.5.11+cvs20060403
|
||||
X-IsSubscribed: yes
|
||||
Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
|
||||
Precedence: bulk
|
||||
List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
|
||||
List-Post: <mailto:libc-ports at sourceware dot org>
|
||||
List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
|
||||
Sender: libc-ports-owner at sourceware dot org
|
||||
Delivered-To: mailing list libc-ports at sourceware dot org
|
||||
|
||||
We can't treat msgctl as a real syscall; if we don't add __IPC_64, we'll get
|
||||
a mismatched type for ipc_perm. Fixed by using the Alpha implementation,
|
||||
which is similar to the standard i386 implementation but doesn't use
|
||||
the multiplexer syscall.
|
||||
|
||||
--
|
||||
Daniel Jacobowitz
|
||||
CodeSourcery
|
||||
|
||||
2006-08-21 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl,
|
||||
shmctl, and semctl.
|
||||
* sysdeps/unix/sysv/linux/arm/eabi/semctl.c,
|
||||
sysdeps/unix/sysv/linux/arm/eabi/shmctl.c,
|
||||
sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: New files.
|
||||
|
||||
Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
|
||||
===================================================================
|
||||
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (revision 147209)
|
||||
+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (working copy)
|
||||
@@ -1,18 +1,16 @@
|
||||
# File name Caller Syscall name # args Strong name Weak names
|
||||
|
||||
-# semaphore and shm system calls
|
||||
-msgctl - msgctl i:iip __msgctl msgctl
|
||||
+# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
|
||||
+# wrappers (to set __IPC_64).
|
||||
msgget - msgget i:ii __msgget msgget
|
||||
msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
|
||||
msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
|
||||
shmat - shmat i:ipi __shmat shmat
|
||||
-shmctl - shmctl i:iip __shmctl shmctl
|
||||
shmdt - shmdt i:s __shmdt shmdt
|
||||
shmget - shmget i:iii __shmget shmget
|
||||
semop - semop i:ipi __semop semop
|
||||
semtimedop - semtimedop i:ipip semtimedop
|
||||
semget - semget i:iii __semget semget
|
||||
-semctl - semctl i:iiii __semctl semctl
|
||||
|
||||
# proper socket implementations:
|
||||
accept - accept Ci:iBN __libc_accept __accept accept
|
||||
|
||||
Property changes on: sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
|
||||
___________________________________________________________________
|
||||
Name: svn:mime-type
|
||||
- application/octet-stream
|
||||
|
||||
Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c
|
||||
===================================================================
|
||||
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0)
|
||||
+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0)
|
||||
@@ -0,0 +1 @@
|
||||
+#include <sysdeps/unix/sysv/linux/alpha/semctl.c>
|
||||
Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c
|
||||
===================================================================
|
||||
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0)
|
||||
+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0)
|
||||
@@ -0,0 +1 @@
|
||||
+#include <sysdeps/unix/sysv/linux/alpha/msgctl.c>
|
||||
Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c
|
||||
===================================================================
|
||||
--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0)
|
||||
+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0)
|
||||
@@ -0,0 +1 @@
|
||||
+#include <sysdeps/unix/sysv/linux/alpha/shmctl.c>
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100
|
||||
+++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100
|
||||
@@ -63,5 +63,7 @@
|
||||
_dl_debug_state;
|
||||
# Pointer protection.
|
||||
__pointer_chk_guard;
|
||||
+ # for ldconfig
|
||||
+ _dl_cache_libcmp;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
|
||||
#
|
||||
# Patch managed by http://www.holgerschurig.de/patcher.html
|
||||
#
|
||||
|
||||
--- libc/elf/Makefile~dyn-ldconfig-20041128
|
||||
+++ libc/elf/Makefile
|
||||
@@ -118,12 +118,13 @@
|
||||
|
||||
ifeq (yes,$(use-ldconfig))
|
||||
ifeq (yes,$(build-shared))
|
||||
-others-static += ldconfig
|
||||
+#others-static += ldconfig
|
||||
others += ldconfig
|
||||
install-rootsbin += ldconfig
|
||||
|
||||
ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
|
||||
extra-objs += $(ldconfig-modules:=.o)
|
||||
+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
|
||||
|
||||
# To find xmalloc.c and xstrdup.c
|
||||
vpath %.c ../locale/programs
|
||||
62
meta/packages/glibc/glibc-2.4/dyn-ldconfig.patch
vendored
62
meta/packages/glibc/glibc-2.4/dyn-ldconfig.patch
vendored
@@ -1,62 +0,0 @@
|
||||
--- elf/Makefile 13 Mar 2003 21:50:57 -0000 1.258
|
||||
+++ elf/Makefile 27 Mar 2003 20:36:07 -0000
|
||||
@@ -109,12 +109,13 @@
|
||||
|
||||
ifeq (yes,$(use-ldconfig))
|
||||
ifeq (yes,$(build-shared))
|
||||
-others-static += ldconfig
|
||||
+#others-static += ldconfig
|
||||
others += ldconfig
|
||||
install-rootsbin += ldconfig
|
||||
|
||||
ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
|
||||
extra-objs += $(ldconfig-modules:=.o)
|
||||
+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
|
||||
|
||||
# To find xmalloc.c and xstrdup.c
|
||||
vpath %.c ../locale/programs
|
||||
--- elf/ldconfig.c 13 Jan 2003 08:53:14 -0000 1.31
|
||||
+++ elf/ldconfig.c 27 Mar 2003 20:36:09 -0000
|
||||
@@ -149,6 +149,9 @@
|
||||
static int
|
||||
is_hwcap_platform (const char *name)
|
||||
{
|
||||
+#if 1
|
||||
+ return 0;
|
||||
+#else
|
||||
int hwcap_idx = _dl_string_hwcap (name);
|
||||
|
||||
if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask))
|
||||
@@ -164,6 +167,7 @@
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Get hwcap (including platform) encoding of path. */
|
||||
@@ -175,6 +179,7 @@
|
||||
uint64_t hwcap = 0;
|
||||
uint64_t h;
|
||||
|
||||
+#if 0
|
||||
size_t len;
|
||||
|
||||
len = strlen (str);
|
||||
@@ -210,6 +215,7 @@
|
||||
*ptr = '\0';
|
||||
}
|
||||
|
||||
+#endif
|
||||
free (str);
|
||||
return hwcap;
|
||||
}
|
||||
--- elf/Versions.old 2004-06-26 13:18:35.000000000 +0100
|
||||
+++ elf/Versions 2004-06-26 14:41:09.000000000 +0100
|
||||
@@ -54,5 +54,6 @@
|
||||
_dl_get_tls_static_info; _dl_allocate_tls_init;
|
||||
_dl_tls_setup; _dl_rtld_di_serinfo;
|
||||
_dl_make_stack_executable;
|
||||
+ _dl_cache_libcmp;
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
ports/sysdeps/unix/sysv/linux/arm/eabi/configure | 2 +-
|
||||
ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/eabi/configure
|
||||
===================================================================
|
||||
--- glibc-2.5.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/configure 2007-12-20 17:39:25.000000000 +0000
|
||||
+++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/eabi/configure 2007-12-20 17:39:30.000000000 +0000
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
|
||||
|
||||
-arch_minimum_kernel=2.6.14
|
||||
+arch_minimum_kernel=2.6.10
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
Index: glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in
|
||||
===================================================================
|
||||
--- glibc-2.5.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in 2007-12-20 17:39:27.000000000 +0000
|
||||
+++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/eabi/configure.in 2007-12-20 17:39:36.000000000 +0000
|
||||
@@ -1,5 +1,5 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
|
||||
|
||||
-arch_minimum_kernel=2.6.14
|
||||
+arch_minimum_kernel=2.6.10
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
@@ -1,329 +0,0 @@
|
||||
Fix up ARM EABI for removed syscalls
|
||||
http://sourceware.org/ml/libc-ports/2006-03/msg00029.html
|
||||
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S
|
||||
===================================================================
|
||||
--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S 2006-03-21 15:58:10.000000000 -0500
|
||||
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
@@ -1,131 +0,0 @@
|
||||
-/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2005
|
||||
- Free Software Foundation, Inc.
|
||||
- This file is part of the GNU C Library.
|
||||
-
|
||||
- The GNU C Library 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.
|
||||
-
|
||||
- The GNU C Library 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.
|
||||
-
|
||||
- You should have received a copy of the GNU Lesser General Public
|
||||
- License along with the GNU C Library; if not, write to the Free
|
||||
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
- 02111-1307 USA. */
|
||||
-
|
||||
-#include <sysdep-cancel.h>
|
||||
-#include <socketcall.h>
|
||||
-
|
||||
-#define P(a, b) P2(a, b)
|
||||
-#define P2(a, b) a##b
|
||||
-
|
||||
- .text
|
||||
-/* The socket-oriented system calls are handled unusally in Linux.
|
||||
- They are all gated through the single `socketcall' system call number.
|
||||
- `socketcall' takes two arguments: the first is the subcode, specifying
|
||||
- which socket function is being called; and the second is a pointer to
|
||||
- the arguments to the specific function.
|
||||
-
|
||||
- The .S files for the other calls just #define socket and #include this. */
|
||||
-
|
||||
-#ifndef __socket
|
||||
-# ifndef NO_WEAK_ALIAS
|
||||
-# define __socket P(__,socket)
|
||||
-# else
|
||||
-# define __socket socket
|
||||
-# endif
|
||||
-#endif
|
||||
-
|
||||
-#define PUSHARGS_1 str a1, [sp, $-8]!; .pad #8
|
||||
-#define PUSHARGS_2 stmfd sp!, {a1, a2}; .pad #8
|
||||
-#define PUSHARGS_3 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* a4 pushed for padding */
|
||||
-#define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4}; .pad #16
|
||||
-#define PUSHARGS_5 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* Caller has already pushed arg 5 */
|
||||
-#define PUSHARGS_6 stmfd sp!, {a1, a2, a3, a4}; .pad #16
|
||||
-
|
||||
-#define POPARGS_1 add sp, sp, #8
|
||||
-#define POPARGS_2 add sp, sp, #8
|
||||
-#define POPARGS_3 add sp, sp, #16
|
||||
-#define POPARGS_4 add sp, sp, #16
|
||||
-#define POPARGS_5 add sp, sp, #16
|
||||
-#define POPARGS_6 add sp, sp, #16
|
||||
-
|
||||
-#ifndef NARGS
|
||||
-#define NARGS 3 /* If we were called with no wrapper, this is really socket() */
|
||||
-#endif
|
||||
-
|
||||
-#if defined NEED_CANCELLATION && defined CENABLE
|
||||
- PSEUDO_PROLOGUE
|
||||
-#endif
|
||||
-
|
||||
-.globl __socket
|
||||
-ENTRY (__socket)
|
||||
- .fnstart
|
||||
-
|
||||
- /* This code previously moved sp into ip and stored the args using
|
||||
- stmdb ip!, {a1-a4}. It did not modify sp, so the stack never had
|
||||
- to be restored after the syscall completed. It saved an
|
||||
- instruction and meant no stack cleanup work was required.
|
||||
-
|
||||
- This will not work in the case of a socket call being interrupted
|
||||
- by a signal. If the signal handler uses any stack the arguments
|
||||
- to socket will be trashed. The results of a restart of any
|
||||
- socket call are then unpredictable. */
|
||||
-
|
||||
- /* Push args onto the stack. */
|
||||
- P(PUSHARGS_,NARGS)
|
||||
-
|
||||
-#if defined NEED_CANCELLATION && defined CENABLE
|
||||
- SINGLE_THREAD_P
|
||||
- bne 1f
|
||||
-#endif
|
||||
-
|
||||
- /* Do the system call trap. */
|
||||
- mov a1, $P(SOCKOP_,socket)
|
||||
- mov a2, sp
|
||||
- DO_CALL (socketcall, 0)
|
||||
-
|
||||
- /* Pop args off the stack */
|
||||
- P(POPARGS_,NARGS)
|
||||
-
|
||||
- /* r0 is < 0 if there was an error. */
|
||||
- cmn r0, $124
|
||||
- RETINSTR(cc, r14)
|
||||
- b PLTJMP(SYSCALL_ERROR)
|
||||
-
|
||||
-#if defined NEED_CANCELLATION && defined CENABLE
|
||||
-1:
|
||||
- stmfd sp!, {r7, lr}
|
||||
- .save {r7, lr}
|
||||
- CENABLE
|
||||
- mov ip, r0
|
||||
-
|
||||
- mov r0, #P(SOCKOP_,socket)
|
||||
- add r1, sp, #8
|
||||
- mov r7, #SYS_ify(socketcall)
|
||||
- swi 0x0
|
||||
-
|
||||
- mov r7, r0
|
||||
- mov r0, ip
|
||||
- CDISABLE
|
||||
- mov r0, r7
|
||||
- ldmfd sp!, {r7, lr}
|
||||
-
|
||||
- P(POPARGS_,NARGS)
|
||||
-
|
||||
- /* r0 is < 0 if there was an error. */
|
||||
- cmn r0, $124
|
||||
- RETINSTR(cc, r14)
|
||||
- b PLTJMP(SYSCALL_ERROR)
|
||||
-#endif
|
||||
-
|
||||
- .fnend
|
||||
-PSEUDO_END (__socket)
|
||||
-
|
||||
-#ifndef NO_WEAK_ALIAS
|
||||
-weak_alias (__socket, socket)
|
||||
-#endif
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list 2006-03-21 15:58:46.000000000 -0500
|
||||
@@ -0,0 +1,34 @@
|
||||
+# File name Caller Syscall name # args Strong name Weak names
|
||||
+
|
||||
+# semaphore and shm system calls
|
||||
+msgctl - msgctl i:iip __msgctl msgctl
|
||||
+msgget - msgget i:ii __msgget msgget
|
||||
+msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
|
||||
+msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
|
||||
+shmat - shmat i:ipi __shmat shmat
|
||||
+shmctl - shmctl i:iip __shmctl shmctl
|
||||
+shmdt - shmdt i:s __shmdt shmdt
|
||||
+shmget - shmget i:iii __shmget shmget
|
||||
+semop - semop i:ipi __semop semop
|
||||
+semtimedop - semtimedop i:ipip semtimedop
|
||||
+semget - semget i:iii __semget semget
|
||||
+semctl - semctl i:iiii __semctl semctl
|
||||
+
|
||||
+# proper socket implementations:
|
||||
+accept - accept Ci:iBN __libc_accept __accept accept
|
||||
+bind - bind i:ipi __bind bind
|
||||
+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
|
||||
+getpeername - getpeername i:ipp __getpeername getpeername
|
||||
+getsockname - getsockname i:ipp __getsockname getsockname
|
||||
+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
|
||||
+listen - listen i:ii __listen listen
|
||||
+recv - recv Ci:ibni __libc_recv __recv recv
|
||||
+recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
|
||||
+recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
|
||||
+send - send Ci:ibni __libc_send __send send
|
||||
+sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
|
||||
+sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
|
||||
+setsockopt - setsockopt i:iiibn __setsockopt setsockopt
|
||||
+shutdown - shutdown i:ii __shutdown shutdown
|
||||
+socket - socket i:iii __socket socket
|
||||
+socketpair - socketpair i:iiif __socketpair socketpair
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h
|
||||
===================================================================
|
||||
--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
|
||||
@@ -53,9 +53,9 @@
|
||||
UNDOARGS_##args; \
|
||||
cmn r0, $4096;
|
||||
|
||||
-/* DOARGS pushes four bytes on the stack for five arguments, and nothing
|
||||
- otherwise. In order to preserve doubleword alignment, sometimes we must
|
||||
- save an extra register. */
|
||||
+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
|
||||
+ six arguments, and nothing for fewer. In order to preserve doubleword
|
||||
+ alignment, sometimes we must save an extra register. */
|
||||
|
||||
# define DOCARGS_0 stmfd sp!, {r7, lr}
|
||||
# define UNDOCARGS_0
|
||||
@@ -81,6 +81,10 @@
|
||||
# define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}
|
||||
# define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
|
||||
|
||||
+# define DOCARGS_6 stmfd sp!, {r0, r1, r2, r3, r7, lr}
|
||||
+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}
|
||||
+# define RESTORE_LR_6 RESTORE_LR_0
|
||||
+
|
||||
# ifdef IS_IN_libpthread
|
||||
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
|
||||
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
|
||||
===================================================================
|
||||
--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
|
||||
@@ -64,9 +64,9 @@
|
||||
UNDOARGS_##args; \
|
||||
cmn r0, $4096;
|
||||
|
||||
-/* DOARGS pushes four bytes on the stack for five arguments, and nothing
|
||||
- otherwise. In order to preserve doubleword alignment, sometimes we must
|
||||
- save an extra register. */
|
||||
+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
|
||||
+ six arguments, and nothing for fewer. In order to preserve doubleword
|
||||
+ alignment, sometimes we must save an extra register. */
|
||||
|
||||
# define RESTART_UNWIND .fnend; .fnstart; .save {r7, lr}
|
||||
|
||||
@@ -94,6 +94,10 @@
|
||||
# define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4}; .save {r7, lr}; .pad #4
|
||||
# define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
|
||||
|
||||
+# define DOCARGS_6 .save {r4, r5}; stmfd sp!, {r0, r1, r2, r3, r7, lr}; .save {r7, lr}; .pad #20
|
||||
+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4, r5}; .save {r7, lr}
|
||||
+# define RESTORE_LR_6 RESTORE_LR_0
|
||||
+
|
||||
# ifdef IS_IN_libpthread
|
||||
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
|
||||
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
|
||||
===================================================================
|
||||
--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:10.000000000 -0500
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:46.000000000 -0500
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2005
|
||||
+/* Copyright (C) 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU C Library.
|
||||
@@ -29,6 +29,12 @@
|
||||
# error Kernel headers are too old
|
||||
#endif
|
||||
|
||||
+/* Don't use stime, even if the kernel headers define it. We have
|
||||
+ settimeofday, and some EABI kernels have removed stime. Similarly
|
||||
+ use setitimer to implement alarm. */
|
||||
+#undef __NR_stime
|
||||
+#undef __NR_alarm
|
||||
+
|
||||
/* The ARM EABI user interface passes the syscall number in r7, instead
|
||||
of in the swi. This is more efficient, because the kernel does not need
|
||||
to fetch the swi from memory to find out the number; which can be painful
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c 2006-03-21 15:58:46.000000000 -0500
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+ Contributed by David Huggins-Daines <dhd@debian.org>, 2000.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+/* Since we don't have an oldumount system call, do what the kernel
|
||||
+ does down here. */
|
||||
+
|
||||
+extern long int __umount2 (const char *name, int flags);
|
||||
+
|
||||
+long int
|
||||
+__umount (const char *name)
|
||||
+{
|
||||
+ return __umount2 (name, 0);
|
||||
+}
|
||||
+
|
||||
+weak_alias (__umount, umount);
|
||||
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h 2006-03-20 17:26:58.000000000 -0500
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* Set flags signalling availability of kernel features based on given
|
||||
+ kernel version number.
|
||||
+ Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+/* The utimes syscall was added before 2.6.1. */
|
||||
+#if __LINUX_KERNEL_VERSION >= 132609
|
||||
+# define __ASSUME_UTIMES 1
|
||||
+#endif
|
||||
+
|
||||
+/* The new getrlimit syscall was added sometime before 2.4.6. */
|
||||
+#if __LINUX_KERNEL_VERSION >= 132102
|
||||
+#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1
|
||||
+#endif
|
||||
+
|
||||
+#include_next <kernel-features.h>
|
||||
@@ -1,35 +0,0 @@
|
||||
/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#ifndef _SYS_SELECT_H
|
||||
# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* We don't use `memset' because this would require a prototype and
|
||||
the array isn't too big. */
|
||||
#define __FD_ZERO(s) \
|
||||
do { \
|
||||
unsigned int __i; \
|
||||
fd_set *__arr = (s); \
|
||||
for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
|
||||
__FDS_BITS (__arr)[__i] = 0; \
|
||||
} while (0)
|
||||
#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
|
||||
#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
|
||||
#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)
|
||||
@@ -1,75 +0,0 @@
|
||||
/* System-dependent timing definitions. Generic version.
|
||||
Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/*
|
||||
* Never include this file directly; use <time.h> instead.
|
||||
*/
|
||||
|
||||
#ifndef __need_timeval
|
||||
# ifndef _BITS_TIME_H
|
||||
# define _BITS_TIME_H 1
|
||||
|
||||
/* ISO/IEC 9899:1990 7.12.1: <time.h>
|
||||
The macro `CLOCKS_PER_SEC' is the number per second of the value
|
||||
returned by the `clock' function. */
|
||||
/* CAE XSH, Issue 4, Version 2: <time.h>
|
||||
The value of CLOCKS_PER_SEC is required to be 1 million on all
|
||||
XSI-conformant systems. */
|
||||
# define CLOCKS_PER_SEC 1000000l
|
||||
|
||||
# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K
|
||||
/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
|
||||
presents the real value for clock ticks per second for the system. */
|
||||
# include <bits/types.h>
|
||||
extern long int __sysconf (int);
|
||||
# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
|
||||
# endif
|
||||
|
||||
# ifdef __USE_POSIX199309
|
||||
/* Identifier for system-wide realtime clock. */
|
||||
# define CLOCK_REALTIME 0
|
||||
/* Monotonic system-wide clock. */
|
||||
# define CLOCK_MONOTONIC 1
|
||||
/* High-resolution timer from the CPU. */
|
||||
# define CLOCK_PROCESS_CPUTIME_ID 2
|
||||
/* Thread-specific CPU-time clock. */
|
||||
# define CLOCK_THREAD_CPUTIME_ID 3
|
||||
|
||||
/* Flag to indicate time is absolute. */
|
||||
# define TIMER_ABSTIME 1
|
||||
# endif
|
||||
|
||||
# endif /* bits/time.h */
|
||||
#endif
|
||||
|
||||
#ifdef __need_timeval
|
||||
# undef __need_timeval
|
||||
# ifndef _STRUCT_TIMEVAL
|
||||
# define _STRUCT_TIMEVAL 1
|
||||
# include <bits/types.h>
|
||||
|
||||
/* A time value that is accurate to the nearest
|
||||
microsecond but also has a range of years. */
|
||||
struct timeval
|
||||
{
|
||||
__time_t tv_sec; /* Seconds. */
|
||||
__suseconds_t tv_usec; /* Microseconds. */
|
||||
};
|
||||
# endif /* struct timeval */
|
||||
#endif /* need timeval */
|
||||
200
meta/packages/glibc/glibc-2.4/generic-bits_types.h
vendored
200
meta/packages/glibc/glibc-2.4/generic-bits_types.h
vendored
@@ -1,200 +0,0 @@
|
||||
/* bits/types.h -- definitions of __*_t types underlying *_t types.
|
||||
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/*
|
||||
* Never include this file directly; use <sys/types.h> instead.
|
||||
*/
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
#define _BITS_TYPES_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
/* Convenience types. */
|
||||
typedef unsigned char __u_char;
|
||||
typedef unsigned short int __u_short;
|
||||
typedef unsigned int __u_int;
|
||||
typedef unsigned long int __u_long;
|
||||
|
||||
/* Fixed-size types, underlying types depend on word size and compiler. */
|
||||
typedef signed char __int8_t;
|
||||
typedef unsigned char __uint8_t;
|
||||
typedef signed short int __int16_t;
|
||||
typedef unsigned short int __uint16_t;
|
||||
typedef signed int __int32_t;
|
||||
typedef unsigned int __uint32_t;
|
||||
#if __WORDSIZE == 64
|
||||
typedef signed long int __int64_t;
|
||||
typedef unsigned long int __uint64_t;
|
||||
#elif defined __GLIBC_HAVE_LONG_LONG
|
||||
__extension__ typedef signed long long int __int64_t;
|
||||
__extension__ typedef unsigned long long int __uint64_t;
|
||||
#endif
|
||||
|
||||
/* quad_t is also 64 bits. */
|
||||
#if __WORDSIZE == 64
|
||||
typedef long int __quad_t;
|
||||
typedef unsigned long int __u_quad_t;
|
||||
#elif defined __GLIBC_HAVE_LONG_LONG
|
||||
__extension__ typedef long long int __quad_t;
|
||||
__extension__ typedef unsigned long long int __u_quad_t;
|
||||
#else
|
||||
typedef struct
|
||||
{
|
||||
long __val[2];
|
||||
} __quad_t;
|
||||
typedef struct
|
||||
{
|
||||
__u_long __val[2];
|
||||
} __u_quad_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
|
||||
macros for each of the OS types we define below. The definitions
|
||||
of those macros must use the following macros for underlying types.
|
||||
We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
|
||||
variants of each of the following integer types on this machine.
|
||||
|
||||
16 -- "natural" 16-bit type (always short)
|
||||
32 -- "natural" 32-bit type (always int)
|
||||
64 -- "natural" 64-bit type (long or long long)
|
||||
LONG32 -- 32-bit type, traditionally long
|
||||
QUAD -- 64-bit type, always long long
|
||||
WORD -- natural type of __WORDSIZE bits (int or long)
|
||||
LONGWORD -- type of __WORDSIZE bits, traditionally long
|
||||
|
||||
We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
|
||||
conventional uses of `long' or `long long' type modifiers match the
|
||||
types we define, even when a less-adorned type would be the same size.
|
||||
This matters for (somewhat) portably writing printf/scanf formats for
|
||||
these types, where using the appropriate l or ll format modifiers can
|
||||
make the typedefs and the formats match up across all GNU platforms. If
|
||||
we used `long' when it's 64 bits where `long long' is expected, then the
|
||||
compiler would warn about the formats not matching the argument types,
|
||||
and the programmer changing them to shut up the compiler would break the
|
||||
program's portability.
|
||||
|
||||
Here we assume what is presently the case in all the GCC configurations
|
||||
we support: long long is always 64 bits, long is always word/address size,
|
||||
and int is always 32 bits. */
|
||||
|
||||
#define __S16_TYPE short int
|
||||
#define __U16_TYPE unsigned short int
|
||||
#define __S32_TYPE int
|
||||
#define __U32_TYPE unsigned int
|
||||
#define __SLONGWORD_TYPE long int
|
||||
#define __ULONGWORD_TYPE unsigned long int
|
||||
#if __WORDSIZE == 32
|
||||
# define __SQUAD_TYPE __quad_t
|
||||
# define __UQUAD_TYPE __u_quad_t
|
||||
# define __SWORD_TYPE int
|
||||
# define __UWORD_TYPE unsigned int
|
||||
# define __SLONG32_TYPE long int
|
||||
# define __ULONG32_TYPE unsigned long int
|
||||
# define __S64_TYPE __quad_t
|
||||
# define __U64_TYPE __u_quad_t
|
||||
/* We want __extension__ before typedef's that use nonstandard base types
|
||||
such as `long long' in C89 mode. */
|
||||
# define __STD_TYPE __extension__ typedef
|
||||
#elif __WORDSIZE == 64
|
||||
# define __SQUAD_TYPE long int
|
||||
# define __UQUAD_TYPE unsigned long int
|
||||
# define __SWORD_TYPE long int
|
||||
# define __UWORD_TYPE unsigned long int
|
||||
# define __SLONG32_TYPE int
|
||||
# define __ULONG32_TYPE unsigned int
|
||||
# define __S64_TYPE long int
|
||||
# define __U64_TYPE unsigned long int
|
||||
/* No need to mark the typedef with __extension__. */
|
||||
# define __STD_TYPE typedef
|
||||
#else
|
||||
# error
|
||||
#endif
|
||||
#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
|
||||
|
||||
|
||||
__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
|
||||
__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
|
||||
__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
|
||||
__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
|
||||
__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
|
||||
__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
|
||||
__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
|
||||
__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
|
||||
__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
|
||||
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
|
||||
__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
|
||||
__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
|
||||
__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
|
||||
__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
|
||||
__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
|
||||
__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
|
||||
__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
|
||||
__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
|
||||
|
||||
__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
|
||||
__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
|
||||
__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
|
||||
|
||||
/* Clock ID used in clock and timer functions. */
|
||||
__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
|
||||
|
||||
/* Timer ID returned by `timer_create'. */
|
||||
__STD_TYPE __TIMER_T_TYPE __timer_t;
|
||||
|
||||
/* Type to represent block size. */
|
||||
__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
|
||||
|
||||
/* Types from the Large File Support interface. */
|
||||
|
||||
/* Type to count number of disk blocks. */
|
||||
__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
|
||||
__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
|
||||
|
||||
/* Type to count file system blocks. */
|
||||
__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
|
||||
__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
|
||||
|
||||
/* Type to count file system nodes. */
|
||||
__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
|
||||
__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
|
||||
|
||||
__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
|
||||
|
||||
/* These few don't really vary by system, they always correspond
|
||||
to one of the other defined types. */
|
||||
typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
|
||||
typedef __quad_t *__qaddr_t;
|
||||
typedef char *__caddr_t;
|
||||
|
||||
/* Duplicates info from stdint.h but this is used in unistd.h. */
|
||||
__STD_TYPE __SWORD_TYPE __intptr_t;
|
||||
|
||||
/* Duplicate info from sys/socket.h. */
|
||||
__STD_TYPE __U32_TYPE __socklen_t;
|
||||
|
||||
|
||||
#undef __STD_TYPE
|
||||
|
||||
#endif /* bits/types.h */
|
||||
@@ -1,66 +0,0 @@
|
||||
/* bits/typesizes.h -- underlying types for *_t. Generic version.
|
||||
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
The GNU C Library 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.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_TYPESIZES_H
|
||||
#define _BITS_TYPESIZES_H 1
|
||||
|
||||
/* See <bits/types.h> for the meaning of these macros. This file exists so
|
||||
that <bits/types.h> need not vary across different GNU platforms. */
|
||||
|
||||
#define __DEV_T_TYPE __UQUAD_TYPE
|
||||
#define __UID_T_TYPE __U32_TYPE
|
||||
#define __GID_T_TYPE __U32_TYPE
|
||||
#define __INO_T_TYPE __ULONGWORD_TYPE
|
||||
#define __INO64_T_TYPE __UQUAD_TYPE
|
||||
#define __MODE_T_TYPE __U32_TYPE
|
||||
#define __NLINK_T_TYPE __UWORD_TYPE
|
||||
#define __OFF_T_TYPE __SLONGWORD_TYPE
|
||||
#define __OFF64_T_TYPE __SQUAD_TYPE
|
||||
#define __PID_T_TYPE __S32_TYPE
|
||||
#define __RLIM_T_TYPE __ULONGWORD_TYPE
|
||||
#define __RLIM64_T_TYPE __UQUAD_TYPE
|
||||
#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
|
||||
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
|
||||
#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __ID_T_TYPE __U32_TYPE
|
||||
#define __CLOCK_T_TYPE __SLONGWORD_TYPE
|
||||
#define __TIME_T_TYPE __SLONGWORD_TYPE
|
||||
#define __USECONDS_T_TYPE __U32_TYPE
|
||||
#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
|
||||
#define __DADDR_T_TYPE __S32_TYPE
|
||||
#define __SWBLK_T_TYPE __SLONGWORD_TYPE
|
||||
#define __KEY_T_TYPE __S32_TYPE
|
||||
#define __CLOCKID_T_TYPE __S32_TYPE
|
||||
#define __TIMER_T_TYPE void *
|
||||
#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
|
||||
#define __FSID_T_TYPE struct { int __val[2]; }
|
||||
#define __SSIZE_T_TYPE __SWORD_TYPE
|
||||
|
||||
/* Number of descriptors that can fit in an `fd_set'. */
|
||||
#define __FD_SETSIZE 1024
|
||||
|
||||
|
||||
#endif /* bits/typesizes.h */
|
||||
@@ -1,29 +0,0 @@
|
||||
--- glibc-2.4/csu/libc-start.c.ark 2006-03-13 03:07:15.000000000 +0100
|
||||
+++ glibc-2.4/csu/libc-start.c 2006-03-13 03:08:51.000000000 +0100
|
||||
@@ -59,6 +59,11 @@
|
||||
# define LIBC_START_MAIN BP_SYM (__libc_start_main)
|
||||
#endif
|
||||
|
||||
+#ifdef SHARED
|
||||
+#include <pthread-functions.h>
|
||||
+extern struct pthread_functions __libc_pthread_functions;
|
||||
+#endif
|
||||
+
|
||||
#ifdef MAIN_AUXVEC_ARG
|
||||
/* main gets passed a pointer to the auxiliary. */
|
||||
# define MAIN_AUXVEC_DECL , void *
|
||||
--- glibc-2.4/nscd/Makefile.ark 2006-03-13 14:05:47.000000000 +0100
|
||||
+++ glibc-2.4/nscd/Makefile 2006-03-13 14:06:12.000000000 +0100
|
||||
@@ -67,8 +67,10 @@
|
||||
# contains only the basic kernel interface headers, not something like
|
||||
# libselinux. So the simplest thing is to presume that the standard
|
||||
# system headers will be ok for this file.
|
||||
-$(objpfx)nscd_stat.o: sysincludes = # nothing
|
||||
-$(objpfx)selinux.o: sysincludes = # nothing
|
||||
+# Except, of course, this breaks crosscompiling with kernel headers in
|
||||
+# a nonstandard location...
|
||||
+#$(objpfx)nscd_stat.o: sysincludes = # nothing
|
||||
+#$(objpfx)selinux.o: sysincludes = # nothing
|
||||
|
||||
distribute := nscd.h nscd-client.h dbg_log.h \
|
||||
$(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
|
||||
@@ -1,133 +0,0 @@
|
||||
Submitted By: Jim Gifford (patches at jg555 dot com)
|
||||
Date: 2006-08-18
|
||||
Initial Package Version: 2.4
|
||||
Origin: http://sourceware.org/bugzilla/show_bug.cgi?id=2873
|
||||
Upstream Status: Applied
|
||||
Description: Fixes http://sourceware.org/bugzilla/show_bug.cgi?id=2873
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=3040
|
||||
http://linuxfromscratch.org/pipermail/lfs-dev/2006-June/057562.html
|
||||
Updated by Joe Ciccone
|
||||
|
||||
diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c
|
||||
--- glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-02-23 14:50:21.000000000 -0800
|
||||
+++ glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-08-18 20:38:21.773288795 -0700
|
||||
@@ -61,6 +61,24 @@
|
||||
int
|
||||
fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
|
||||
{
|
||||
+ int result;
|
||||
+
|
||||
+#ifdef __NR_fchownat
|
||||
+# ifndef __ASSUME_ATFCTS
|
||||
+ if (__have_atfcts >= 0)
|
||||
+# endif
|
||||
+ {
|
||||
+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag);
|
||||
+# ifndef __ASSUME_ATFCTS
|
||||
+ if (result == -1 && errno == ENOSYS)
|
||||
+ __have_atfcts = -1;
|
||||
+ else
|
||||
+# endif
|
||||
+ return result;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+#ifndef __ASSUME_ATFCTS
|
||||
if (flag & ~AT_SYMLINK_NOFOLLOW)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
@@ -87,14 +105,13 @@
|
||||
file = buf;
|
||||
}
|
||||
|
||||
- int result;
|
||||
INTERNAL_SYSCALL_DECL (err);
|
||||
|
||||
-#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0
|
||||
-# if __ASSUME_LCHOWN_SYSCALL == 0
|
||||
+# if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0
|
||||
+# if __ASSUME_LCHOWN_SYSCALL == 0
|
||||
static int __libc_old_chown;
|
||||
|
||||
-# ifdef __NR_chown32
|
||||
+# ifdef __NR_chown32
|
||||
if (__libc_missing_32bit_uids <= 0)
|
||||
{
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
@@ -111,7 +128,7 @@
|
||||
|
||||
__libc_missing_32bit_uids = 1;
|
||||
}
|
||||
-# endif /* __NR_chown32 */
|
||||
+# endif /* __NR_chown32 */
|
||||
|
||||
if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
|
||||
|| ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
|
||||
@@ -135,13 +152,13 @@
|
||||
|
||||
result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner,
|
||||
group);
|
||||
-# elif __ASSUME_32BITUIDS
|
||||
+# elif __ASSUME_32BITUIDS
|
||||
/* This implies __ASSUME_LCHOWN_SYSCALL. */
|
||||
result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
|
||||
group);
|
||||
-# else
|
||||
+# else
|
||||
/* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */
|
||||
-# ifdef __NR_chown32
|
||||
+# ifdef __NR_chown32
|
||||
if (__libc_missing_32bit_uids <= 0)
|
||||
{
|
||||
result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
|
||||
@@ -153,7 +170,7 @@
|
||||
|
||||
__libc_missing_32bit_uids = 1;
|
||||
}
|
||||
-# endif /* __NR_chown32 */
|
||||
+# endif /* __NR_chown32 */
|
||||
if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
|
||||
|| ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
|
||||
{
|
||||
@@ -162,10 +179,10 @@
|
||||
}
|
||||
|
||||
result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group);
|
||||
-# endif
|
||||
-#else
|
||||
+# endif
|
||||
+# else
|
||||
result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group);
|
||||
-#endif
|
||||
+# endif
|
||||
|
||||
if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
|
||||
goto fail;
|
||||
@@ -175,4 +192,5 @@
|
||||
fail:
|
||||
__atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf);
|
||||
return -1;
|
||||
+#endif
|
||||
}
|
||||
diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c glibc-2.4/sysdeps/unix/sysv/linux/openat.c
|
||||
--- glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c 2006-02-28 21:32:42.000000000 -0800
|
||||
+++ glibc-2.4/sysdeps/unix/sysv/linux/openat.c 2006-08-18 20:39:14.360012706 -0700
|
||||
@@ -29,8 +29,6 @@
|
||||
|
||||
|
||||
#if !defined OPENAT && !defined __ASSUME_ATFCTS
|
||||
-# define OPENAT openat
|
||||
-
|
||||
/* Set errno after a failed call. If BUF is not null,
|
||||
it is a /proc/self/fd/ path name we just tried to use. */
|
||||
void
|
||||
@@ -63,6 +61,9 @@
|
||||
int __have_atfcts;
|
||||
#endif
|
||||
|
||||
+#ifndef OPENAT
|
||||
+# define OPENAT openat
|
||||
+#endif
|
||||
|
||||
#define OPENAT_NOT_CANCEL CONCAT (OPENAT)
|
||||
#define CONCAT(name) CONCAT2 (name)
|
||||
@@ -1,325 +0,0 @@
|
||||
http://sources.redhat.com/ml/libc-ports/2006-10/msg00040.html
|
||||
Avoid using asm/procinfo.h
|
||||
|
||||
* From: "Joseph S. Myers" <joseph at codesourcery dot com>
|
||||
* To: libc-ports at sourceware dot org
|
||||
* Date: Tue, 24 Oct 2006 19:25:12 +0000 (UTC)
|
||||
* Subject: Avoid using asm/procinfo.h
|
||||
|
||||
I previously noted
|
||||
<http://sourceware.org/ml/libc-ports/2006-08/msg00023.html> that the
|
||||
use of <asm/procinfo.h>, a Linux-specific kernel header, in
|
||||
sysdeps/arm/eabi, is an abstraction violation, and that in principle
|
||||
all the files in sysdeps/arm/eabi should use sysdep.h not
|
||||
asm/procinfo.h for HWCAP_VFP.
|
||||
|
||||
The ARM kernel maintainers have now declared that <asm/procinfo.h>
|
||||
should not be used outside the kernel at all (and in particular that
|
||||
headers_install is correct in not exporting it), and that these
|
||||
definitions will move to a different kernel header. This gives a
|
||||
concrete reason for making the change to use glibc's internal
|
||||
definitions, which this patch does, thereby allowing glibc to build
|
||||
with the exported headers.
|
||||
|
||||
2006-10-24 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/arm/eabi/fclrexcpt.c: Include <sysdep.h> instead of
|
||||
<asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP.
|
||||
* sysdeps/arm/eabi/fedisblxcpt.c: Likewise.
|
||||
* sysdeps/arm/eabi/feenablxcpt.c: Likewise.
|
||||
* sysdeps/arm/eabi/fegetenv.c: Likewise.
|
||||
* sysdeps/arm/eabi/fegetexcept.c: Likewise.
|
||||
* sysdeps/arm/eabi/fegetround.c: Likewise.
|
||||
* sysdeps/arm/eabi/feholdexcpt.c: Likewise.
|
||||
* sysdeps/arm/eabi/fesetenv.c: Likewise.
|
||||
* sysdeps/arm/eabi/fesetround.c: Likewise.
|
||||
* sysdeps/arm/eabi/fraiseexcpt.c: Likewise.
|
||||
* sysdeps/arm/eabi/fsetexcptflg.c: Likewise.
|
||||
* sysdeps/arm/eabi/ftestexcept.c: Likewise.
|
||||
* sysdeps/arm/eabi/setfpucw.c: Likewise.
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fclrexcpt.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fclrexcpt.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fclrexcpt.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fclrexcpt.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fclrexcpt.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
__feclearexcept (int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long int temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fedisblxcpt.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fedisblxcpt.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fedisblxcpt.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fedisblxcpt.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fedisblxcpt.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -24,12 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
fedisableexcept (int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long int new_exc, old_exc;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/feenablxcpt.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/feenablxcpt.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 feenablxcpt.c
|
||||
--- libc/ports/sysdeps/arm/eabi/feenablxcpt.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/feenablxcpt.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -24,12 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
feenableexcept (int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long int new_exc, old_exc;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fegetenv.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fegetenv.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fegetenv.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fegetenv.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fegetenv.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
__fegetenv (fenv_t *envp)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long int temp;
|
||||
_FPU_GETCW (temp);
|
||||
Index: libc/ports/sysdeps/arm/eabi/fegetexcept.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fegetexcept.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fegetexcept.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fegetexcept.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fegetexcept.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -24,12 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
fegetexcept (void)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fegetround.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fegetround.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fegetround.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fegetround.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fegetround.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
fegetround (void)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned int temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/feholdexcpt.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/feholdexcpt.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 feholdexcpt.c
|
||||
--- libc/ports/sysdeps/arm/eabi/feholdexcpt.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/feholdexcpt.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
feholdexcept (fenv_t *envp)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned long int temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fesetenv.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fesetenv.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fesetenv.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fesetenv.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fesetenv.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
__fesetenv (const fenv_t *envp)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
unsigned int temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fesetround.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fesetround.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fesetround.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fesetround.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fesetround.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
fesetround (int round)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
fpu_control_t temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/fraiseexcpt.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fraiseexcpt.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fraiseexcpt.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fraiseexcpt.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fraiseexcpt.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -24,12 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
feraiseexcept (int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
int fpscr;
|
||||
const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX,
|
||||
Index: libc/ports/sysdeps/arm/eabi/fsetexcptflg.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/fsetexcptflg.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 fsetexcptflg.c
|
||||
--- libc/ports/sysdeps/arm/eabi/fsetexcptflg.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/fsetexcptflg.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -24,12 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
__fesetexceptflag (const fexcept_t *flagp, int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
fexcept_t temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/ftestexcept.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/ftestexcept.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 ftestexcept.c
|
||||
--- libc/ports/sysdeps/arm/eabi/ftestexcept.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/ftestexcept.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
int
|
||||
fetestexcept (int excepts)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
fexcept_t temp;
|
||||
|
||||
Index: libc/ports/sysdeps/arm/eabi/setfpucw.c
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/eabi/setfpucw.c,v
|
||||
retrieving revision 1.1
|
||||
diff -u -r1.1 setfpucw.c
|
||||
--- libc/ports/sysdeps/arm/eabi/setfpucw.c 10 Oct 2005 15:29:32 -0000 1.1
|
||||
+++ libc/ports/sysdeps/arm/eabi/setfpucw.c 24 Oct 2006 19:17:51 -0000
|
||||
@@ -23,12 +23,12 @@
|
||||
#include <unistd.h>
|
||||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
-#include <asm/procinfo.h>
|
||||
+#include <sysdep.h>
|
||||
|
||||
void
|
||||
__setfpucw (fpu_control_t set)
|
||||
{
|
||||
- if (GLRO (dl_hwcap) & HWCAP_VFP)
|
||||
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
|
||||
{
|
||||
fpu_control_t cw;
|
||||
343
meta/packages/glibc/glibc-2.4/glibc-check_pf.patch
vendored
343
meta/packages/glibc/glibc-2.4/glibc-check_pf.patch
vendored
@@ -1,343 +0,0 @@
|
||||
From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006
|
||||
Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
|
||||
Delivered-To: listarch-libc-ports at sources dot redhat dot com
|
||||
Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000
|
||||
Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000
|
||||
X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP
|
||||
X-Spam-Check-By: sourceware.org
|
||||
Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000
|
||||
Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500
|
||||
Date: Tue, 31 Oct 2006 12:37:08 -0500
|
||||
From: Daniel Jacobowitz <drow at false dot org>
|
||||
To: Mike Frysinger <vapier at gentoo dot org>
|
||||
Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com>
|
||||
Subject: Re: Problem with glibc-2.5 on ARM
|
||||
Message-ID: <20061031173708.GJ20468@nevyn.them.org>
|
||||
References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org>
|
||||
User-Agent: Mutt/1.5.13 (2006-08-11)
|
||||
X-IsSubscribed: yes
|
||||
Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
|
||||
Precedence: bulk
|
||||
List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
|
||||
List-Post: <mailto:libc-ports at sourceware dot org>
|
||||
List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
|
||||
Sender: libc-ports-owner at sourceware dot org
|
||||
Delivered-To: mailing list libc-ports at sourceware dot org
|
||||
|
||||
On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote:
|
||||
> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote:
|
||||
> > ARM is going to need a slightly different version of that file, I
|
||||
> > guess.
|
||||
>
|
||||
> would declaring req with attribute packed not help ?
|
||||
> -mike
|
||||
|
||||
Nope. "struct rtgenmsg" would still have size 4.
|
||||
|
||||
Philip, are you still at all interested in this for the old ABI?
|
||||
I don't have time to test this patch right now, but I think it
|
||||
will work.
|
||||
|
||||
--
|
||||
Daniel Jacobowitz
|
||||
CodeSourcery
|
||||
|
||||
2006-10-31 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/check_pf.c: New file.
|
||||
* sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file.
|
||||
|
||||
Index: sysdeps/unix/sysv/linux/arm/check_pf.c
|
||||
===================================================================
|
||||
RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c
|
||||
diff -N sysdeps/unix/sysv/linux/arm/check_pf.c
|
||||
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
||||
+++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000
|
||||
@@ -0,0 +1,274 @@
|
||||
+/* Determine protocol families for which interfaces exist. ARM Linux version.
|
||||
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#include <assert.h>
|
||||
+#include <errno.h>
|
||||
+#include <ifaddrs.h>
|
||||
+#include <netdb.h>
|
||||
+#include <stddef.h>
|
||||
+#include <string.h>
|
||||
+#include <time.h>
|
||||
+#include <unistd.h>
|
||||
+#include <sys/socket.h>
|
||||
+
|
||||
+#include <asm/types.h>
|
||||
+#include <linux/netlink.h>
|
||||
+#include <linux/rtnetlink.h>
|
||||
+
|
||||
+#include <not-cancel.h>
|
||||
+#include <kernel-features.h>
|
||||
+
|
||||
+
|
||||
+#ifndef IFA_F_TEMPORARY
|
||||
+# define IFA_F_TEMPORARY IFA_F_SECONDARY
|
||||
+#endif
|
||||
+#ifndef IFA_F_HOMEADDRESS
|
||||
+# define IFA_F_HOMEADDRESS 0
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+static int
|
||||
+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
|
||||
+ struct in6addrinfo **in6ai, size_t *in6ailen)
|
||||
+{
|
||||
+ struct req
|
||||
+ {
|
||||
+ struct nlmsghdr nlh;
|
||||
+ struct rtgenmsg g;
|
||||
+ } req;
|
||||
+ struct sockaddr_nl nladdr;
|
||||
+
|
||||
+ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds
|
||||
+ it up to a word. Clear the padding explicitly here. */
|
||||
+ assert (sizeof (req.g) == 4);
|
||||
+ memset (&req.g, '\0', sizeof (req.g));
|
||||
+
|
||||
+ req.nlh.nlmsg_len = sizeof (req);
|
||||
+ req.nlh.nlmsg_type = RTM_GETADDR;
|
||||
+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
|
||||
+ req.nlh.nlmsg_pid = 0;
|
||||
+ req.nlh.nlmsg_seq = time (NULL);
|
||||
+ req.g.rtgen_family = AF_UNSPEC;
|
||||
+
|
||||
+ memset (&nladdr, '\0', sizeof (nladdr));
|
||||
+ nladdr.nl_family = AF_NETLINK;
|
||||
+
|
||||
+ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
|
||||
+ (struct sockaddr *) &nladdr,
|
||||
+ sizeof (nladdr))) < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ *seen_ipv4 = false;
|
||||
+ *seen_ipv6 = false;
|
||||
+
|
||||
+ bool done = false;
|
||||
+ char buf[4096];
|
||||
+ struct iovec iov = { buf, sizeof (buf) };
|
||||
+ struct in6ailist
|
||||
+ {
|
||||
+ struct in6addrinfo info;
|
||||
+ struct in6ailist *next;
|
||||
+ } *in6ailist = NULL;
|
||||
+ size_t in6ailistlen = 0;
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ struct msghdr msg =
|
||||
+ {
|
||||
+ (void *) &nladdr, sizeof (nladdr),
|
||||
+ &iov, 1,
|
||||
+ NULL, 0,
|
||||
+ 0
|
||||
+ };
|
||||
+
|
||||
+ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
|
||||
+ if (read_len < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (msg.msg_flags & MSG_TRUNC)
|
||||
+ return -1;
|
||||
+
|
||||
+ struct nlmsghdr *nlmh;
|
||||
+ for (nlmh = (struct nlmsghdr *) buf;
|
||||
+ NLMSG_OK (nlmh, (size_t) read_len);
|
||||
+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
|
||||
+ {
|
||||
+ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid
|
||||
+ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
|
||||
+ continue;
|
||||
+
|
||||
+ if (nlmh->nlmsg_type == RTM_NEWADDR)
|
||||
+ {
|
||||
+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
|
||||
+
|
||||
+ switch (ifam->ifa_family)
|
||||
+ {
|
||||
+ case AF_INET:
|
||||
+ *seen_ipv4 = true;
|
||||
+ break;
|
||||
+ case AF_INET6:
|
||||
+ *seen_ipv6 = true;
|
||||
+
|
||||
+ if (ifam->ifa_flags & (IFA_F_DEPRECATED
|
||||
+ | IFA_F_TEMPORARY
|
||||
+ | IFA_F_HOMEADDRESS))
|
||||
+ {
|
||||
+ struct rtattr *rta = IFA_RTA (ifam);
|
||||
+ size_t len = (nlmh->nlmsg_len
|
||||
+ - NLMSG_LENGTH (sizeof (*ifam)));
|
||||
+ void *local = NULL;
|
||||
+ void *address = NULL;
|
||||
+ while (RTA_OK (rta, len))
|
||||
+ {
|
||||
+ switch (rta->rta_type)
|
||||
+ {
|
||||
+ case IFA_LOCAL:
|
||||
+ local = RTA_DATA (rta);
|
||||
+ break;
|
||||
+
|
||||
+ case IFA_ADDRESS:
|
||||
+ address = RTA_DATA (rta);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ rta = RTA_NEXT (rta, len);
|
||||
+ }
|
||||
+
|
||||
+ struct in6ailist *newp = alloca (sizeof (*newp));
|
||||
+ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
|
||||
+ ? in6ai_deprecated : 0)
|
||||
+ | ((ifam->ifa_flags
|
||||
+ & IFA_F_TEMPORARY)
|
||||
+ ? in6ai_temporary : 0)
|
||||
+ | ((ifam->ifa_flags
|
||||
+ & IFA_F_HOMEADDRESS)
|
||||
+ ? in6ai_homeaddress : 0));
|
||||
+ memcpy (newp->info.addr, address ?: local,
|
||||
+ sizeof (newp->info.addr));
|
||||
+ newp->next = in6ailist;
|
||||
+ in6ailist = newp;
|
||||
+ ++in6ailistlen;
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ /* Ignore. */
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ else if (nlmh->nlmsg_type == NLMSG_DONE)
|
||||
+ /* We found the end, leave the loop. */
|
||||
+ done = true;
|
||||
+ }
|
||||
+ }
|
||||
+ while (! done);
|
||||
+
|
||||
+ close_not_cancel_no_status (fd);
|
||||
+
|
||||
+ if (in6ailist != NULL)
|
||||
+ {
|
||||
+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai));
|
||||
+ if (*in6ai == NULL)
|
||||
+ return -1;
|
||||
+
|
||||
+ *in6ailen = in6ailistlen;
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ (*in6ai)[--in6ailistlen] = in6ailist->info;
|
||||
+ in6ailist = in6ailist->next;
|
||||
+ }
|
||||
+ while (in6ailist != NULL);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/* We don't know if we have NETLINK support compiled in in our
|
||||
+ Kernel. */
|
||||
+#if __ASSUME_NETLINK_SUPPORT == 0
|
||||
+/* Define in ifaddrs.h. */
|
||||
+extern int __no_netlink_support attribute_hidden;
|
||||
+#else
|
||||
+# define __no_netlink_support 0
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+void
|
||||
+attribute_hidden
|
||||
+__check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
+ struct in6addrinfo **in6ai, size_t *in6ailen)
|
||||
+{
|
||||
+ *in6ai = NULL;
|
||||
+ *in6ailen = 0;
|
||||
+
|
||||
+ if (! __no_netlink_support)
|
||||
+ {
|
||||
+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
||||
+
|
||||
+ struct sockaddr_nl nladdr;
|
||||
+ memset (&nladdr, '\0', sizeof (nladdr));
|
||||
+ nladdr.nl_family = AF_NETLINK;
|
||||
+
|
||||
+ socklen_t addr_len = sizeof (nladdr);
|
||||
+
|
||||
+ if (fd >= 0
|
||||
+ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||
+ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
|
||||
+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6,
|
||||
+ in6ai, in6ailen) == 0)
|
||||
+ /* It worked. */
|
||||
+ return;
|
||||
+
|
||||
+ if (fd >= 0)
|
||||
+ __close (fd);
|
||||
+
|
||||
+#if __ASSUME_NETLINK_SUPPORT == 0
|
||||
+ /* Remember that there is no netlink support. */
|
||||
+ __no_netlink_support = 1;
|
||||
+#else
|
||||
+ /* We cannot determine what interfaces are available. Be
|
||||
+ pessimistic. */
|
||||
+ *seen_ipv4 = true;
|
||||
+ *seen_ipv6 = true;
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+#if __ASSUME_NETLINK_SUPPORT == 0
|
||||
+ /* No netlink. Get the interface list via getifaddrs. */
|
||||
+ struct ifaddrs *ifa = NULL;
|
||||
+ if (getifaddrs (&ifa) != 0)
|
||||
+ {
|
||||
+ /* We cannot determine what interfaces are available. Be
|
||||
+ pessimistic. */
|
||||
+ *seen_ipv4 = true;
|
||||
+ *seen_ipv6 = true;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ struct ifaddrs *runp;
|
||||
+ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
|
||||
+ if (runp->ifa_addr->sa_family == PF_INET)
|
||||
+ *seen_ipv4 = true;
|
||||
+ else if (runp->ifa_addr->sa_family == PF_INET6)
|
||||
+ *seen_ipv6 = true;
|
||||
+
|
||||
+ (void) freeifaddrs (ifa);
|
||||
+#endif
|
||||
+}
|
||||
Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
|
||||
===================================================================
|
||||
RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
|
||||
diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
|
||||
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
||||
+++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000
|
||||
@@ -0,0 +1 @@
|
||||
+#include <sysdeps/unix/sysv/linux/check_pf.c>
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
With the -nostdinc that we get --with-headers, we need to pull in GCC
|
||||
4.3's include-fixed subdir too, because that's what contains limits.h
|
||||
and syslimits.h now.
|
||||
|
||||
|
||||
for ChangeLog
|
||||
2008-01-30 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* configure.in (SYSINCLUDES): Add GCC's include-fixed after include.
|
||||
* configure: Rebuilt.
|
||||
|
||||
Index: configure
|
||||
===================================================================
|
||||
--- configure.orig 2008-01-30 15:40:55.000000000 -0200
|
||||
+++ configure 2008-01-31 03:24:36.000000000 -0200
|
||||
@@ -5066,7 +5066,12 @@ echo "$as_me: WARNING:
|
||||
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
|
||||
if test -n "$sysheaders"; then
|
||||
ccheaders=`$CC -print-file-name=include`
|
||||
- SYSINCLUDES="-nostdinc -isystem $ccheaders \
|
||||
+ if test -d "${ccheaders}-fixed"; then
|
||||
+ fixedccheaders="-isystem ${ccheaders}-fixed"
|
||||
+ else
|
||||
+ fixedccheaders=
|
||||
+ fi
|
||||
+ SYSINCLUDES="-nostdinc -isystem $ccheaders $fixedccheaders \
|
||||
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
|
||||
if test -n "$CXX"; then
|
||||
cxxversion=`$CXX -dumpversion 2>&5` &&
|
||||
Index: configure.in
|
||||
===================================================================
|
||||
--- configure.in.orig 2008-01-30 15:40:55.000000000 -0200
|
||||
+++ configure.in 2008-01-31 03:24:30.000000000 -0200
|
||||
@@ -915,7 +915,12 @@ test -n "$aux_missing" && AC_MSG_WARN([
|
||||
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
|
||||
if test -n "$sysheaders"; then
|
||||
ccheaders=`$CC -print-file-name=include`
|
||||
- SYSINCLUDES="-nostdinc -isystem $ccheaders \
|
||||
+ if test -d "${ccheaders}-fixed"; then
|
||||
+ fixedccheaders="-isystem ${ccheaders}-fixed"
|
||||
+ else
|
||||
+ fixedccheaders=
|
||||
+ fi
|
||||
+ SYSINCLUDES="-nostdinc -isystem $ccheaders $fixedccheaders \
|
||||
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
|
||||
if test -n "$CXX"; then
|
||||
cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
|
||||
|
||||
--
|
||||
Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/
|
||||
FSF Latin America Board Member http://www.fsfla.org/
|
||||
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
|
||||
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}
|
||||
|
||||
11
meta/packages/glibc/glibc-2.4/ldd-unbash.patch
vendored
11
meta/packages/glibc/glibc-2.4/ldd-unbash.patch
vendored
@@ -1,11 +0,0 @@
|
||||
--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000
|
||||
+++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000
|
||||
@@ -110,7 +110,7 @@
|
||||
# environments where the executed program might not have permissions
|
||||
# to write to the console/tty. But only bash 3.x supports the pipefail
|
||||
# option, and we don't bother to handle the case for older bash versions.
|
||||
-if set -o pipefail 2> /dev/null; then
|
||||
+if false; then
|
||||
try_trace() {
|
||||
eval $add_env '"$@"' | cat
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
This patch moves ld.so.cache from /etc to /var/run. This is for devices
|
||||
where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
|
||||
|
||||
#
|
||||
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
|
||||
#
|
||||
|
||||
--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
|
||||
+++ libc/sysdeps/generic/dl-cache.h
|
||||
@@ -29,7 +29,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef LD_SO_CACHE
|
||||
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
|
||||
+# define LD_SO_CACHE "/var/run/ld.so.cache"
|
||||
#endif
|
||||
|
||||
#ifndef add_system_dir
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
bits/stdio-lock.h | 17 +++++++++++++----
|
||||
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
--- glibc-2.7.orig/bits/stdio-lock.h
|
||||
+++ glibc-2.7/bits/stdio-lock.h
|
||||
@@ -45,14 +45,23 @@ __libc_lock_define_recursive (typedef, _
|
||||
#define _IO_cleanup_region_end(_doit) \
|
||||
__libc_cleanup_region_end (_doit)
|
||||
|
||||
#if defined _LIBC && !defined NOT_IN_libc
|
||||
# define _IO_acquire_lock(_fp) \
|
||||
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
|
||||
- _IO_flockfile (_fp)
|
||||
+ { \
|
||||
+ _IO_FILE *_IO_acquire_lock_file = _fp; \
|
||||
+ __libc_cleanup_region_start (1, (void (*) (void *)) _IO_acquire_lock_fct, &_IO_acquire_lock_file); \
|
||||
+ _IO_flockfile (_IO_acquire_lock_file)
|
||||
+
|
||||
+# define _IO_acquire_lock_clear_flags2(_fp) \
|
||||
+ { \
|
||||
+ _IO_FILE *_IO_acquire_lock_file = _fp; \
|
||||
+ __libc_cleanup_region_start (1, (void (*) (void *)) _IO_acquire_lock_clear_flags2_fct, &_IO_acquire_lock_file); \
|
||||
+ _IO_flockfile (_IO_acquire_lock_file)
|
||||
|
||||
# define _IO_release_lock(_fp) \
|
||||
- _IO_funlockfile (_fp); \
|
||||
- _IO_cleanup_region_end (0)
|
||||
+ __libc_cleanup_region_end (1); \
|
||||
+ }
|
||||
+
|
||||
#endif
|
||||
|
||||
#endif /* bits/stdio-lock.h */
|
||||
@@ -1,9 +0,0 @@
|
||||
Create a configparms file which disabled no-z-defs.
|
||||
This is required to build a working glibs for sh4,
|
||||
without there will be a lot linker errors during the build.
|
||||
|
||||
diff -duNr libc.orig/configparms libc/configparms
|
||||
--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000
|
||||
+++ libc/configparms 2006-02-23 14:08:18.000000000 +1100
|
||||
@@ -0,0 +1 @@
|
||||
+no-z-defs=yes
|
||||
@@ -1,26 +0,0 @@
|
||||
--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100
|
||||
+++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100
|
||||
@@ -45,5 +45,6 @@
|
||||
AC_MSG_ERROR([the compiler must support C cleanup handling])
|
||||
fi
|
||||
else
|
||||
- AC_MSG_ERROR(forced unwind support is required)
|
||||
+ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling])
|
||||
+ AC_DEFINE(HAVE_FORCED_UNWIND)
|
||||
fi
|
||||
--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100
|
||||
+++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100
|
||||
@@ -153,7 +153,10 @@
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
else
|
||||
- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5
|
||||
-echo "$as_me: error: forced unwind support is required" >&2;}
|
||||
- { (exit 1); exit 1; }; }
|
||||
+ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5
|
||||
+echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;}
|
||||
+ cat >>confdefs.h <<\_ACEOF
|
||||
+#define HAVE_FORCED_UNWIND 1
|
||||
+_ACEOF
|
||||
+
|
||||
fi
|
||||
@@ -1,25 +0,0 @@
|
||||
diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c
|
||||
--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200
|
||||
+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100
|
||||
@@ -25,6 +25,9 @@
|
||||
#include <sysdep.h>
|
||||
#include <ldsodefs.h>
|
||||
|
||||
+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
|
||||
+
|
||||
+
|
||||
static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
|
||||
static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
|
||||
static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
|
||||
diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c
|
||||
--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200
|
||||
+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <sysdep.h>
|
||||
#include <ldsodefs.h>
|
||||
|
||||
+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
|
||||
+
|
||||
static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
|
||||
static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
|
||||
static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
|
||||
@@ -1,149 +0,0 @@
|
||||
Index: glibc-2.4/configure
|
||||
===================================================================
|
||||
--- glibc-2.4.orig/configure 2006-03-06 12:18:56.000000000 +0100
|
||||
+++ glibc-2.4/configure 2006-08-06 14:10:51.000000000 +0200
|
||||
@@ -5488,6 +5488,95 @@
|
||||
fi
|
||||
fi
|
||||
|
||||
+### XXXX copy and pasted
|
||||
+# Check for readelf
|
||||
+# Extract the first word of "$target_alias-readelf", so it can be a program name with args.
|
||||
+set dummy $target_alias-readelf; ac_word=$2
|
||||
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
|
||||
+if test "${ac_cv_prog_READELF+set}" = set; then
|
||||
+ echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
+else
|
||||
+ if test -n "$READELF"; then
|
||||
+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
|
||||
+else
|
||||
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
+for as_dir in $PATH
|
||||
+do
|
||||
+ IFS=$as_save_IFS
|
||||
+ test -z "$as_dir" && as_dir=.
|
||||
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
+ ac_cv_prog_READELF="$target_alias-readelf"
|
||||
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
+ break 2
|
||||
+ fi
|
||||
+done
|
||||
+done
|
||||
+IFS=$as_save_IFS
|
||||
+
|
||||
+fi
|
||||
+fi
|
||||
+READELF=$ac_cv_prog_READELF
|
||||
+if test -n "$READELF"; then
|
||||
+ { echo "$as_me:$LINENO: result: $READELF" >&5
|
||||
+echo "${ECHO_T}$READELF" >&6; }
|
||||
+else
|
||||
+ { echo "$as_me:$LINENO: result: no" >&5
|
||||
+echo "${ECHO_T}no" >&6; }
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+if test -z "$ac_cv_prog_READELF"; then
|
||||
+ if test "$build" = "$target"; then
|
||||
+ ac_ct_READELF=$READELF
|
||||
+ # Extract the first word of "readelf", so it can be a program name with args.
|
||||
+set dummy readelf; ac_word=$2
|
||||
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
|
||||
+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
|
||||
+ echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
+else
|
||||
+ if test -n "$ac_ct_READELF"; then
|
||||
+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
|
||||
+else
|
||||
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
+for as_dir in $PATH
|
||||
+do
|
||||
+ IFS=$as_save_IFS
|
||||
+ test -z "$as_dir" && as_dir=.
|
||||
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||
+ ac_cv_prog_ac_ct_READELF="readelf"
|
||||
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
+ break 2
|
||||
+ fi
|
||||
+done
|
||||
+done
|
||||
+IFS=$as_save_IFS
|
||||
+
|
||||
+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf"
|
||||
+fi
|
||||
+fi
|
||||
+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
|
||||
+if test -n "$ac_ct_READELF"; then
|
||||
+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
|
||||
+echo "${ECHO_T}$ac_ct_READELF" >&6; }
|
||||
+else
|
||||
+ { echo "$as_me:$LINENO: result: no" >&5
|
||||
+echo "${ECHO_T}no" >&6; }
|
||||
+fi
|
||||
+
|
||||
+ READELF=ac_ct_READELF
|
||||
+ else
|
||||
+ READELF="readelf"
|
||||
+ fi
|
||||
+else
|
||||
+ READELF="$ac_cv_prog_READELF"
|
||||
+fi
|
||||
+
|
||||
+### XXXX copy and pasted
|
||||
+
|
||||
echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
|
||||
echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
|
||||
if test "${libc_cv_initfini_array+set}" = set; then
|
||||
@@ -5507,7 +5596,7 @@
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }
|
||||
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
|
||||
@@ -5801,7 +5890,7 @@
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }
|
||||
then
|
||||
- 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
|
||||
Index: glibc-2.4/configure.in
|
||||
===================================================================
|
||||
--- glibc-2.4.orig/configure.in 2006-03-01 10:17:40.000000000 +0100
|
||||
+++ glibc-2.4/configure.in 2006-08-06 14:09:31.000000000 +0200
|
||||
@@ -1350,6 +1350,8 @@
|
||||
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
|
||||
@@ -1361,7 +1363,7 @@
|
||||
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
|
||||
@@ -1543,7 +1545,7 @@
|
||||
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
|
||||
14
meta/packages/glibc/glibc-2.9/arm-check-pf.patch
vendored
14
meta/packages/glibc/glibc-2.9/arm-check-pf.patch
vendored
@@ -1,14 +0,0 @@
|
||||
Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/check_pf.c
|
||||
===================================================================
|
||||
--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/check_pf.c 2009-06-19 20:45:32.451372131 +0400
|
||||
+++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/check_pf.c 2009-06-19 20:45:51.351313426 +0400
|
||||
@@ -207,9 +207,6 @@
|
||||
newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
|
||||
? in6ai_deprecated : 0)
|
||||
| ((ifam->ifa_flags
|
||||
- & IFA_F_TEMPORARY)
|
||||
- ? in6ai_temporary : 0)
|
||||
- | ((ifam->ifa_flags
|
||||
& IFA_F_HOMEADDRESS)
|
||||
? in6ai_homeaddress : 0));
|
||||
memcpy (newp->info.addr, address ?: local,
|
||||
58
meta/packages/glibc/glibc-2.9/arm-longlong.patch
vendored
58
meta/packages/glibc/glibc-2.9/arm-longlong.patch
vendored
@@ -1,58 +0,0 @@
|
||||
--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100
|
||||
+++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100
|
||||
@@ -206,6 +206,14 @@
|
||||
"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" \
|
||||
@@ -227,7 +235,13 @@
|
||||
: "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 (__hppa) && W_TYPE_SIZE == 32
|
||||
--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100
|
||||
+++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* __clz_tab -- support for longlong.h
|
||||
+ Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
|
||||
+/* Nothing required. */
|
||||
+#else
|
||||
+#include <stdlib/mp_clz_tab.c>
|
||||
+#endif
|
||||
@@ -1,12 +0,0 @@
|
||||
Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
|
||||
===================================================================
|
||||
--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:35.446686910 +0400
|
||||
+++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:43.774683370 +0400
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <atomic.h>
|
||||
#include <sysdep.h>
|
||||
#include <kernel-features.h>
|
||||
+#include <tls.h>
|
||||
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
||||
758
meta/packages/glibc/glibc-2.9/arm-memcpy.patch
vendored
758
meta/packages/glibc/glibc-2.9/arm-memcpy.patch
vendored
@@ -1,758 +0,0 @@
|
||||
--- /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)
|
||||
|
||||
--- /dev/null 2004-02-02 20:32:13.000000000 +0000
|
||||
+++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
|
||||
@@ -0,0 +1,242 @@
|
||||
+/*
|
||||
+ * 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)
|
||||
+
|
||||
@@ -1,10 +0,0 @@
|
||||
--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100
|
||||
+++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100
|
||||
@@ -63,5 +63,7 @@
|
||||
_dl_debug_state;
|
||||
# Pointer protection.
|
||||
__pointer_chk_guard;
|
||||
+ # for ldconfig
|
||||
+ _dl_cache_libcmp;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
--- glibc-2.9.orig/configure.in 2009-10-22 15:38:13.000000000 +0200
|
||||
+++ glibc-2.9/configure.in 2009-10-22 15:37:33.000000000 +0200
|
||||
@@ -844,10 +844,10 @@
|
||||
# Accept binutils 2.13 or newer.
|
||||
AC_CHECK_PROG_VER(AS, $AS, --version,
|
||||
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
|
||||
- [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
|
||||
+ [2.1[3-9]* | 2.2* ], AS=: critic_missing="$critic_missing as")
|
||||
AC_CHECK_PROG_VER(LD, $LD, --version,
|
||||
[GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
|
||||
- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
|
||||
+ [2.1[3-9]* | 2.2* ], LD=: critic_missing="$critic_missing ld")
|
||||
|
||||
# We need the physical current working directory. We cannot use the
|
||||
# "pwd -P" shell builtin since that's not portable. Instead we try to
|
||||
--- glibc-2.9.orig/configure 2009-02-26 22:28:17.000000000 +0100
|
||||
+++ glibc-2.9/configure 2009-10-22 15:43:11.000000000 +0200
|
||||
@@ -4531,7 +4531,7 @@
|
||||
ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 2.1[3-9]*)
|
||||
+ 2.1[3-9]* | 2.2*)
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
@@ -4594,7 +4594,7 @@
|
||||
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 2.1[3-9]*)
|
||||
+ 2.1[3-9]* | 2.2*)
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From 7c8a67320e26b8c11108bf0a3410d3aef9cf3486 Mon Sep 17 00:00:00 2001
|
||||
From: Ulrich Drepper <drepper@redhat.com>
|
||||
Date: Sat, 31 Jan 2009 00:21:15 +0000
|
||||
Subject: [PATCH] * elf/Makefile (ld.so): Adjust the sed script to insert _begin in to newer linker scripts.
|
||||
---
|
||||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 8079fe9..e44ff1d 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -1,4 +1,4 @@
|
||||
-# Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc.
|
||||
+# Copyright (C) 1995-2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
|
||||
$(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \
|
||||
LC_ALL=C \
|
||||
sed -e '/^=========/,/^=========/!d;/^=========/d' \
|
||||
- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
|
||||
+ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
|
||||
> $@.lds
|
||||
$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
|
||||
$(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \
|
||||
--
|
||||
1.6.3.2
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html
|
||||
|
||||
--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100
|
||||
+++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100
|
||||
@@ -50,6 +50,8 @@
|
||||
_IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
|
||||
_IO_flockfile (_fp)
|
||||
|
||||
+# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
|
||||
+
|
||||
# define _IO_release_lock(_fp) \
|
||||
_IO_funlockfile (_fp); \
|
||||
_IO_cleanup_region_end (0)
|
||||
@@ -1,15 +0,0 @@
|
||||
http://sourceware.org/ml/libc-ports/2008-04/msg00005.html
|
||||
|
||||
|
||||
Index: glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
|
||||
===================================================================
|
||||
--- glibc-2.6.1.orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:18.000000000 -0700
|
||||
+++ glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:28.000000000 -0700
|
||||
@@ -45,7 +45,6 @@
|
||||
#include <sys/mman.h>
|
||||
|
||||
#include <linux/version.h>
|
||||
-#include <asm/page.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
|
||||
12
meta/packages/glibc/glibc-2.9/local-args6.diff
vendored
12
meta/packages/glibc/glibc-2.9/local-args6.diff
vendored
@@ -1,12 +0,0 @@
|
||||
--- glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h.orig
|
||||
+++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
|
||||
@@ -73,6 +73,9 @@
|
||||
# define DOCARGS_5 DOCARGS_4
|
||||
# define UNDOCARGS_5 UNDOCARGS_4
|
||||
|
||||
+# define DOCARGS_6 DOCARGS_5
|
||||
+# define UNDOCARGS_6 UNDOCARGS_5
|
||||
+
|
||||
# ifdef IS_IN_libpthread
|
||||
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
|
||||
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
|
||||
38
meta/packages/glibc/glibc-2.9/march-i686.patch
vendored
38
meta/packages/glibc/glibc-2.9/march-i686.patch
vendored
@@ -1,38 +0,0 @@
|
||||
2007-02-15 Khem Raj <kraj@xxxxxxxxxx>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686.
|
||||
* nptl/sysdeps/pthread/pt-initfini.c: Ditto.
|
||||
|
||||
|
||||
|
||||
Index: sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
===================================================================
|
||||
--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469)
|
||||
+++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy)
|
||||
@@ -29,6 +29,10 @@
|
||||
#include <dl-sysdep.h>
|
||||
#include <tls.h>
|
||||
|
||||
+#if defined __i686 && defined __ASSEMBLER__
|
||||
+#undef __i686
|
||||
+#define __i686 __i686
|
||||
+#endif
|
||||
|
||||
/* For Linux we can use the system call table in the header file
|
||||
/usr/include/asm/unistd.h
|
||||
Index: nptl/sysdeps/pthread/pt-initfini.c
|
||||
===================================================================
|
||||
--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469)
|
||||
+++ nptl/sysdeps/pthread/pt-initfini.c (working copy)
|
||||
@@ -45,6 +45,11 @@
|
||||
/* Embed an #include to pull in the alignment and .end directives. */
|
||||
asm ("\n#include \"defs.h\"");
|
||||
|
||||
+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
|
||||
+asm ("\n#undef __i686");
|
||||
+asm ("\n#define __i686 __i686");
|
||||
+asm ("\n#endif");
|
||||
+
|
||||
/* The initial common code ends here. */
|
||||
asm ("\n/*@HEADER_ENDS*/");
|
||||
|
||||
39
meta/packages/glibc/glibc-2.9/nscd-init.patch
vendored
39
meta/packages/glibc/glibc-2.9/nscd-init.patch
vendored
@@ -1,39 +0,0 @@
|
||||
--- nscd/nscd.init
|
||||
+++ nscd/nscd.init
|
||||
@@ -48,9 +48,8 @@
|
||||
|
||||
start () {
|
||||
[ -d /var/run/nscd ] || mkdir /var/run/nscd
|
||||
- [ -d /var/db/nscd ] || mkdir /var/db/nscd
|
||||
echo -n $"Starting $prog: "
|
||||
- daemon /usr/sbin/nscd
|
||||
+ /usr/sbin/nscd
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd
|
||||
@@ -67,12 +66,10 @@
|
||||
# a non-privileged user
|
||||
rm -f /var/run/nscd/nscd.pid
|
||||
rm -f /var/run/nscd/socket
|
||||
- success $"$prog shutdown"
|
||||
- else
|
||||
- failure $"$prog shutdown"
|
||||
fi
|
||||
- echo
|
||||
- return $RETVAL
|
||||
+ echo "Done."
|
||||
+ # If nscd did not run, return 0 according to LSB.
|
||||
+ return 0
|
||||
}
|
||||
|
||||
restart() {
|
||||
@@ -104,7 +101,8 @@
|
||||
;;
|
||||
force-reload | reload)
|
||||
echo -n $"Reloading $prog: "
|
||||
- killproc /usr/sbin/nscd -HUP
|
||||
+ # Use killall, initscripts-1.0-r115 don't support -HUP yet.
|
||||
+ killall -HUP /usr/sbin/nscd
|
||||
RETVAL=$?
|
||||
echo
|
||||
;;
|
||||
13
meta/packages/glibc/glibc-2.9/rulesfix.patch
vendored
13
meta/packages/glibc/glibc-2.9/rulesfix.patch
vendored
@@ -1,13 +0,0 @@
|
||||
Index: glibc-2.9/Makerules
|
||||
===================================================================
|
||||
--- glibc-2.9.orig/Makerules 2009-09-14 16:39:21.000000000 +0100
|
||||
+++ glibc-2.9/Makerules 2009-09-14 16:39:50.000000000 +0100
|
||||
@@ -173,6 +173,8 @@
|
||||
# it's used in sysd-rules, below.
|
||||
$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
|
||||
%.sym $(common-before-compile)
|
||||
+ rm -f $(@:.h=.h.d)
|
||||
+ rm -f $(@:.h.d=.h)
|
||||
$(AWK) -f $< $(filter %.sym,$^) \
|
||||
| $(CC) -S -o $(@:.h.d=.h)T3 $(CFLAGS) $(CPPFLAGS) -x c - \
|
||||
-MD -MP -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)'
|
||||
14
meta/packages/glibc/glibc-2.9/tls_i486.patch
vendored
14
meta/packages/glibc/glibc-2.9/tls_i486.patch
vendored
@@ -1,14 +0,0 @@
|
||||
Index: glibc-2.9/sysdeps/i386/dl-tlsdesc.S
|
||||
===================================================================
|
||||
--- glibc-2.9.orig/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:11.647664128 +0200
|
||||
+++ glibc-2.9/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:32.802555992 +0200
|
||||
@@ -128,8 +128,7 @@
|
||||
.Lslow:
|
||||
cfi_adjust_cfa_offset (28)
|
||||
movl %ebx, 16(%esp)
|
||||
- call __i686.get_pc_thunk.bx
|
||||
- addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
+ LOAD_PIC_REG (bx)
|
||||
call ___tls_get_addr@PLT
|
||||
movl 16(%esp), %ebx
|
||||
jmp .Lret
|
||||
@@ -1,58 +0,0 @@
|
||||
2005-05-09 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* sysdeps/generic/ldsodefs.h (struct audit_ifaces): Add ARM entries.
|
||||
* elf/tst-auditmod1.c: Add ARM definitions.
|
||||
|
||||
Index: glibc/sysdeps/generic/ldsodefs.h
|
||||
===================================================================
|
||||
--- glibc.orig/sysdeps/generic/ldsodefs.h 2005-04-05 17:36:52.000000000 -0400
|
||||
+++ glibc/sysdeps/generic/ldsodefs.h 2005-05-06 15:54:44.000000000 -0400
|
||||
@@ -203,6 +203,8 @@ struct La_sparc32_regs;
|
||||
struct La_sparc32_retval;
|
||||
struct La_sparc64_regs;
|
||||
struct La_sparc64_retval;
|
||||
+struct La_arm_regs;
|
||||
+struct La_arm_retval;
|
||||
|
||||
struct audit_ifaces
|
||||
{
|
||||
@@ -284,6 +286,10 @@ struct audit_ifaces
|
||||
const struct La_sparc64_regs *,
|
||||
unsigned int *, const char *name,
|
||||
long int *framesizep);
|
||||
+ Elf32_Addr (*arm_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
|
||||
+ uintptr_t *, struct La_arm_regs *,
|
||||
+ unsigned int *, const char *name,
|
||||
+ long int *framesizep);
|
||||
};
|
||||
union
|
||||
{
|
||||
@@ -352,6 +358,9 @@ struct audit_ifaces
|
||||
const struct La_sparc32_regs *,
|
||||
struct La_sparc32_retval *,
|
||||
const char *);
|
||||
+ unsigned int (*arm_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
|
||||
+ uintptr_t *, const struct La_arm_regs *,
|
||||
+ struct La_arm_retval *, const char *);
|
||||
};
|
||||
unsigned int (*objclose) (uintptr_t *);
|
||||
|
||||
Index: glibc/elf/tst-auditmod1.c
|
||||
===================================================================
|
||||
--- glibc.orig/elf/tst-auditmod1.c 2005-04-05 17:36:53.000000000 -0400
|
||||
+++ glibc/elf/tst-auditmod1.c 2005-05-06 15:53:28.000000000 -0400
|
||||
@@ -192,6 +192,12 @@ la_symbind64 (Elf64_Sym *sym, unsigned i
|
||||
# define La_regs La_sparc64_regs
|
||||
# define La_retval La_sparc64_retval
|
||||
# define int_retval lrv_reg[0]
|
||||
+#elif __arm__
|
||||
+# define pltenter la_arm_gnu_pltenter
|
||||
+# define pltext la_arm_gnu_pltexit
|
||||
+# define La_regs La_arm_regs
|
||||
+# define La_retval La_arm_retval
|
||||
+# define int_retval lrv_reg[0]
|
||||
#else
|
||||
# error "architecture specific code needed"
|
||||
#endif
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
Index: ports/sysdeps/arm/dl-machine.h
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/ports/sysdeps/arm/dl-machine.h,v
|
||||
retrieving revision 1.53
|
||||
diff -u -r1.53 dl-machine.h
|
||||
--- libc/ports/sysdeps/arm/dl-machine.h 10 Jun 2005 11:33:52 -0000 1.53
|
||||
+++ libc/ports/sysdeps/arm/dl-machine.h 11 Jun 2005 08:58:04 -0000
|
||||
@@ -243,6 +243,10 @@
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
|
||||
|
||||
+/* Names of the architecture-specific auditing callback functions. */
|
||||
+#define ARCH_LA_PLTENTER arm_gnu_pltenter
|
||||
+#define ARCH_LA_PLTEXIT arm_gnu_pltexit
|
||||
+
|
||||
#ifdef RESOLVE_MAP
|
||||
|
||||
/* Deal with an out-of-range PC24 reloc. */
|
||||
@@ -1,59 +0,0 @@
|
||||
--- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
|
||||
+++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
|
||||
@@ -210,6 +210,14 @@
|
||||
"rI" ((USItype) (bh)), \
|
||||
"r" ((USItype) (al)), \
|
||||
"rI" ((USItype) (bl)))
|
||||
+/* 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" \
|
||||
@@ -231,7 +239,14 @@
|
||||
: "r" ((USItype) (a)), \
|
||||
"r" ((USItype) (b)));}
|
||||
#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 (__hppa) && W_TYPE_SIZE == 32
|
||||
--- /dev/null 2004-02-02 20:32:13.000000000 +0000
|
||||
+++ ports/sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* __clz_tab -- support for longlong.h
|
||||
+ Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ The GNU C Library 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.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
|
||||
+/* Nothing required. */
|
||||
+#else
|
||||
+#include <sysdeps/generic/mp_clz_tab.c>
|
||||
+#endif
|
||||
758
meta/packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch
vendored
758
meta/packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch
vendored
@@ -1,758 +0,0 @@
|
||||
--- /dev/null 2004-02-02 20:32:13.000000000 +0000
|
||||
+++ libc/ports/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
|
||||
+++ libc/ports/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)
|
||||
|
||||
--- /dev/null 2004-02-02 20:32:13.000000000 +0000
|
||||
+++ libc/ports/sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
|
||||
@@ -0,0 +1,242 @@
|
||||
+/*
|
||||
+ * 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)
|
||||
+
|
||||
@@ -1,11 +0,0 @@
|
||||
--- libc/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h.orig 2005-12-11 14:49:51 +0100
|
||||
+++ libc/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2005-12-11 14:51:28 +0100
|
||||
@@ -64,7 +64,7 @@
|
||||
HWCAP_ARM_VFP = 1 << 6,
|
||||
HWCAP_ARM_EDSP = 1 << 7,
|
||||
|
||||
- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
|
||||
+ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
|
||||
};
|
||||
|
||||
static inline int
|
||||
@@ -1,10 +0,0 @@
|
||||
--- libc/elf/Versions.old 2005-06-27 13:38:25.000000000 +0100
|
||||
+++ libc/elf/Versions 2005-06-27 14:03:54.000000000 +0100
|
||||
@@ -56,5 +56,7 @@
|
||||
_dl_make_stack_executable;
|
||||
# Only here for gdb while a better method is developed.
|
||||
_dl_debug_state;
|
||||
+ # for ldconfig
|
||||
+ _dl_cache_libcmp;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
|
||||
#
|
||||
# Patch managed by http://www.holgerschurig.de/patcher.html
|
||||
#
|
||||
|
||||
--- libc/elf/Makefile~dyn-ldconfig-20041128
|
||||
+++ libc/elf/Makefile
|
||||
@@ -118,12 +118,13 @@
|
||||
|
||||
ifeq (yes,$(use-ldconfig))
|
||||
ifeq (yes,$(build-shared))
|
||||
-others-static += ldconfig
|
||||
+#others-static += ldconfig
|
||||
others += ldconfig
|
||||
install-rootsbin += ldconfig
|
||||
|
||||
ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
|
||||
extra-objs += $(ldconfig-modules:=.o)
|
||||
+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
|
||||
|
||||
# To find xmalloc.c and xstrdup.c
|
||||
vpath %.c ../locale/programs
|
||||
@@ -1,16 +0,0 @@
|
||||
Without this, do_compile fails, unable to find linux/errno.h
|
||||
|
||||
RP - 27/11/2007
|
||||
|
||||
Index: libc/nscd/Makefile
|
||||
===================================================================
|
||||
--- libc.orig/nscd/Makefile 2005-06-14 22:51:24.000000000 +0000
|
||||
+++ libc/nscd/Makefile 2007-11-27 16:31:02.000000000 +0000
|
||||
@@ -68,7 +68,6 @@
|
||||
# contains only the basic kernel interface headers, not something like
|
||||
# libselinux. So the simplest thing is to presume that the standard
|
||||
# system headers will be ok for this file.
|
||||
-$(objpfx)nscd_stat.o: sysincludes = # nothing
|
||||
$(objpfx)selinux.o: sysincludes = # nothing
|
||||
|
||||
distribute := nscd.h nscd-client.h dbg_log.h \
|
||||
@@ -1,18 +0,0 @@
|
||||
This patch moves ld.so.cache from /etc to /var/run. This is for devices
|
||||
where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
|
||||
|
||||
#
|
||||
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
|
||||
#
|
||||
|
||||
--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
|
||||
+++ libc/sysdeps/generic/dl-cache.h
|
||||
@@ -29,7 +29,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef LD_SO_CACHE
|
||||
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
|
||||
+# define LD_SO_CACHE "/var/run/ld.so.cache"
|
||||
#endif
|
||||
|
||||
#ifndef add_system_dir
|
||||
@@ -1,2 +0,0 @@
|
||||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
@@ -1,3 +0,0 @@
|
||||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
|
||||
do_configure_prepend () {
|
||||
unset CFLAGS
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
|
||||
do_configure_prepend () {
|
||||
unset CFLAGS
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
require glibc.inc
|
||||
|
||||
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs-2.3.5"
|
||||
SRCDATE = "20050627"
|
||||
PR = "r6"
|
||||
|
||||
GLIBC_ADDONS ?= "ports,linuxthreads"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
# file://noinfo.patch;patch=1
|
||||
# file://ldconfig.patch;patch=1;pnum=0
|
||||
# file://arm-machine-gmon.patch;patch=1;pnum=0 \
|
||||
# \
|
||||
# file://arm-ioperm.patch;patch=1;pnum=0 \
|
||||
# file://ldd.patch;patch=1;pnum=0 \
|
||||
SRC_URI = "http://familiar.handhelds.org/source/v0.8.3/stash_libc_sources.redhat.com__20050627.tar.gz \
|
||||
http://familiar.handhelds.org/source/v0.8.3/stash_ports_sources.redhat.com__20050627.tar.gz \
|
||||
file://arm-audit.patch;patch=1 \
|
||||
file://arm-audit2.patch;patch=1 \
|
||||
file://arm-no-hwcap.patch;patch=1 \
|
||||
file://arm-memcpy.patch;patch=1 \
|
||||
file://arm-longlong.patch;patch=1;pnum=0 \
|
||||
file://fhs-linux-paths.patch;patch=1 \
|
||||
file://dl-cache-libcmp.patch;patch=1 \
|
||||
file://headers_fix.patch;patch=1 \
|
||||
file://5090_all_stubs-rule-fix.patch;patch=1 \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk"
|
||||
|
||||
# seems to fail on tls platforms
|
||||
SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
|
||||
|
||||
S = "${WORKDIR}/libc"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
|
||||
--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons=${GLIBC_ADDONS} \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF}"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_munge() {
|
||||
# Integrate ports into tree
|
||||
mv ${WORKDIR}/ports ${S}
|
||||
|
||||
# http://www.handhelds.org/hypermail/oe/51/5135.html
|
||||
# Some files were moved around between directories on
|
||||
# 2005-12-21, which means that any attempt to check out
|
||||
# from CVS using a datestamp older than that will be doomed.
|
||||
#
|
||||
# This is a workaround for that problem.
|
||||
rm -rf ${S}/bits
|
||||
}
|
||||
|
||||
addtask munge before do_patch after do_unpack
|
||||
|
||||
do_configure () {
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
@@ -1,137 +0,0 @@
|
||||
require glibc.inc
|
||||
|
||||
PR = "r14"
|
||||
|
||||
# the -isystem in bitbake.conf screws up glibc do_stage
|
||||
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
|
||||
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
|
||||
|
||||
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
|
||||
|
||||
GLIBC_ADDONS ?= "ports,nptl,libidn"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET bn_BD gez_ER te_IN"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
# file://noinfo.patch;patch=1
|
||||
# file://ldconfig.patch;patch=1;pnum=0
|
||||
# file://arm-machine-gmon.patch;patch=1;pnum=0 \
|
||||
# \
|
||||
# file://arm-ioperm.patch;patch=1;pnum=0 \
|
||||
# file://ldd.patch;patch=1;pnum=0 \
|
||||
SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.4.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.4.tar.bz2 \
|
||||
file://arm-memcpy.patch;patch=1 \
|
||||
file://arm-longlong.patch;patch=1 \
|
||||
file://fhs-linux-paths.patch;patch=1 \
|
||||
file://dl-cache-libcmp.patch;patch=1 \
|
||||
file://nptl-crosscompile.patch;patch=1 \
|
||||
file://glibc-2.4-compile.patch;patch=1 \
|
||||
file://fixup-aeabi-syscalls.patch;patch=1 \
|
||||
file://zecke-sane-readelf.patch;patch=1 \
|
||||
file://generic-bits_select.h \
|
||||
file://generic-bits_types.h \
|
||||
file://generic-bits_typesizes.h \
|
||||
file://generic-bits_time.h \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk"
|
||||
|
||||
# Build fails on sh3 and sh4 without additional patches
|
||||
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
|
||||
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
|
||||
|
||||
S = "${WORKDIR}/glibc-2.4"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
|
||||
--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons=${GLIBC_ADDONS} \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF}"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_munge() {
|
||||
# Integrate ports and libidn into tree
|
||||
mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
|
||||
mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
|
||||
|
||||
# Ports isn't really working... Fix it
|
||||
# Some of this is rather dirty, but it seems to be the only
|
||||
# quick way to get this cruft to compile
|
||||
rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
|
||||
cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
|
||||
cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
|
||||
cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
|
||||
# Copy in generic stuff for not yet implemented headers
|
||||
for i in ${S}/bits/*.h; do
|
||||
F=`basename $i`
|
||||
[ "$F" = "local_lim.h" ] && continue
|
||||
[ "$F" = "errno.h" ] && continue
|
||||
test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
done
|
||||
# This is harmful; we need to get the one from nptl/sysdeps/pthreads
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
|
||||
# Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
|
||||
# Obsoleted by sysdeps/gnu/bits/utmp.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
|
||||
}
|
||||
|
||||
addtask munge before do_patch after do_unpack
|
||||
|
||||
do_configure () {
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
@@ -1,148 +0,0 @@
|
||||
require glibc.inc
|
||||
|
||||
PR = "r8"
|
||||
|
||||
# the -isystem in bitbake.conf screws up glibc do_stage
|
||||
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
|
||||
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
|
||||
|
||||
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
|
||||
|
||||
GLIBC_ADDONS ?= "ports,nptl,libidn"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
# file://noinfo.patch;patch=1
|
||||
# file://ldconfig.patch;patch=1;pnum=0
|
||||
# file://arm-machine-gmon.patch;patch=1;pnum=0 \
|
||||
# \
|
||||
# file://arm-ioperm.patch;patch=1;pnum=0 \
|
||||
# file://ldd.patch;patch=1;pnum=0 \
|
||||
SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
|
||||
file://arm-memcpy.patch;patch=1 \
|
||||
file://arm-longlong.patch;patch=1 \
|
||||
file://fhs-linux-paths.patch;patch=1 \
|
||||
file://dl-cache-libcmp.patch;patch=1 \
|
||||
file://nptl-crosscompile.patch;patch=1 \
|
||||
file://glibc-check_pf.patch;patch=1;pnum=0 \
|
||||
# file://glibc-2.4-compile.patch;patch=1 \
|
||||
# file://glibc-2.4-openat-3.patch;patch=1 \
|
||||
# file://fixup-aeabi-syscalls.patch;patch=1 \
|
||||
file://zecke-sane-readelf.patch;patch=1 \
|
||||
file://eabi_kernel_version_hack.patch;patch=1 \
|
||||
file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
|
||||
file://generic-bits_select.h \
|
||||
file://generic-bits_types.h \
|
||||
file://generic-bits_typesizes.h \
|
||||
file://generic-bits_time.h \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk \
|
||||
file://glibc-arm-no-procinfo_h.patch;patch=1 \
|
||||
file://glibc-include-fixed.patch;patch=1;pnum=0"
|
||||
|
||||
|
||||
# Build fails on sh3 and sh4 without additional patches
|
||||
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
|
||||
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
|
||||
|
||||
SRC_URI_append_powerpc = " file://powerpc-sqrt-hack.diff;patch=1"
|
||||
|
||||
S = "${WORKDIR}/glibc-${PV}"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
|
||||
--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons=${GLIBC_ADDONS} \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF}"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_munge() {
|
||||
# Integrate ports and libidn into tree
|
||||
mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
|
||||
mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
|
||||
|
||||
# Ports isn't really working... Fix it
|
||||
# Some of this is rather dirty, but it seems to be the only
|
||||
# quick way to get this cruft to compile
|
||||
rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
|
||||
cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
|
||||
cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
|
||||
cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
|
||||
# Copy in generic stuff for not yet implemented headers
|
||||
for i in ${S}/bits/*.h; do
|
||||
F=`basename $i`
|
||||
[ "$F" = "local_lim.h" ] && continue
|
||||
[ "$F" = "errno.h" ] && continue
|
||||
test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
done
|
||||
# This is harmful; we need to get the one from nptl/sysdeps/pthreads
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
|
||||
# Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
|
||||
# Obsoleted by sysdeps/gnu/bits/utmp.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
|
||||
}
|
||||
|
||||
addtask munge before do_patch after do_unpack
|
||||
|
||||
|
||||
do_configure () {
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
@@ -1,156 +0,0 @@
|
||||
require glibc.inc
|
||||
PR = "r6"
|
||||
|
||||
ARM_INSTRUCTION_SET = "arm"
|
||||
|
||||
PACKAGES_DYNAMIC = "libc6*"
|
||||
RPROVIDES_${PN}-dev = "libc6-dev"
|
||||
|
||||
# the -isystem in bitbake.conf screws up glibc do_stage
|
||||
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
|
||||
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
|
||||
|
||||
|
||||
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
|
||||
|
||||
GLIBC_ADDONS ?= "ports,nptl,libidn"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
|
||||
|
||||
SRC_URI = "\
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
|
||||
file://arm-memcpy.patch;patch=1 \
|
||||
file://arm-longlong.patch;patch=1 \
|
||||
file://fhs-linux-paths.patch;patch=1 \
|
||||
file://dl-cache-libcmp.patch;patch=1 \
|
||||
file://ldsocache-varrun.patch;patch=1 \
|
||||
file://nptl-crosscompile.patch;patch=1 \
|
||||
file://glibc-2.5-local-dynamic-resolvconf.patch;patch=1;pnum=0 \
|
||||
file://glibc-check_pf.patch;patch=1;pnum=0 \
|
||||
file://zecke-sane-readelf.patch;patch=1 \
|
||||
file://ldd-unbash.patch;patch=1 \
|
||||
file://generic-bits_select.h \
|
||||
file://generic-bits_types.h \
|
||||
file://generic-bits_typesizes.h \
|
||||
file://generic-bits_time.h \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk \
|
||||
file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \
|
||||
file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
|
||||
file://glibc-include-fixed.patch;patch=1;pnum=0 \
|
||||
file://no-hwcaps.patch;patch=1 \
|
||||
file://nopageheader.patch;patch=1 \
|
||||
"
|
||||
|
||||
# Build fails on sh3 and sh4 without additional patches
|
||||
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
|
||||
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
|
||||
|
||||
# PowerPC Patches to add support for soft-float
|
||||
SRC_URI_append_powerpc = "file://powerpc-sqrt-hack.diff;patch=1"
|
||||
|
||||
S = "${WORKDIR}/glibc-${PV}"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "\
|
||||
--enable-kernel=${OLDEST_KERNEL} \
|
||||
--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons=${GLIBC_ADDONS} \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF} \
|
||||
"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_munge() {
|
||||
# Integrate ports and libidn into tree
|
||||
mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
|
||||
mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
|
||||
|
||||
# Ports isn't really working... Fix it
|
||||
# Some of this is rather dirty, but it seems to be the only
|
||||
# quick way to get this cruft to compile
|
||||
rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
|
||||
cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
|
||||
cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
|
||||
cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
|
||||
# Copy in generic stuff for not yet implemented headers
|
||||
for i in ${S}/bits/*.h; do
|
||||
F=`basename $i`
|
||||
[ "$F" = "local_lim.h" ] && continue
|
||||
[ "$F" = "errno.h" ] && continue
|
||||
test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
done
|
||||
# This is harmful; we need to get the one from nptl/sysdeps/pthreads
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
|
||||
# Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
|
||||
# Obsoleted by sysdeps/gnu/bits/utmp.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
|
||||
}
|
||||
|
||||
addtask munge before do_patch after do_unpack
|
||||
|
||||
|
||||
do_configure () {
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
||||
@@ -1,161 +0,0 @@
|
||||
require glibc.inc
|
||||
|
||||
ARM_INSTRUCTION_SET = "arm"
|
||||
|
||||
PACKAGES_DYNAMIC = "libc6*"
|
||||
RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev"
|
||||
|
||||
PR = "r2"
|
||||
|
||||
# the -isystem in bitbake.conf screws up glibc do_stage
|
||||
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
|
||||
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
|
||||
|
||||
GLIBC_ADDONS ?= "ports,nptl,libidn"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
|
||||
|
||||
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
|
||||
|
||||
# file://noinfo.patch;patch=1
|
||||
# file://ldconfig.patch;patch=1;pnum=0
|
||||
# file://arm-machine-gmon.patch;patch=1;pnum=0 \
|
||||
# \
|
||||
# file://arm-ioperm.patch;patch=1;pnum=0 \
|
||||
# file://ldd.patch;patch=1;pnum=0 \
|
||||
SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
|
||||
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
|
||||
file://nscd-init.patch;patch=1;pnum=0 \
|
||||
file://arm-memcpy.patch;patch=1 \
|
||||
file://arm-longlong.patch;patch=1 \
|
||||
file://fhs-linux-paths.patch;patch=1 \
|
||||
file://dl-cache-libcmp.patch;patch=1 \
|
||||
file://ldsocache-varrun.patch;patch=1 \
|
||||
file://nptl-crosscompile.patch;patch=1 \
|
||||
file://glibc-check_pf.patch;patch=1;pnum=0 \
|
||||
file://ldd-unbash.patch;patch=1 \
|
||||
file://glibc-arm-IO-acquire-lock-fix.diff;patch=1 \
|
||||
file://generic-bits_select.h \
|
||||
file://generic-bits_types.h \
|
||||
file://generic-bits_typesizes.h \
|
||||
file://generic-bits_time.h \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk \
|
||||
file://march-i686.patch;patch=1;pnum=0 \
|
||||
file://tls_i486.patch;patch=1 \
|
||||
file://rulesfix.patch;patch=1 \
|
||||
file://glibc-2.9-use-_begin.patch;patch=1 \
|
||||
file://glibc-2.9-enable-binutils-2.2.patch;patch=1 \
|
||||
"
|
||||
|
||||
# Build fails on sh3 and sh4 without additional patches
|
||||
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
|
||||
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
|
||||
|
||||
#powerpc patches to add support for soft-float
|
||||
SRC_URI_append_powerpc= " file://powerpc-sqrt-hack.diff;patch=1"
|
||||
|
||||
S = "${WORKDIR}/glibc-${PV}"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
|
||||
--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons=${GLIBC_ADDONS} \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF}"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_munge() {
|
||||
# Integrate ports and libidn into tree
|
||||
mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
|
||||
mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
|
||||
|
||||
# Ports isn't really working... Fix it
|
||||
# Some of this is rather dirty, but it seems to be the only
|
||||
# quick way to get this cruft to compile
|
||||
rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
|
||||
cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
|
||||
cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
|
||||
cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
|
||||
cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
|
||||
# Copy in generic stuff for not yet implemented headers
|
||||
for i in ${S}/bits/*.h; do
|
||||
F=`basename $i`
|
||||
[ "$F" = "local_lim.h" ] && continue
|
||||
[ "$F" = "errno.h" ] && continue
|
||||
test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
|
||||
done
|
||||
# This is harmful; we need to get the one from nptl/sysdeps/pthreads
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
|
||||
# Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
|
||||
# Obsoleted by sysdeps/gnu/bits/utmp.h
|
||||
rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
|
||||
}
|
||||
|
||||
addtask munge before do_patch after do_unpack
|
||||
|
||||
|
||||
do_configure () {
|
||||
# /var/db was not included to FHS
|
||||
sed -i s:/var/db/nscd:/var/run/nscd: ${S}/nscd/nscd.h
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
||||
@@ -1,89 +0,0 @@
|
||||
require glibc.inc
|
||||
|
||||
# DEFAULT_PREFERENCE = "-1"
|
||||
PV = "2.3.6+csl-arm-2005q3-2"
|
||||
PR = "r11"
|
||||
|
||||
# the -isystem in bitbake.conf screws up glibc do_stage
|
||||
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
|
||||
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
|
||||
|
||||
GLIBC_ADDONS ?= "nptl,libidn"
|
||||
|
||||
GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET bn_BD gez_ER te_IN"
|
||||
|
||||
#
|
||||
# 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 bb, re
|
||||
uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
|
||||
if uc_os:
|
||||
raise bb.parse.SkipPackage("incompatible with target %s" %
|
||||
bb.data.getVar('TARGET_OS', d, 1))
|
||||
}
|
||||
|
||||
SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2005q3-2-arm-none-linux-gnueabi.src.tar.bz2 \
|
||||
file://nptl-crosscompile-2.3.6.patch;patch=1 \
|
||||
file://etc/ld.so.conf \
|
||||
file://generate-supported.mk \
|
||||
"
|
||||
|
||||
do_unpack2() {
|
||||
cd ${WORKDIR}
|
||||
tar -xvjf ./arm-2005q3-2-arm-none-linux-gnueabi/glibc-2005q3-2.tar.bz2
|
||||
rm -rf ./arm-2005q3-2-arm-none-linux-gnueabi
|
||||
}
|
||||
|
||||
addtask unpack2 after do_unpack before do_patch
|
||||
|
||||
S = "${WORKDIR}/glibc-2.3.5pre"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
EXTRA_OECONF = "--without-cvs --disable-profile --disable-debug --without-gd \
|
||||
--enable-clocale=gnu \
|
||||
--enable-add-ons \
|
||||
--with-headers=${STAGING_INCDIR} \
|
||||
--without-selinux \
|
||||
${GLIBC_EXTRA_OECONF}"
|
||||
|
||||
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
|
||||
|
||||
do_configure () {
|
||||
# override this function to avoid the autoconf/automake/aclocal/autoheader
|
||||
# calls for now
|
||||
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
|
||||
# version check and doesn't really help with anything
|
||||
if [ -z "`which rpcgen`" ]; then
|
||||
echo "rpcgen not found. Install glibc-devel."
|
||||
exit 1
|
||||
fi
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
CPPFLAGS="" oe_runconf
|
||||
}
|
||||
|
||||
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
|
||||
|
||||
do_compile () {
|
||||
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
|
||||
unset LDFLAGS
|
||||
base_do_compile
|
||||
(
|
||||
cd ${S}/sunrpc/rpcsvc
|
||||
for r in ${rpcsvc}; do
|
||||
h=`echo $r|sed -e's,\.x$,.h,'`
|
||||
rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
require glibc-stage.inc
|
||||
|
||||
require glibc-package.inc
|
||||
Reference in New Issue
Block a user