mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-31 16:36:14 +00:00
libc/glibc: add 2.13
Patchset provided by "Ioannis E. Venetis" <venetis@mail.capsl.udel.edu> http://sourceware.org/ml/crossgcc/2011-04/msg00072.html http://sourceware.org/ml/crossgcc/2011-04/msg00073.html Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
This commit is contained in:
parent
0edbdfd24c
commit
6cf1dab940
@ -41,6 +41,11 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config LIBC_GLIBC_V_2_13
|
||||
bool
|
||||
prompt "2.13 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config LIBC_GLIBC_V_2_12_2
|
||||
bool
|
||||
prompt "2.12.2 (EXPERIMENTAL)"
|
||||
@ -108,6 +113,7 @@ config LIBC_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "2.13" if LIBC_GLIBC_V_2_13
|
||||
default "2.12.2" if LIBC_GLIBC_V_2_12_2
|
||||
default "2.12.1" if LIBC_GLIBC_V_2_12_1
|
||||
default "2.11.1" if LIBC_GLIBC_V_2_11_1
|
||||
|
34
patches/glibc/2.13/900-march-i686.patch
Normal file
34
patches/glibc/2.13/900-march-i686.patch
Normal file
@ -0,0 +1,34 @@
|
||||
2007-02-15 Khem Raj <kraj@xxxxxxxxxx>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686.
|
||||
* nptl/sysdeps/pthread/pt-initfini.c: Ditto.
|
||||
|
||||
diff -urN glibc-2.12.1.orig/nptl/sysdeps/pthread/pt-initfini.c glibc-2.12.1/nptl/sysdeps/pthread/pt-initfini.c
|
||||
--- glibc-2.12.1.orig/nptl/sysdeps/pthread/pt-initfini.c 2009-10-30 18:17:08.000000000 +0100
|
||||
+++ glibc-2.12.1/nptl/sysdeps/pthread/pt-initfini.c 2010-12-30 11:36:19.858708534 +0100
|
||||
@@ -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*/");
|
||||
|
||||
diff -urN glibc-2.12.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.12.1/sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2009-10-30 18:17:08.000000000 +0100
|
||||
+++ glibc-2.12.1/sysdeps/unix/sysv/linux/i386/sysdep.h 2010-12-30 11:36:19.858708534 +0100
|
||||
@@ -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
|
28
patches/glibc/2.13/910-typedef-caddr.patch
Normal file
28
patches/glibc/2.13/910-typedef-caddr.patch
Normal file
@ -0,0 +1,28 @@
|
||||
diff -urN glibc-2.12.1-orig/posix/sys/types.h glibc-2.12.1/posix/sys/types.h
|
||||
--- glibc-2.12.1-orig/posix/sys/types.h 2010-12-13 11:47:26.000000000 +0100
|
||||
+++ glibc-2.12.1/posix/sys/types.h 2011-03-29 14:16:00.374064708 +0200
|
||||
@@ -114,7 +114,10 @@
|
||||
#ifdef __USE_BSD
|
||||
# ifndef __daddr_t_defined
|
||||
typedef __daddr_t daddr_t;
|
||||
+# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
|
||||
typedef __caddr_t caddr_t;
|
||||
+# define __caddr_t_defined
|
||||
+# endif
|
||||
# define __daddr_t_defined
|
||||
# endif
|
||||
#endif
|
||||
diff -urN glibc-2.12.1-orig/sunrpc/rpc/types.h glibc-2.12.1/sunrpc/rpc/types.h
|
||||
--- glibc-2.12.1-orig/sunrpc/rpc/types.h 2010-12-13 11:47:26.000000000 +0100
|
||||
+++ glibc-2.12.1/sunrpc/rpc/types.h 2011-03-29 14:16:32.988910439 +0200
|
||||
@@ -80,7 +80,10 @@
|
||||
#endif
|
||||
#ifndef __daddr_t_defined
|
||||
typedef __daddr_t daddr_t;
|
||||
+# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
|
||||
typedef __caddr_t caddr_t;
|
||||
+# define __caddr_t_defined
|
||||
+# endif
|
||||
# define __daddr_t_defined
|
||||
#endif
|
||||
|
14
patches/glibc/ports-2.13/100-respect-env-CPPFLAGS.patch
Normal file
14
patches/glibc/ports-2.13/100-respect-env-CPPFLAGS.patch
Normal file
@ -0,0 +1,14 @@
|
||||
Respect environment CPPFLAGS when we run ./configure so we can inject
|
||||
random -D things without having to set CFLAGS/ASFLAGS
|
||||
|
||||
diff -durN glibc-2.13.orig/Makeconfig glibc-2.13/Makeconfig
|
||||
--- glibc-2.13.orig/Makeconfig 2009-05-09 23:57:56.000000000 +0200
|
||||
+++ glibc-2.13/Makeconfig 2009-11-13 00:49:41.000000000 +0100
|
||||
@@ -697,6 +697,7 @@
|
||||
$(foreach lib,$(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
|
||||
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
|
||||
+CPPFLAGS += $(CPPFLAGS-config)
|
||||
override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
|
||||
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
|
||||
$(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
|
@ -0,0 +1,55 @@
|
||||
revert cfi additions to clone on i386/x86_64 to workaround problems in
|
||||
gcc's unwinder code. this is not a bug in glibc, it triggers problems
|
||||
elsewhere. this cfi code does not gain us a whole lot anyways.
|
||||
|
||||
http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
|
||||
|
||||
Index: sysdeps/unix/sysv/linux/i386/clone.S
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/clone.S,v
|
||||
retrieving revision 1.27
|
||||
retrieving revision 1.26
|
||||
diff -u -p -r1.27 -r1.26
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/i386/clone.S glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/i386/clone.S 2006-12-04 00:12:36.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S 2009-11-13 00:49:45.000000000 +0100
|
||||
@@ -120,9 +120,6 @@
|
||||
ret
|
||||
|
||||
L(thread_start):
|
||||
- cfi_startproc;
|
||||
- /* Clearing frame pointer is insufficient, use CFI. */
|
||||
- cfi_undefined (eip);
|
||||
/* Note: %esi is zero. */
|
||||
movl %esi,%ebp /* terminate the stack frame */
|
||||
#ifdef RESET_PID
|
||||
@@ -155,7 +152,6 @@
|
||||
jmp L(haspid)
|
||||
.previous
|
||||
#endif
|
||||
- cfi_endproc;
|
||||
|
||||
cfi_startproc
|
||||
PSEUDO_END (BP_SYM (__clone))
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/x86_64/clone.S glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/x86_64/clone.S 2006-12-04 00:12:36.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S 2009-11-13 00:49:45.000000000 +0100
|
||||
@@ -89,9 +89,6 @@
|
||||
ret
|
||||
|
||||
L(thread_start):
|
||||
- cfi_startproc;
|
||||
- /* Clearing frame pointer is insufficient, use CFI. */
|
||||
- cfi_undefined (rip);
|
||||
/* Clear the frame pointer. The ABI suggests this be done, to mark
|
||||
the outermost frame obviously. */
|
||||
xorl %ebp, %ebp
|
||||
@@ -116,7 +113,6 @@
|
||||
/* Call exit with return value from function call. */
|
||||
movq %rax, %rdi
|
||||
call HIDDEN_JUMPTARGET (_exit)
|
||||
- cfi_endproc;
|
||||
|
||||
cfi_startproc;
|
||||
PSEUDO_END (BP_SYM (__clone))
|
16
patches/glibc/ports-2.13/140-disable-ldconfig.patch
Normal file
16
patches/glibc/ports-2.13/140-disable-ldconfig.patch
Normal file
@ -0,0 +1,16 @@
|
||||
do not bother running ldconfig on DESTDIR. it wants to write the temp cache
|
||||
file outside of the chroot. doesnt matter anyways as we wont use the cache
|
||||
results (portage will rebuild cache), so running ldconfig is simply a waste
|
||||
of time.
|
||||
|
||||
diff -durN glibc-2.13.orig/Makefile glibc-2.13/Makefile
|
||||
--- glibc-2.13.orig/Makefile 2009-04-23 20:23:03.000000000 +0200
|
||||
+++ glibc-2.13/Makefile 2009-11-13 00:49:49.000000000 +0100
|
||||
@@ -116,6 +116,7 @@
|
||||
rm -f $(symbolic-link-list)
|
||||
|
||||
install:
|
||||
+dont-bother-with-destdir:
|
||||
-test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \
|
||||
$(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
|
||||
$(slibdir) $(libdir)
|
85
patches/glibc/ports-2.13/150-queue-header-updates.patch
Normal file
85
patches/glibc/ports-2.13/150-queue-header-updates.patch
Normal file
@ -0,0 +1,85 @@
|
||||
grab some updates from FreeBSD
|
||||
|
||||
http://bugs.gentoo.org/201979
|
||||
|
||||
diff -durN glibc-2.13.orig/misc/sys/queue.h glibc-2.13/misc/sys/queue.h
|
||||
|
||||
diff -durN glibc-2.13.orig/misc/sys/queue.h glibc-2.13/misc/sys/queue.h
|
||||
--- glibc-2.13.orig/misc/sys/queue.h 2008-03-05 06:50:30.000000000 +0100
|
||||
+++ glibc-2.13/misc/sys/queue.h 2009-11-13 00:49:51.000000000 +0100
|
||||
@@ -136,6 +136,11 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.le_next))
|
||||
|
||||
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = LIST_FIRST((head)); \
|
||||
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
/*
|
||||
* List access methods.
|
||||
*/
|
||||
@@ -197,6 +202,16 @@
|
||||
#define SLIST_FOREACH(var, head, field) \
|
||||
for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
|
||||
|
||||
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = SLIST_FIRST((head)); \
|
||||
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
|
||||
+ for ((varp) = &SLIST_FIRST((head)); \
|
||||
+ ((var) = *(varp)) != NULL; \
|
||||
+ (varp) = &SLIST_NEXT((var), field))
|
||||
+
|
||||
/*
|
||||
* Singly-linked List access methods.
|
||||
*/
|
||||
@@ -242,6 +257,12 @@
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
+#define STAILQ_LAST(head, type, field) \
|
||||
+ (STAILQ_EMPTY((head)) ? \
|
||||
+ NULL : \
|
||||
+ ((struct type *)(void *) \
|
||||
+ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
|
||||
+
|
||||
#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
@@ -271,6 +292,11 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.stqe_next))
|
||||
|
||||
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = STAILQ_FIRST((head)); \
|
||||
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define STAILQ_CONCAT(head1, head2) do { \
|
||||
if (!STAILQ_EMPTY((head2))) { \
|
||||
*(head1)->stqh_last = (head2)->stqh_first; \
|
||||
@@ -437,11 +463,21 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.tqe_next))
|
||||
|
||||
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = TAILQ_FIRST((head)); \
|
||||
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
|
||||
for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
|
||||
(var); \
|
||||
(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
|
||||
|
||||
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
|
||||
+ for ((var) = TAILQ_LAST((head), headname); \
|
||||
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define TAILQ_CONCAT(head1, head2, field) do { \
|
||||
if (!TAILQ_EMPTY(head2)) { \
|
||||
*(head1)->tqh_last = (head2)->tqh_first; \
|
24
patches/glibc/ports-2.13/160-manual-no-perl.patch
Normal file
24
patches/glibc/ports-2.13/160-manual-no-perl.patch
Normal file
@ -0,0 +1,24 @@
|
||||
If we're using a cvs snapshot which updates the source files, and
|
||||
perl isn't installed yet, then we can't regen the docs. Not a big
|
||||
deal, so just whine a little and continue on our merry way.
|
||||
|
||||
http://bugs.gentoo.org/60132
|
||||
|
||||
diff -durN glibc-2.13.orig/manual/Makefile glibc-2.13/manual/Makefile
|
||||
--- glibc-2.13.orig/manual/Makefile 2006-01-08 07:43:47.000000000 +0100
|
||||
+++ glibc-2.13/manual/Makefile 2009-11-13 00:49:54.000000000 +0100
|
||||
@@ -104,9 +104,14 @@
|
||||
libm-err.texi: stamp-libm-err
|
||||
stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
|
||||
$(dir)/libm-test-ulps))
|
||||
+ifneq ($(PERL),no)
|
||||
pwd=`pwd`; \
|
||||
$(PERL) $< $$pwd/.. > libm-err-tmp
|
||||
$(move-if-change) libm-err-tmp libm-err.texi
|
||||
+else
|
||||
+ echo "Unable to rebuild math docs, no perl installed"
|
||||
+ touch libm-err.texi
|
||||
+endif
|
||||
touch $@
|
||||
|
||||
# Generate Texinfo files from the C source for the example programs.
|
69
patches/glibc/ports-2.13/170-localedef-fix-trampoline.patch
Normal file
69
patches/glibc/ports-2.13/170-localedef-fix-trampoline.patch
Normal file
@ -0,0 +1,69 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
# DP: Description: Fix localedef segfault when run under exec-shield,
|
||||
# PaX or similar. (#231438, #198099)
|
||||
# DP: Dpatch Author: James Troup <james@nocrew.org>
|
||||
# DP: Patch Author: (probably) Jakub Jelinek <jakub@redhat.com>
|
||||
# DP: Upstream status: Unknown
|
||||
# DP: Status Details: Unknown
|
||||
# DP: Date: 2004-03-16
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
fi
|
||||
case "$1" in
|
||||
-patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
|
||||
-unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
|
||||
*)
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
esac
|
||||
exit 0
|
||||
|
||||
diff -durN glibc-2.13.orig/locale/programs/3level.h glibc-2.13/locale/programs/3level.h
|
||||
--- glibc-2.13.orig/locale/programs/3level.h 2007-07-16 02:54:59.000000000 +0200
|
||||
+++ glibc-2.13/locale/programs/3level.h 2009-11-13 00:49:56.000000000 +0100
|
||||
@@ -203,6 +203,42 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+/* GCC ATM seems to do a poor job with pointers to nested functions passed
|
||||
+ to inlined functions. Help it a little bit with this hack. */
|
||||
+#define wchead_table_iterate(tp, fn) \
|
||||
+do \
|
||||
+ { \
|
||||
+ struct wchead_table *t = (tp); \
|
||||
+ uint32_t index1; \
|
||||
+ for (index1 = 0; index1 < t->level1_size; index1++) \
|
||||
+ { \
|
||||
+ uint32_t lookup1 = t->level1[index1]; \
|
||||
+ if (lookup1 != ((uint32_t) ~0)) \
|
||||
+ { \
|
||||
+ uint32_t lookup1_shifted = lookup1 << t->q; \
|
||||
+ uint32_t index2; \
|
||||
+ for (index2 = 0; index2 < (1 << t->q); index2++) \
|
||||
+ { \
|
||||
+ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
|
||||
+ if (lookup2 != ((uint32_t) ~0)) \
|
||||
+ { \
|
||||
+ uint32_t lookup2_shifted = lookup2 << t->p; \
|
||||
+ uint32_t index3; \
|
||||
+ for (index3 = 0; index3 < (1 << t->p); index3++) \
|
||||
+ { \
|
||||
+ struct element_t *lookup3 \
|
||||
+ = t->level3[index3 + lookup2_shifted]; \
|
||||
+ if (lookup3 != NULL) \
|
||||
+ fn ((((index1 << t->q) + index2) << t->p) + index3, \
|
||||
+ lookup3); \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } while (0)
|
||||
+
|
||||
#endif
|
||||
|
||||
#ifndef NO_FINALIZE
|
39
patches/glibc/ports-2.13/180-resolv-dynamic.patch
Normal file
39
patches/glibc/ports-2.13/180-resolv-dynamic.patch
Normal file
@ -0,0 +1,39 @@
|
||||
ripped from SuSE
|
||||
|
||||
if /etc/resolv.conf is updated, then make sure applications
|
||||
already running get the updated information.
|
||||
|
||||
http://bugs.gentoo.org/177416
|
||||
|
||||
diff -durN glibc-2.13.orig/resolv/res_libc.c glibc-2.13/resolv/res_libc.c
|
||||
--- glibc-2.13.orig/resolv/res_libc.c 2009-02-07 05:27:42.000000000 +0100
|
||||
+++ glibc-2.13/resolv/res_libc.c 2009-11-13 00:49:59.000000000 +0100
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <arpa/nameser.h>
|
||||
#include <resolv.h>
|
||||
#include <bits/libc-lock.h>
|
||||
+#include <sys/stat.h>
|
||||
|
||||
|
||||
/* The following bit is copied from res_data.c (where it is #ifdef'ed
|
||||
@@ -95,6 +96,20 @@
|
||||
__res_maybe_init (res_state resp, int preinit)
|
||||
{
|
||||
if (resp->options & RES_INIT) {
|
||||
+ static time_t last_mtime, last_check;
|
||||
+ time_t now;
|
||||
+ struct stat statbuf;
|
||||
+
|
||||
+ time (&now);
|
||||
+ if (now != last_check) {
|
||||
+ last_check = now;
|
||||
+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
|
||||
+ last_mtime = statbuf.st_mtime;
|
||||
+ atomicinclock (lock);
|
||||
+ atomicinc (__res_initstamp);
|
||||
+ atomicincunlock (lock);
|
||||
+ }
|
||||
+ }
|
||||
if (__res_initstamp != resp->_u._ext.initstamp) {
|
||||
if (resp->nscount > 0)
|
||||
__res_iclose (resp, true);
|
39
patches/glibc/ports-2.13/190-localedef-mmap.patch
Normal file
39
patches/glibc/ports-2.13/190-localedef-mmap.patch
Normal file
@ -0,0 +1,39 @@
|
||||
sniped from Debian
|
||||
http://bugs.gentoo.org/289615
|
||||
|
||||
2009-10-27 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* locale/programs/locarchive.c: use MMAP_SHARED to reserve memory
|
||||
used later with MMAP_FIXED | MMAP_SHARED to cope with different
|
||||
alignment restrictions.
|
||||
|
||||
diff -durN glibc-2.13.orig/locale/programs/locarchive.c glibc-2.13/locale/programs/locarchive.c
|
||||
--- glibc-2.13.orig/locale/programs/locarchive.c 2009-04-27 16:07:47.000000000 +0200
|
||||
+++ glibc-2.13/locale/programs/locarchive.c 2009-11-13 00:50:01.000000000 +0100
|
||||
@@ -134,7 +134,7 @@
|
||||
size_t reserved = RESERVE_MMAP_SIZE;
|
||||
int xflags = 0;
|
||||
if (total < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
||||
@@ -396,7 +396,7 @@
|
||||
size_t reserved = RESERVE_MMAP_SIZE;
|
||||
int xflags = 0;
|
||||
if (total < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
||||
@@ -614,7 +614,7 @@
|
||||
int xflags = 0;
|
||||
void *p;
|
||||
if (st.st_size < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
28
patches/glibc/ports-2.13/200-fadvise64_64.patch
Normal file
28
patches/glibc/ports-2.13/200-fadvise64_64.patch
Normal file
@ -0,0 +1,28 @@
|
||||
ripped from Debian
|
||||
|
||||
sysdeps/unix/sysv/linux/posix_fadvise.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/posix_fadvise.c glibc-2.13/sysdeps/unix/sysv/linux/posix_fadvise.c
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/posix_fadvise.c 2003-08-17 02:36:22.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/posix_fadvise.c 2009-11-13 00:50:03.000000000 +0100
|
||||
@@ -35,6 +35,19 @@
|
||||
return INTERNAL_SYSCALL_ERRNO (ret, err);
|
||||
return 0;
|
||||
#else
|
||||
+# ifdef __NR_fadvise64_64
|
||||
+ INTERNAL_SYSCALL_DECL (err);
|
||||
+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
|
||||
+ __LONG_LONG_PAIR ((long) (offset >> 31),
|
||||
+ (long) offset),
|
||||
+ __LONG_LONG_PAIR ((long) (len >> 31),
|
||||
+ (long) len),
|
||||
+ advise);
|
||||
+ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
|
||||
+ return INTERNAL_SYSCALL_ERRNO (ret, err);
|
||||
+ return 0;
|
||||
+# else
|
||||
return ENOSYS;
|
||||
+# endif
|
||||
#endif
|
||||
}
|
24
patches/glibc/ports-2.13/220-section-comments.patch
Normal file
24
patches/glibc/ports-2.13/220-section-comments.patch
Normal file
@ -0,0 +1,24 @@
|
||||
http://sources.redhat.com/ml/binutils/2004-04/msg00665.html
|
||||
|
||||
fixes building on some architectures (like m68k/arm/cris/etc...) because
|
||||
it does the right thing
|
||||
|
||||
diff -durN glibc-2.13.orig/include/libc-symbols.h glibc-2.13/include/libc-symbols.h
|
||||
--- glibc-2.13.orig/include/libc-symbols.h 2009-03-14 00:51:46.000000000 +0100
|
||||
+++ glibc-2.13/include/libc-symbols.h 2009-11-13 00:50:07.000000000 +0100
|
||||
@@ -239,12 +239,12 @@
|
||||
# define __make_section_unallocated(section_string)
|
||||
# endif
|
||||
|
||||
-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
|
||||
+/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus
|
||||
section attributes on what looks like a comment to the assembler. */
|
||||
# ifdef HAVE_SECTION_QUOTES
|
||||
-# define __sec_comment "\"\n\t#\""
|
||||
+# define __sec_comment "\"\n#APP\n\t#\""
|
||||
# else
|
||||
-# define __sec_comment "\n\t#"
|
||||
+# define __sec_comment "\n#APP\n\t#"
|
||||
# endif
|
||||
# define link_warning(symbol, msg) \
|
||||
__make_section_unallocated (".gnu.warning." #symbol) \
|
36
patches/glibc/ports-2.13/230-no-inline-gmon.patch
Normal file
36
patches/glibc/ports-2.13/230-no-inline-gmon.patch
Normal file
@ -0,0 +1,36 @@
|
||||
http://bugs.gentoo.org/196245
|
||||
http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html
|
||||
|
||||
Attached is a patch to add __attribute__ ((noinline)) to
|
||||
call_gmon_start.
|
||||
|
||||
Without this patch, the sec script that processed initfini.s removes a
|
||||
part of inlined call_gmon_start, causing undefined label errors.
|
||||
|
||||
This patch solves the problem by forcing gcc not to inline
|
||||
call_gmon_start with __attribute__ ((noinline)).
|
||||
|
||||
Tested by building for arm-none-lixux-gnueabi. OK to apply?
|
||||
|
||||
Kazu Hirata
|
||||
|
||||
2006-05-07 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
* sysdeps/generic/initfini.c (call_gmon_start): Add
|
||||
__attribute__ ((noinline)).
|
||||
|
||||
Index: sysdeps/generic/initfini.c
|
||||
===================================================================
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/generic/initfini.c glibc-2.13/sysdeps/generic/initfini.c
|
||||
--- glibc-2.13.orig/sysdeps/generic/initfini.c 2007-06-17 20:02:40.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/generic/initfini.c 2009-11-13 00:50:09.000000000 +0100
|
||||
@@ -70,7 +70,7 @@
|
||||
/* The beginning of _init: */
|
||||
asm ("\n/*@_init_PROLOG_BEGINS*/");
|
||||
|
||||
-static void
|
||||
+static void __attribute__ ((noinline))
|
||||
call_gmon_start(void)
|
||||
{
|
||||
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
|
17
patches/glibc/ports-2.13/240-check_native-headers.patch
Normal file
17
patches/glibc/ports-2.13/240-check_native-headers.patch
Normal file
@ -0,0 +1,17 @@
|
||||
many ports hit this warning:
|
||||
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
|
||||
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
|
||||
|
||||
snipped from suse
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/check_native.c glibc-2.13/sysdeps/unix/sysv/linux/check_native.c
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/check_native.c 2007-11-24 04:12:17.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/check_native.c 2009-11-13 00:50:11.000000000 +0100
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <net/if.h>
|
45
patches/glibc/ports-2.13/250-fix-pr631.patch
Normal file
45
patches/glibc/ports-2.13/250-fix-pr631.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From dank@kegel.com
|
||||
Wed Jun 15 09:12:43 PDT 2005
|
||||
|
||||
Fixes
|
||||
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r'
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent'
|
||||
... 53 lines deleted ...
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r'
|
||||
collect2: ld returned 1 exit status
|
||||
make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1
|
||||
|
||||
when building glibc with --enable-static-nss.
|
||||
|
||||
See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631
|
||||
|
||||
diff -durN glibc-2.13.orig/Makeconfig glibc-2.13/Makeconfig
|
||||
--- glibc-2.13.orig/Makeconfig 2009-11-13 00:49:41.000000000 +0100
|
||||
+++ glibc-2.13/Makeconfig 2009-11-13 00:50:13.000000000 +0100
|
||||
@@ -531,7 +531,7 @@
|
||||
|
||||
# The static libraries.
|
||||
ifeq (yes,$(build-static))
|
||||
-link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a
|
||||
+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a
|
||||
else
|
||||
ifeq (yes,$(build-shared))
|
||||
# We can try to link the programs with lib*_pic.a...
|
||||
diff -durN glibc-2.13.orig/elf/Makefile glibc-2.13/elf/Makefile
|
||||
--- glibc-2.13.orig/elf/Makefile 2009-01-31 01:20:55.000000000 +0100
|
||||
+++ glibc-2.13/elf/Makefile 2009-11-13 00:50:13.000000000 +0100
|
||||
@@ -146,6 +146,13 @@
|
||||
install-bin-script = ldd
|
||||
endif
|
||||
|
||||
+ifeq (yes,$(build-static-nss))
|
||||
+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
||||
+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
||||
+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
|
||||
+ $(resolvobjdir)/libresolv.a
|
||||
+endif
|
||||
+
|
||||
others = sprof sln
|
||||
install-bin = sprof
|
||||
others-static = sln
|
40
patches/glibc/ports-2.13/260-assume-pipe2.patch
Normal file
40
patches/glibc/ports-2.13/260-assume-pipe2.patch
Normal file
@ -0,0 +1,40 @@
|
||||
http://bugs.gentoo.org/250342
|
||||
http://sources.redhat.com/bugzilla/show_bug.cgi?id=9685
|
||||
|
||||
we cant assume sock_cloexec and pipe2 are bound together as the former defines
|
||||
are found in glibc only while the latter are a combo of kernel headers and
|
||||
glibc. so if we do a runtime detection of SOCK_CLOEXEC, but pipe2() is a stub
|
||||
inside of glibc, we hit a problem. for example:
|
||||
|
||||
#include <grp.h>
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
getgrnam("portage");
|
||||
if (!popen("ls", "r"))
|
||||
perror("popen()");
|
||||
}
|
||||
|
||||
getgrnam() will detect that the kernel supports SOCK_CLOEXEC and then set both
|
||||
__have_sock_cloexec and __have_pipe2 to true. but if glibc was built against
|
||||
older kernel headers where __NR_pipe2 does not exist, glibc will have a ENOSYS
|
||||
stub for it. so popen() will always fail as glibc assumes pipe2() works.
|
||||
|
||||
diff -durN glibc-2.13.orig/socket/have_sock_cloexec.c glibc-2.13/socket/have_sock_cloexec.c
|
||||
--- glibc-2.13.orig/socket/have_sock_cloexec.c 2008-07-25 18:46:23.000000000 +0200
|
||||
+++ glibc-2.13/socket/have_sock_cloexec.c 2009-11-13 00:50:15.000000000 +0100
|
||||
@@ -16,9 +16,14 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#include <fcntl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC
|
||||
int __have_sock_cloexec;
|
||||
#endif
|
||||
+
|
||||
+#if defined O_CLOEXEC && !defined __ASSUME_PIPE2
|
||||
+int __have_pipe2;
|
||||
+#endif
|
32
patches/glibc/ports-2.13/270-china.patch
Normal file
32
patches/glibc/ports-2.13/270-china.patch
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
|
||||
diff -durN glibc-2.13.orig/localedata/locales/zh_TW glibc-2.13/localedata/locales/zh_TW
|
||||
--- glibc-2.13.orig/localedata/locales/zh_TW 2004-11-01 00:42:28.000000000 +0100
|
||||
+++ glibc-2.13/localedata/locales/zh_TW 2009-11-13 00:50:17.000000000 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
comment_char %
|
||||
escape_char /
|
||||
%
|
||||
-% Chinese language locale for Taiwan R.O.C.
|
||||
+% Chinese language locale for Taiwan
|
||||
% charmap: BIG5-CP950
|
||||
%
|
||||
% Original Author:
|
||||
@@ -17,7 +17,7 @@
|
||||
% Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
|
||||
|
||||
LC_IDENTIFICATION
|
||||
-title "Chinese locale for Taiwan R.O.C."
|
||||
+title "Chinese locale for Taiwan"
|
||||
source ""
|
||||
address ""
|
||||
contact ""
|
||||
@@ -25,7 +25,7 @@
|
||||
tel ""
|
||||
fax ""
|
||||
language "Chinese"
|
||||
-territory "Taiwan R.O.C."
|
||||
+territory "Taiwan"
|
||||
revision "0.2"
|
||||
date "2000-08-02"
|
||||
%
|
115
patches/glibc/ports-2.13/280-new-valencian-locale.patch
Normal file
115
patches/glibc/ports-2.13/280-new-valencian-locale.patch
Normal file
@ -0,0 +1,115 @@
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=131815
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=2522
|
||||
|
||||
diff -durN glibc-2.13.orig/localedata/SUPPORTED glibc-2.13/localedata/SUPPORTED
|
||||
--- glibc-2.13.orig/localedata/SUPPORTED 2009-04-18 10:43:52.000000000 +0200
|
||||
+++ glibc-2.13/localedata/SUPPORTED 2009-11-13 00:50:20.000000000 +0100
|
||||
@@ -72,6 +72,8 @@
|
||||
ca_ES.UTF-8/UTF-8 \
|
||||
ca_ES/ISO-8859-1 \
|
||||
ca_ES@euro/ISO-8859-15 \
|
||||
+ca_ES.UTF-8@valencia/UTF-8 \
|
||||
+ca_ES@valencia/ISO-8859-15 \
|
||||
ca_FR.UTF-8/UTF-8 \
|
||||
ca_FR/ISO-8859-15 \
|
||||
ca_IT.UTF-8/UTF-8 \
|
||||
diff -durN glibc-2.13.orig/localedata/locales/ca_ES@valencia glibc-2.13/localedata/locales/ca_ES@valencia
|
||||
--- glibc-2.13.orig/localedata/locales/ca_ES@valencia 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ glibc-2.13/localedata/locales/ca_ES@valencia 2009-11-13 00:50:20.000000000 +0100
|
||||
@@ -0,0 +1,96 @@
|
||||
+comment_char %
|
||||
+escape_char /
|
||||
+%
|
||||
+% Valencian (southern Catalan) locale for Spain with Euro
|
||||
+%
|
||||
+% Note that this locale is almost the same as ca_ES@euro. The point of having
|
||||
+% a separate locale is only for PO translations, which have a lot of social
|
||||
+% support and are very appreciated by the Valencian-speaking community.
|
||||
+%
|
||||
+% Contact: Jordi Mallach
|
||||
+% Email: jordi@gnu.org
|
||||
+% Tel:
|
||||
+% Fax:
|
||||
+% Language: ca
|
||||
+% Territory: ES
|
||||
+% Option: euro
|
||||
+% Revision: 1.0
|
||||
+% Date: 2006-04-06
|
||||
+% Application: general
|
||||
+% Users: general
|
||||
+% Repertoiremap: mnemonic,ds
|
||||
+% Charset: ISO-8859-15
|
||||
+% Distribution and use is free, also
|
||||
+% for commercial purposes.
|
||||
+
|
||||
+LC_IDENTIFICATION
|
||||
+title "Valencian (southern Catalan) locale for Spain with Euro"
|
||||
+source ""
|
||||
+address ""
|
||||
+contact "Jordi Mallach"
|
||||
+email "jordi@gnu.org"
|
||||
+tel ""
|
||||
+fax ""
|
||||
+language "Catalan"
|
||||
+territory "Spain"
|
||||
+revision "1.0"
|
||||
+date "2006-04-06"
|
||||
+%
|
||||
+category "ca_ES@valencia:2006";LC_IDENTIFICATION
|
||||
+category "ca_ES@valencia:2006";LC_CTYPE
|
||||
+category "ca_ES@valencia:2006";LC_COLLATE
|
||||
+category "ca_ES@valencia:2006";LC_MONETARY
|
||||
+category "ca_ES@valencia:2006";LC_NUMERIC
|
||||
+category "ca_ES@valencia:2006";LC_TIME
|
||||
+category "ca_ES@valencia:2006";LC_MESSAGES
|
||||
+category "ca_ES@valencia:2006";LC_PAPER
|
||||
+category "ca_ES@valencia:2006";LC_NAME
|
||||
+category "ca_ES@valencia:2006";LC_ADDRESS
|
||||
+category "ca_ES@valencia:2006";LC_TELEPHONE
|
||||
+category "ca_ES@valencia:2006";LC_MEASUREMENT
|
||||
+
|
||||
+END LC_IDENTIFICATION
|
||||
+
|
||||
+LC_CTYPE
|
||||
+copy "i18n"
|
||||
+END LC_CTYPE
|
||||
+
|
||||
+LC_COLLATE
|
||||
+copy "ca_ES"
|
||||
+END LC_COLLATE
|
||||
+
|
||||
+LC_MONETARY
|
||||
+copy "ca_ES"
|
||||
+END LC_MONETARY
|
||||
+
|
||||
+LC_NUMERIC
|
||||
+copy "ca_ES"
|
||||
+END LC_NUMERIC
|
||||
+
|
||||
+LC_TIME
|
||||
+copy "ca_ES"
|
||||
+END LC_TIME
|
||||
+
|
||||
+LC_MESSAGES
|
||||
+copy "ca_ES"
|
||||
+END LC_MESSAGES
|
||||
+
|
||||
+LC_PAPER
|
||||
+copy "ca_ES"
|
||||
+END LC_PAPER
|
||||
+
|
||||
+LC_NAME
|
||||
+copy "ca_ES"
|
||||
+END LC_NAME
|
||||
+
|
||||
+LC_ADDRESS
|
||||
+copy "ca_ES"
|
||||
+END LC_ADDRESS
|
||||
+
|
||||
+LC_TELEPHONE
|
||||
+copy "ca_ES"
|
||||
+END LC_TELEPHONE
|
||||
+
|
||||
+LC_MEASUREMENT
|
||||
+copy "ca_ES"
|
||||
+END LC_MEASUREMENT
|
40
patches/glibc/ports-2.13/300-nscd-one-fork.patch
Normal file
40
patches/glibc/ports-2.13/300-nscd-one-fork.patch
Normal file
@ -0,0 +1,40 @@
|
||||
only fork one to assist in stop-start-daemon assumptions about daemon behavior
|
||||
|
||||
http://bugs.gentoo.org/190785
|
||||
|
||||
diff -durN glibc-2.13.orig/nscd/nscd.c glibc-2.13/nscd/nscd.c
|
||||
--- glibc-2.13.orig/nscd/nscd.c 2009-02-06 21:10:27.000000000 +0100
|
||||
+++ glibc-2.13/nscd/nscd.c 2009-11-13 00:50:24.000000000 +0100
|
||||
@@ -182,6 +182,9 @@
|
||||
if (pid != 0)
|
||||
exit (0);
|
||||
|
||||
+ if (write_pid (_PATH_NSCDPID) < 0)
|
||||
+ dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
|
||||
+
|
||||
int nullfd = open (_PATH_DEVNULL, O_RDWR);
|
||||
if (nullfd != -1)
|
||||
{
|
||||
@@ -231,12 +234,6 @@
|
||||
for (i = min_close_fd; i < getdtablesize (); i++)
|
||||
close (i);
|
||||
|
||||
- pid = fork ();
|
||||
- if (pid == -1)
|
||||
- error (EXIT_FAILURE, errno, _("cannot fork"));
|
||||
- if (pid != 0)
|
||||
- exit (0);
|
||||
-
|
||||
setsid ();
|
||||
|
||||
if (chdir ("/") != 0)
|
||||
@@ -245,9 +242,6 @@
|
||||
|
||||
openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);
|
||||
|
||||
- if (write_pid (_PATH_NSCDPID) < 0)
|
||||
- dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
|
||||
-
|
||||
if (!init_logfile ())
|
||||
dbg_log (_("Could not create log file"));
|
||||
|
246
patches/glibc/ports-2.13/310-hppa-nptl-carlos.patch
Normal file
246
patches/glibc/ports-2.13/310-hppa-nptl-carlos.patch
Normal file
@ -0,0 +1,246 @@
|
||||
|
||||
|
||||
diff -durN glibc-2.13.orig/elf/rtld.c glibc-2.13/elf/rtld.c
|
||||
--- glibc-2.13.orig/elf/rtld.c 2009-04-17 02:00:08.000000000 +0200
|
||||
+++ glibc-2.13/elf/rtld.c 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -392,14 +392,14 @@
|
||||
know it is available. We do not have to clear the memory if we
|
||||
do not have to use the temporary bootstrap_map. Global variables
|
||||
are initialized to zero by default. */
|
||||
-#ifndef DONT_USE_BOOTSTRAP_MAP
|
||||
+#if !defined DONT_USE_BOOTSTRAP_MAP
|
||||
# ifdef HAVE_BUILTIN_MEMSET
|
||||
__builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info));
|
||||
# else
|
||||
- for (size_t cnt = 0;
|
||||
- cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
|
||||
- ++cnt)
|
||||
- bootstrap_map.l_info[cnt] = 0;
|
||||
+ /* Clear the whole bootstrap_map structure */
|
||||
+ for (char *cnt = (char *)&(bootstrap_map);
|
||||
+ cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map));
|
||||
+ *cnt++ = '\0');
|
||||
# endif
|
||||
# if USE___THREAD
|
||||
bootstrap_map.l_tls_modid = 0;
|
||||
diff -durN glibc-2.13.orig/include/atomic.h glibc-2.13/include/atomic.h
|
||||
--- glibc-2.13.orig/include/atomic.h 2009-02-09 00:49:53.000000000 +0100
|
||||
+++ glibc-2.13/include/atomic.h 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -185,7 +185,7 @@
|
||||
__typeof (*(mem)) __atg5_value = (newvalue); \
|
||||
\
|
||||
do \
|
||||
- __atg5_oldval = *__atg5_memp; \
|
||||
+ __atg5_oldval = *(volatile __typeof (mem))__atg5_memp; \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \
|
||||
__atg5_oldval), 0)); \
|
||||
@@ -206,7 +206,7 @@
|
||||
__typeof (*(mem)) __atg6_value = (value); \
|
||||
\
|
||||
do \
|
||||
- __atg6_oldval = *__atg6_memp; \
|
||||
+ __atg6_oldval = *(volatile __typeof (mem))__atg6_memp; \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg6_memp, \
|
||||
__atg6_oldval \
|
||||
@@ -224,7 +224,7 @@
|
||||
__typeof (*(mem)) __atg7_value = (value); \
|
||||
\
|
||||
do \
|
||||
- __atg7_oldv = *__atg7_memp; \
|
||||
+ __atg7_oldv = *(volatile __typeof (mem))__atg7_memp; \
|
||||
while (__builtin_expect \
|
||||
(catomic_compare_and_exchange_bool_acq (__atg7_memp, \
|
||||
__atg7_oldv \
|
||||
@@ -242,7 +242,7 @@
|
||||
__typeof (mem) __atg8_memp = (mem); \
|
||||
__typeof (*(mem)) __atg8_value = (value); \
|
||||
do { \
|
||||
- __atg8_oldval = *__atg8_memp; \
|
||||
+ __atg8_oldval = *(volatile __typeof (mem))__atg8_memp; \
|
||||
if (__atg8_oldval >= __atg8_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -259,7 +259,7 @@
|
||||
__typeof (mem) __atg9_memp = (mem); \
|
||||
__typeof (*(mem)) __atg9_value = (value); \
|
||||
do { \
|
||||
- __atg9_oldv = *__atg9_memp; \
|
||||
+ __atg9_oldv = *(volatile __typeof (mem))__atg9_memp; \
|
||||
if (__atg9_oldv >= __atg9_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -277,7 +277,7 @@
|
||||
__typeof (mem) __atg10_memp = (mem); \
|
||||
__typeof (*(mem)) __atg10_value = (value); \
|
||||
do { \
|
||||
- __atg10_oldval = *__atg10_memp; \
|
||||
+ __atg10_oldval = *(volatile __typeof (mem))__atg10_memp; \
|
||||
if (__atg10_oldval <= __atg10_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -361,7 +361,7 @@
|
||||
\
|
||||
do \
|
||||
{ \
|
||||
- __atg11_oldval = *__atg11_memp; \
|
||||
+ __atg11_oldval = *(volatile __typeof (mem))__atg11_memp; \
|
||||
if (__builtin_expect (__atg11_oldval <= 0, 0)) \
|
||||
break; \
|
||||
} \
|
||||
@@ -400,7 +400,7 @@
|
||||
__typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); \
|
||||
\
|
||||
do \
|
||||
- __atg14_old = (*__atg14_memp); \
|
||||
+ __atg14_old = (*(volatile __typeof (mem))__atg14_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg14_memp, \
|
||||
__atg14_old | __atg14_mask,\
|
||||
@@ -418,7 +418,7 @@
|
||||
__typeof (*(mem)) __atg15_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg15_old = (*__atg15_memp); \
|
||||
+ __atg15_old = (*(volatile __typeof (mem))__atg15_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg15_memp, \
|
||||
__atg15_old & __atg15_mask, \
|
||||
@@ -450,7 +450,7 @@
|
||||
__typeof (*(mem)) __atg16_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg16_old = (*__atg16_memp); \
|
||||
+ __atg16_old = (*(volatile __typeof (mem))__atg16_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg16_memp, \
|
||||
__atg16_old & __atg16_mask,\
|
||||
@@ -468,7 +468,7 @@
|
||||
__typeof (*(mem)) __atg17_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg17_old = (*__atg17_memp); \
|
||||
+ __atg17_old = (*(volatile __typeof (mem))__atg17_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg17_memp, \
|
||||
__atg17_old | __atg17_mask, \
|
||||
@@ -484,7 +484,7 @@
|
||||
__typeof (*(mem)) __atg18_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg18_old = (*__atg18_memp); \
|
||||
+ __atg18_old = (*(volatile __typeof (mem))__atg18_memp); \
|
||||
while (__builtin_expect \
|
||||
(catomic_compare_and_exchange_bool_acq (__atg18_memp, \
|
||||
__atg18_old | __atg18_mask,\
|
||||
@@ -500,7 +500,7 @@
|
||||
__typeof (*(mem)) __atg19_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg19_old = (*__atg19_memp); \
|
||||
+ __atg19_old = (*(volatile __typeof (mem))__atg19_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg19_memp, \
|
||||
__atg19_old | __atg19_mask,\
|
||||
diff -durN glibc-2.13.orig/nptl/Makefile glibc-2.13/nptl/Makefile
|
||||
--- glibc-2.13.orig/nptl/Makefile 2008-11-12 14:38:23.000000000 +0100
|
||||
+++ glibc-2.13/nptl/Makefile 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -265,9 +265,9 @@
|
||||
# Files which must not be linked with libpthread.
|
||||
tests-nolibpthread = tst-unload
|
||||
|
||||
-# This sets the stack resource limit to 1023kb, which is not a multiple
|
||||
-# of the page size since every architecture's page size is > 1k.
|
||||
-tst-oddstacklimit-ENV = ; ulimit -s 1023;
|
||||
+# This sets the stack resource limit to 8193kb, which is not a multiple
|
||||
+# of the page size since every architecture's page size is 4096 bytes.
|
||||
+tst-oddstacklimit-ENV = ; ulimit -s 8193;
|
||||
|
||||
distribute = eintr.c tst-cleanup4aux.c
|
||||
|
||||
@@ -426,6 +426,35 @@
|
||||
CFLAGS-tst-cleanupx4.c += -fexceptions
|
||||
CFLAGS-tst-oncex3.c += -fexceptions
|
||||
CFLAGS-tst-oncex4.c += -fexceptions
|
||||
+
|
||||
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
|
||||
+LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s)
|
||||
+
|
||||
CFLAGS-tst-align.c += $(stack-align-test-flags)
|
||||
CFLAGS-tst-align3.c += $(stack-align-test-flags)
|
||||
CFLAGS-tst-initializers1.c = -W -Wall -Werror
|
||||
diff -durN glibc-2.13.orig/nptl/pthread_barrier_wait.c glibc-2.13/nptl/pthread_barrier_wait.c
|
||||
--- glibc-2.13.orig/nptl/pthread_barrier_wait.c 2007-08-01 06:18:50.000000000 +0200
|
||||
+++ glibc-2.13/nptl/pthread_barrier_wait.c 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -64,7 +64,7 @@
|
||||
do
|
||||
lll_futex_wait (&ibarrier->curr_event, event,
|
||||
ibarrier->private ^ FUTEX_PRIVATE_FLAG);
|
||||
- while (event == ibarrier->curr_event);
|
||||
+ while (event == *(volatile unsigned int *)&ibarrier->curr_event);
|
||||
}
|
||||
|
||||
/* Make sure the init_count is stored locally or in a register. */
|
||||
diff -durN glibc-2.13.orig/nptl/sysdeps/pthread/Makefile glibc-2.13/nptl/sysdeps/pthread/Makefile
|
||||
--- glibc-2.13.orig/nptl/sysdeps/pthread/Makefile 2006-02-28 08:09:41.000000000 +0100
|
||||
+++ glibc-2.13/nptl/sysdeps/pthread/Makefile 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -33,7 +33,9 @@
|
||||
|
||||
ifeq ($(have-forced-unwind),yes)
|
||||
tests += tst-mqueue8x
|
||||
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
|
||||
CFLAGS-tst-mqueue8x.c += -fexceptions
|
||||
+LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s)
|
||||
endif
|
||||
endif
|
||||
|
||||
diff -durN glibc-2.13.orig/stdio-common/Makefile glibc-2.13/stdio-common/Makefile
|
||||
--- glibc-2.13.orig/stdio-common/Makefile 2009-04-11 07:29:56.000000000 +0200
|
||||
+++ glibc-2.13/stdio-common/Makefile 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -82,7 +82,7 @@
|
||||
$(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
|
||||
endif
|
||||
|
||||
-CFLAGS-vfprintf.c = -Wno-uninitialized
|
||||
+CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch
|
||||
CFLAGS-vfwprintf.c = -Wno-uninitialized
|
||||
CFLAGS-tst-printf.c = -Wno-format
|
||||
CFLAGS-tstdiomisc.c = -Wno-format
|
||||
diff -durN glibc-2.13.orig/sunrpc/clnt_udp.c glibc-2.13/sunrpc/clnt_udp.c
|
||||
--- glibc-2.13.orig/sunrpc/clnt_udp.c 2008-07-26 10:42:44.000000000 +0200
|
||||
+++ glibc-2.13/sunrpc/clnt_udp.c 2009-11-13 00:50:26.000000000 +0100
|
||||
@@ -456,7 +456,7 @@
|
||||
while (inlen < 0 && errno == EINTR);
|
||||
if (inlen < 0)
|
||||
{
|
||||
- if (errno == EWOULDBLOCK)
|
||||
+ if (errno == EWOULDBLOCK || errno == EAGAIN)
|
||||
continue;
|
||||
cu->cu_error.re_errno = errno;
|
||||
return (cu->cu_error.re_status = RPC_CANTRECV);
|
97
patches/glibc/ports-2.13/330-m68k-sys-user.patch
Normal file
97
patches/glibc/ports-2.13/330-m68k-sys-user.patch
Normal file
@ -0,0 +1,97 @@
|
||||
copied from kernel as it is sanitized now
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/m68k/sys/user.h glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/m68k/sys/user.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/m68k/sys/user.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/m68k/sys/user.h 2009-11-13 00:50:31.000000000 +0100
|
||||
@@ -1,3 +1,90 @@
|
||||
+#ifndef _SYS_USER_H
|
||||
+#define _SYS_USER_H
|
||||
+
|
||||
+/* Core file format: The core file is written in such a way that gdb
|
||||
+ can understand it and provide useful information to the user (under
|
||||
+ linux we use the 'trad-core' bfd). There are quite a number of
|
||||
+ obstacles to being able to view the contents of the floating point
|
||||
+ registers, and until these are solved you will not be able to view the
|
||||
+ contents of them. Actually, you can read in the core file and look at
|
||||
+ the contents of the user struct to find out what the floating point
|
||||
+ registers contain.
|
||||
+ The actual file contents are as follows:
|
||||
+ UPAGE: 1 page consisting of a user struct that tells gdb what is present
|
||||
+ in the file. Directly after this is a copy of the task_struct, which
|
||||
+ is currently not used by gdb, but it may come in useful at some point.
|
||||
+ All of the registers are stored as part of the upage. The upage should
|
||||
+ always be only one page.
|
||||
+ DATA: The data area is stored. We use current->end_text to
|
||||
+ current->brk to pick up all of the user variables, plus any memory
|
||||
+ that may have been malloced. No attempt is made to determine if a page
|
||||
+ is demand-zero or if a page is totally unused, we just cover the entire
|
||||
+ range. All of the addresses are rounded in such a way that an integral
|
||||
+ number of pages is written.
|
||||
+ STACK: We need the stack information in order to get a meaningful
|
||||
+ backtrace. We need to write the data from (esp) to
|
||||
+ current->start_stack, so we round each of these off in order to be able
|
||||
+ to write an integer number of pages.
|
||||
+ The minimum core file size is 3 pages, or 12288 bytes.
|
||||
+*/
|
||||
+
|
||||
+struct user_m68kfp_struct {
|
||||
+ unsigned long fpregs[8*3]; /* fp0-fp7 registers */
|
||||
+ unsigned long fpcntl[3]; /* fp control regs */
|
||||
+};
|
||||
+
|
||||
+/* This is the old layout of "struct pt_regs" as of Linux 1.x, and
|
||||
+ is still the layout used by user (the new pt_regs doesn't have
|
||||
+ all registers). */
|
||||
+struct user_regs_struct {
|
||||
+ long d1,d2,d3,d4,d5,d6,d7;
|
||||
+ long a0,a1,a2,a3,a4,a5,a6;
|
||||
+ long d0;
|
||||
+ long usp;
|
||||
+ long orig_d0;
|
||||
+ short stkadj;
|
||||
+ short sr;
|
||||
+ long pc;
|
||||
+ short fmtvec;
|
||||
+ short __fill;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+/* When the kernel dumps core, it starts by dumping the user struct -
|
||||
+ this will be used by gdb to figure out where the data and stack segments
|
||||
+ are within the file, and what virtual addresses to use. */
|
||||
+struct user{
|
||||
+/* We start with the registers, to mimic the way that "memory" is returned
|
||||
+ from the ptrace(3,...) function. */
|
||||
+ struct user_regs_struct regs; /* Where the registers are actually stored */
|
||||
+/* ptrace does not yet supply these. Someday.... */
|
||||
+ int u_fpvalid; /* True if math co-processor being used. */
|
||||
+ /* for this mess. Not yet used. */
|
||||
+ struct user_m68kfp_struct m68kfp; /* Math Co-processor registers. */
|
||||
+/* The rest of this junk is to help gdb figure out what goes where */
|
||||
+ unsigned long int u_tsize; /* Text segment size (pages). */
|
||||
+ unsigned long int u_dsize; /* Data segment size (pages). */
|
||||
+ unsigned long int u_ssize; /* Stack segment size (pages). */
|
||||
+ unsigned long start_code; /* Starting virtual address of text. */
|
||||
+ unsigned long start_stack; /* Starting virtual address of stack area.
|
||||
+ This is actually the bottom of the stack,
|
||||
+ the top of the stack is always found in the
|
||||
+ esp register. */
|
||||
+ long int signal; /* Signal that caused the core dump. */
|
||||
+ int reserved; /* No longer used */
|
||||
+ struct user_regs_struct *u_ar0;
|
||||
+ /* Used by gdb to help find the values for */
|
||||
+ /* the registers. */
|
||||
+ struct user_m68kfp_struct* u_fpstate; /* Math Co-processor pointer. */
|
||||
+ unsigned long magic; /* To uniquely identify a core file */
|
||||
+ char u_comm[32]; /* User command that was responsible */
|
||||
+};
|
||||
+#define NBPG 4096
|
||||
+#define UPAGES 1
|
||||
+#define HOST_TEXT_START_ADDR (u.start_code)
|
||||
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
|
||||
+
|
||||
+#endif
|
||||
/* Copyright (C) 2008, 2010 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/unix/sysv/linux/m68k/sys/user.h glibc-2.13/ports/sysdeps/unix/sysv/linux/m68k/sys/user.h
|
66
patches/glibc/ports-2.13/340-dl_execstack-PaX-support.patch
Normal file
66
patches/glibc/ports-2.13/340-dl_execstack-PaX-support.patch
Normal file
@ -0,0 +1,66 @@
|
||||
With latest versions of glibc, a lot of apps failed on a PaX enabled
|
||||
system with:
|
||||
cannot enable executable stack as shared object requires: Permission denied
|
||||
|
||||
This is due to PaX 'exec-protecting' the stack, and ld.so then trying
|
||||
to make the stack executable due to some libraries not containing the
|
||||
PT_GNU_STACK section. Bug #32960. <azarah@gentoo.org> (12 Nov 2003).
|
||||
|
||||
Patch also NPTL. Bug #116086. <kevquinn@gentoo.org> (20 Dec 2005).
|
||||
|
||||
diff -durN glibc-2.13.orig/nptl/allocatestack.c glibc-2.13/nptl/allocatestack.c
|
||||
--- glibc-2.13.orig/nptl/allocatestack.c 2009-01-29 21:34:16.000000000 +0100
|
||||
+++ glibc-2.13/nptl/allocatestack.c 2009-11-13 00:50:33.000000000 +0100
|
||||
@@ -329,7 +329,8 @@
|
||||
# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
|
||||
#endif
|
||||
if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
|
||||
- return errno;
|
||||
+ if (errno != EACCES) /* PAX is enabled */
|
||||
+ return errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/dl-execstack.c glibc-2.13/sysdeps/unix/sysv/linux/dl-execstack.c
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/dl-execstack.c 2006-01-08 09:21:15.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/dl-execstack.c 2009-11-13 00:50:33.000000000 +0100
|
||||
@@ -63,7 +63,10 @@
|
||||
else
|
||||
# endif
|
||||
{
|
||||
- result = errno;
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ result = 0;
|
||||
+ else
|
||||
+ result = errno;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -89,7 +92,12 @@
|
||||
page -= size;
|
||||
else
|
||||
{
|
||||
- if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ {
|
||||
+ result = 0;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ else if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
{
|
||||
result = errno;
|
||||
goto out;
|
||||
@@ -115,7 +123,12 @@
|
||||
page += size;
|
||||
else
|
||||
{
|
||||
- if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ {
|
||||
+ result = 0;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ else if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
{
|
||||
result = errno;
|
||||
goto out;
|
32
patches/glibc/ports-2.13/350-pre20040117-pt_pax.patch
Normal file
32
patches/glibc/ports-2.13/350-pre20040117-pt_pax.patch
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
|
||||
diff -durN glibc-2.13.orig/elf/elf.h glibc-2.13/elf/elf.h
|
||||
--- glibc-2.13.orig/elf/elf.h 2009-04-15 02:15:54.000000000 +0200
|
||||
+++ glibc-2.13/elf/elf.h 2009-11-13 00:50:35.000000000 +0100
|
||||
@@ -580,6 +580,7 @@
|
||||
#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
|
||||
#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
|
||||
#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
|
||||
+#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */
|
||||
#define PT_LOSUNW 0x6ffffffa
|
||||
#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
|
||||
#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
|
||||
@@ -593,6 +594,18 @@
|
||||
#define PF_X (1 << 0) /* Segment is executable */
|
||||
#define PF_W (1 << 1) /* Segment is writable */
|
||||
#define PF_R (1 << 2) /* Segment is readable */
|
||||
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
|
||||
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
|
||||
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
|
||||
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
|
||||
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
|
||||
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
|
||||
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
|
||||
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
|
||||
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
|
||||
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
|
||||
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
|
||||
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
|
||||
#define PF_MASKOS 0x0ff00000 /* OS-specific */
|
||||
#define PF_MASKPROC 0xf0000000 /* Processor-specific */
|
||||
|
193
patches/glibc/ports-2.13/360-tests-sandbox-libdl-paths.patch
Normal file
193
patches/glibc/ports-2.13/360-tests-sandbox-libdl-paths.patch
Normal file
@ -0,0 +1,193 @@
|
||||
when glibc runs its tests, it does so by invoking the local library loader.
|
||||
in Gentoo, we build/run inside of our "sandbox" which itself is linked against
|
||||
libdl (so that it can load libraries and pull out symbols). the trouble
|
||||
is that when you upgrade from an older glibc to the new one, often times
|
||||
internal symbols change name or abi. this is normally OK as you cannot use
|
||||
libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
|
||||
we always say "keep all of the glibc libraries from the same build". but
|
||||
when glibc runs its tests, it uses dynamic paths to point to its new local
|
||||
copies of libraries. if the test doesnt use libdl, then glibc doesnt add
|
||||
its path, and when sandbox triggers the loading of libdl, glibc does so
|
||||
from the host system system. this gets us into the case of all libraries
|
||||
are from the locally compiled version of glibc except for libdl.so.
|
||||
|
||||
Fix by Wormo
|
||||
|
||||
http://bugs.gentoo.org/56898
|
||||
|
||||
diff -durN glibc-2.13.orig/grp/tst_fgetgrent.sh glibc-2.13/grp/tst_fgetgrent.sh
|
||||
--- glibc-2.13.orig/grp/tst_fgetgrent.sh 2001-07-06 06:54:46.000000000 +0200
|
||||
+++ glibc-2.13/grp/tst_fgetgrent.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -24,7 +24,8 @@
|
||||
rtld_installed_name=$1; shift
|
||||
|
||||
testout=${common_objpfx}/grp/tst_fgetgrent.out
|
||||
-library_path=${common_objpfx}
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
|
||||
result=0
|
||||
|
||||
diff -durN glibc-2.13.orig/iconvdata/run-iconv-test.sh glibc-2.13/iconvdata/run-iconv-test.sh
|
||||
--- glibc-2.13.orig/iconvdata/run-iconv-test.sh 2008-05-15 03:59:44.000000000 +0200
|
||||
+++ glibc-2.13/iconvdata/run-iconv-test.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -34,7 +34,7 @@
|
||||
export GCONV_PATH
|
||||
|
||||
# We have to have some directories in the library path.
|
||||
-LIBPATH=$codir:$codir/iconvdata
|
||||
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
|
||||
|
||||
# How the start the iconv(1) program.
|
||||
ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
|
||||
diff -durN glibc-2.13.orig/iconvdata/tst-table.sh glibc-2.13/iconvdata/tst-table.sh
|
||||
--- glibc-2.13.orig/iconvdata/tst-table.sh 2002-04-24 23:39:35.000000000 +0200
|
||||
+++ glibc-2.13/iconvdata/tst-table.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -59,8 +59,11 @@
|
||||
irreversible=${charset}.irreversible
|
||||
fi
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# iconv in one direction.
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-table-from ${charset} \
|
||||
> ${objpfx}tst-${charset}.table
|
||||
|
||||
diff -durN glibc-2.13.orig/intl/tst-codeset.sh glibc-2.13/intl/tst-codeset.sh
|
||||
--- glibc-2.13.orig/intl/tst-codeset.sh 2005-04-06 04:18:35.000000000 +0200
|
||||
+++ glibc-2.13/intl/tst-codeset.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -37,6 +37,9 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
${objpfx}tst-codeset > ${objpfx}tst-codeset.out
|
||||
|
||||
diff -durN glibc-2.13.orig/intl/tst-gettext.sh glibc-2.13/intl/tst-gettext.sh
|
||||
--- glibc-2.13.orig/intl/tst-gettext.sh 2004-08-15 21:28:18.000000000 +0200
|
||||
+++ glibc-2.13/intl/tst-gettext.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -51,9 +51,12 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# Now run the test.
|
||||
MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir
|
||||
|
||||
exit $?
|
||||
diff -durN glibc-2.13.orig/intl/tst-gettext2.sh glibc-2.13/intl/tst-gettext2.sh
|
||||
--- glibc-2.13.orig/intl/tst-gettext2.sh 2005-05-04 19:54:48.000000000 +0200
|
||||
+++ glibc-2.13/intl/tst-gettext2.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -65,8 +65,11 @@
|
||||
LOCPATH=${objpfx}domaindir
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# Now run the test.
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir &&
|
||||
cmp ${objpfx}tst-gettext2.out - <<EOF
|
||||
String1 - Lang1: 1st string
|
||||
diff -durN glibc-2.13.orig/intl/tst-translit.sh glibc-2.13/intl/tst-translit.sh
|
||||
--- glibc-2.13.orig/intl/tst-translit.sh 2005-05-04 19:56:10.000000000 +0200
|
||||
+++ glibc-2.13/intl/tst-translit.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -36,7 +36,10 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir
|
||||
|
||||
exit $?
|
||||
diff -durN glibc-2.13.orig/malloc/tst-mtrace.sh glibc-2.13/malloc/tst-mtrace.sh
|
||||
--- glibc-2.13.orig/malloc/tst-mtrace.sh 2005-10-15 01:40:35.000000000 +0200
|
||||
+++ glibc-2.13/malloc/tst-mtrace.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -24,9 +24,12 @@
|
||||
status=0
|
||||
trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \
|
||||
LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${common_objpfx}malloc/tst-mtrace || status=1
|
||||
|
||||
if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then
|
||||
diff -durN glibc-2.13.orig/nptl/tst-tls6.sh glibc-2.13/nptl/tst-tls6.sh
|
||||
--- glibc-2.13.orig/nptl/tst-tls6.sh 2003-09-03 00:02:59.000000000 +0200
|
||||
+++ glibc-2.13/nptl/tst-tls6.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -5,8 +5,8 @@
|
||||
rtld_installed_name=$1; shift
|
||||
logfile=$common_objpfx/nptl/tst-tls6.out
|
||||
|
||||
-# We have to find libc and nptl
|
||||
-library_path=${common_objpfx}:${common_objpfx}nptl
|
||||
+# We have to find libc and nptl (also libdl in case sandbox is in use)
|
||||
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
|
||||
tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||
${common_objpfx}/nptl/tst-tls5"
|
||||
|
||||
diff -durN glibc-2.13.orig/posix/globtest.sh glibc-2.13/posix/globtest.sh
|
||||
--- glibc-2.13.orig/posix/globtest.sh 2008-12-06 07:05:39.000000000 +0100
|
||||
+++ glibc-2.13/posix/globtest.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -18,7 +18,7 @@
|
||||
esac
|
||||
|
||||
# We have to find the libc and the NSS modules.
|
||||
-library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod
|
||||
+library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn
|
||||
|
||||
# Since we use `sort' we must make sure to use the same locale everywhere.
|
||||
LC_ALL=C
|
||||
diff -durN glibc-2.13.orig/posix/tst-getconf.sh glibc-2.13/posix/tst-getconf.sh
|
||||
--- glibc-2.13.orig/posix/tst-getconf.sh 2002-09-01 13:11:25.000000000 +0200
|
||||
+++ glibc-2.13/posix/tst-getconf.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -10,7 +10,10 @@
|
||||
else
|
||||
rtld_installed_name=$1; shift
|
||||
runit() {
|
||||
- ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@"
|
||||
+
|
||||
+ # make sure libdl is also in path in case sandbox is in use
|
||||
+ library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+ ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
diff -durN glibc-2.13.orig/posix/wordexp-tst.sh glibc-2.13/posix/wordexp-tst.sh
|
||||
--- glibc-2.13.orig/posix/wordexp-tst.sh 2000-10-20 18:23:30.000000000 +0200
|
||||
+++ glibc-2.13/posix/wordexp-tst.sh 2009-11-13 00:50:37.000000000 +0100
|
||||
@@ -19,8 +19,11 @@
|
||||
"
|
||||
export IFS
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
failed=0
|
||||
-${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \
|
||||
+${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||
${common_objpfx}posix/wordexp-test '$*' > ${testout}1
|
||||
cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1
|
||||
wordexp returned 0
|
14
patches/glibc/ports-2.13/380-dont-build-timezone.patch
Normal file
14
patches/glibc/ports-2.13/380-dont-build-timezone.patch
Normal file
@ -0,0 +1,14 @@
|
||||
timezone data has been split into the package sys-libs/timezone-data
|
||||
|
||||
diff -durN glibc-2.13.orig/Makeconfig glibc-2.13/Makeconfig
|
||||
--- glibc-2.13.orig/Makeconfig 2009-11-13 00:50:13.000000000 +0100
|
||||
+++ glibc-2.13/Makeconfig 2009-11-13 00:50:41.000000000 +0100
|
||||
@@ -944,7 +944,7 @@
|
||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
||||
grp pwd posix io termios resource misc socket sysvipc gmon \
|
||||
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||
- crypt nss localedata timezone rt conform debug \
|
||||
+ crypt nss localedata rt conform debug \
|
||||
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
|
||||
|
||||
ifndef avoid-generated
|
15
patches/glibc/ports-2.13/400-alpha-xstat.patch
Normal file
15
patches/glibc/ports-2.13/400-alpha-xstat.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h 2009-05-09 08:54:20.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h 2009-11-13 00:50:45.000000000 +0100
|
||||
@@ -386,6 +386,11 @@
|
||||
# define __ASSUME_GETDENTS32_D_TYPE 1
|
||||
#endif
|
||||
|
||||
+/* Starting with version 2.6.4, alpha stat64 syscalls are available. */
|
||||
+#if __LINUX_KERNEL_VERSION >= 0x020604 && defined __alpha__
|
||||
+# define __ASSUME_STAT64_SYSCALL 1
|
||||
+#endif
|
||||
+
|
||||
/* Starting with version 2.5.3, the initial location returned by `brk'
|
||||
after exec is always rounded up to the next page. */
|
||||
#if __LINUX_KERNEL_VERSION >= 132355
|
19
patches/glibc/ports-2.13/410-alpha-SETPIPE-GETPIPE.patch
Normal file
19
patches/glibc/ports-2.13/410-alpha-SETPIPE-GETPIPE.patch
Normal file
@ -0,0 +1,19 @@
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETPIPE_SZ,
|
||||
F_GETPIPE_SZ): Define.
|
||||
|
||||
diff --git glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
|
||||
index 860e9ac..e5e726b 100644
|
||||
--- glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
|
||||
@@ -97,6 +97,8 @@
|
||||
# define F_SETLEASE 1024 /* Set a lease. */
|
||||
# define F_GETLEASE 1025 /* Enquire what lease is active. */
|
||||
# define F_NOTIFY 1026 /* Request notfications on a directory. */
|
||||
+# define F_SETPIPE_SZ 1031 /* Set pipe page size array. */
|
||||
+# define F_GETPIPE_SZ 1032 /* Set pipe page size array. */
|
||||
#endif
|
||||
#ifdef __USE_XOPEN2K8
|
||||
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
|
||||
|
29
patches/glibc/ports-2.13/420-alpha-statfs.patch
Normal file
29
patches/glibc/ports-2.13/420-alpha-statfs.patch
Normal file
@ -0,0 +1,29 @@
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/mips/bits/statfs.h (struct statfs,
|
||||
struct statfs64): Add f_flags field.
|
||||
|
||||
diff --git glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/statfs.h glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
|
||||
index d838e6b..157591d 100644
|
||||
--- glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
|
||||
@@ -42,7 +42,8 @@ struct statfs
|
||||
__fsid_t f_fsid;
|
||||
int f_namelen;
|
||||
int f_frsize;
|
||||
- int f_spare[5];
|
||||
+ int f_flags;
|
||||
+ int f_spare[4];
|
||||
};
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
@@ -58,7 +59,8 @@ struct statfs64
|
||||
__fsid_t f_fsid;
|
||||
int f_namelen;
|
||||
int f_frsize;
|
||||
- int f_spare[5];
|
||||
+ int f_flags;
|
||||
+ int f_spare[4];
|
||||
};
|
||||
#endif
|
||||
|
14
patches/glibc/ports-2.13/430-alpha-creat.patch
Normal file
14
patches/glibc/ports-2.13/430-alpha-creat.patch
Normal file
@ -0,0 +1,14 @@
|
||||
alpha does not have a __NR_creat
|
||||
|
||||
http://bugs.gentoo.org/227275
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=6650
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/wordsize-64/creat64.c glibc-2.13/sysdeps/unix/sysv/linux/wordsize-64/creat64.c
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/wordsize-64/creat64.c 2007-11-10 20:34:26.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/wordsize-64/creat64.c 2009-11-13 00:50:51.000000000 +0100
|
||||
@@ -1 +1,5 @@
|
||||
/* Defined as alias for the syscall. */
|
||||
+#include <sysdep.h>
|
||||
+#ifndef __NR_creat
|
||||
+#include "../../../../../io/creat64.c"
|
||||
+#endif
|
13
patches/glibc/ports-2.13/440-alpha-cache-shape.patch
Normal file
13
patches/glibc/ports-2.13/440-alpha-cache-shape.patch
Normal file
@ -0,0 +1,13 @@
|
||||
older verisons of glibc would build dl-sysdep as shared-only and dl-support as
|
||||
static-only. alpha hooks in a cache variable via dl-auxv.h. newer versions of
|
||||
glibc build dl-sysdep as both shared and static which means we now have symbol
|
||||
duplication for static builds with dl-sysdep and dl-support. since dl-sysdep
|
||||
is both shared/static, there is no point in hooking dl-support anymore, so we
|
||||
can punt it.
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/dl-support.c glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/dl-support.c
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/dl-support.c 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/dl-support.c 2009-11-13 00:50:53.000000000 +0100
|
||||
@@ -1,2 +1,1 @@
|
||||
-#include "dl-auxv.h"
|
||||
#include <elf/dl-support.c>
|
23
patches/glibc/ports-2.13/450-alpha-DEFAULT_STACK_PERMS.patch
Normal file
23
patches/glibc/ports-2.13/450-alpha-DEFAULT_STACK_PERMS.patch
Normal file
@ -0,0 +1,23 @@
|
||||
2011-02-28 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X.
|
||||
|
||||
diff --git glibc-2.13/glibc-ports-2.13/sysdeps/alpha/stackinfo.h glibc-2.13/glibc-ports-2.13/sysdeps/alpha/stackinfo.h
|
||||
index 0a281bd..d9dbc35 100644
|
||||
--- glibc-2.13/glibc-ports-2.13/sysdeps/alpha/stackinfo.h
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/alpha/stackinfo.h
|
||||
@@ -22,7 +22,13 @@
|
||||
#ifndef _STACKINFO_H
|
||||
#define _STACKINFO_H 1
|
||||
|
||||
+#include <elf.h>
|
||||
+
|
||||
/* On Alpha the stack grows down. */
|
||||
#define _STACK_GROWS_DOWN 1
|
||||
|
||||
+/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is
|
||||
+ * present, but it is presumed absent. */
|
||||
+#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
|
||||
+
|
||||
#endif /* stackinfo.h */
|
||||
|
@ -0,0 +1,56 @@
|
||||
2006-05-30 Falk Hueffner <falk@debian.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/ioperm.c: force the architecture
|
||||
to ev6 in assembly code.
|
||||
|
||||
{standard input}: Assembler messages:
|
||||
{standard input}:341: Error: macro requires $at register while noat in effect
|
||||
{standard input}:374: Error: macro requires $at register while noat in effect
|
||||
{standard input}:438: Error: macro requires $at register while noat in effect
|
||||
{standard input}:471: Error: macro requires $at register while noat in effect
|
||||
make[3]: *** [/tmp/buildd/glibc-2.3.6/build-tree/alpha-libc/misc/ioperm.o] Error 1
|
||||
|
||||
Hrm. gcc puts .arch ev4 into the .s, and this overrides -mev6 for as.
|
||||
I cannot really think of anything better than
|
||||
|
||||
ports/sysdeps/unix/sysv/linux/alpha/ioperm.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/ioperm.c glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/ioperm.c
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/ioperm.c 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/alpha/ioperm.c 2009-11-13 00:50:57.000000000 +0100
|
||||
@@ -178,13 +178,13 @@
|
||||
static inline void
|
||||
stb_mb(unsigned char val, unsigned long addr)
|
||||
{
|
||||
- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val));
|
||||
+ __asm__(".arch ev6; stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val));
|
||||
}
|
||||
|
||||
static inline void
|
||||
stw_mb(unsigned short val, unsigned long addr)
|
||||
{
|
||||
- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val));
|
||||
+ __asm__(".arch ev6; stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val));
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -356,7 +356,7 @@
|
||||
unsigned long int addr = dense_port_to_cpu_addr (port);
|
||||
unsigned char r;
|
||||
|
||||
- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr));
|
||||
+ __asm__ (".arch ev6; ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr));
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
unsigned long int addr = dense_port_to_cpu_addr (port);
|
||||
unsigned short r;
|
||||
|
||||
- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr));
|
||||
+ __asm__ (".arch ev6; ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr));
|
||||
return r;
|
||||
}
|
||||
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/unix/sysv/linux/alpha/ioperm.c glibc-2.13/ports/sysdeps/unix/sysv/linux/alpha/ioperm.c
|
26
patches/glibc/ports-2.13/470-alpha-feupdateenv.patch
Normal file
26
patches/glibc/ports-2.13/470-alpha-feupdateenv.patch
Normal file
@ -0,0 +1,26 @@
|
||||
2011-03-01 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/fpu/feupdateenv.c (feupdateenv): Add
|
||||
libm_hidden_def.
|
||||
* sysdeps/alpha/fpu/ftestexcept.c (fetestexcept): Likewise.
|
||||
|
||||
diff --git glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/feupdateenv.c glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/feupdateenv.c
|
||||
index c798070..9abbf11 100644
|
||||
--- glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/feupdateenv.c
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/feupdateenv.c
|
||||
@@ -46,4 +46,5 @@ strong_alias (__feupdateenv, __old_feupdateenv)
|
||||
compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
|
||||
#endif
|
||||
|
||||
+libm_hidden_ver (__feupdateenv, feupdateenv)
|
||||
versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
|
||||
diff --git glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/ftestexcept.c glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/ftestexcept.c
|
||||
index a4b3081..34d8113 100644
|
||||
--- glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/ftestexcept.c
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/alpha/fpu/ftestexcept.c
|
||||
@@ -30,3 +30,4 @@ fetestexcept (int excepts)
|
||||
|
||||
return tmp & excepts & SWCR_STATUS_MASK;
|
||||
}
|
||||
+libm_hidden_def (fetestexcept)
|
||||
|
@ -0,0 +1,126 @@
|
||||
2009-07-25 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/kernel-features.h: define
|
||||
__ASSUME_FDATASYNC.
|
||||
* sysdeps/unix/sysv/linux/fdatasync.c: New file.
|
||||
* sysdeps/unix/sysv/linux/Makefile: compile fdatasync.c with
|
||||
-fexceptions.
|
||||
* sysdeps/unix/sysv/linux/syscalls.list: Remove fdatasync.
|
||||
|
||||
sysdeps/unix/sysv/linux/Makefile | 1
|
||||
sysdeps/unix/sysv/linux/fdatasync.c | 69 ++++++++++++++++++++++++++++++
|
||||
sysdeps/unix/sysv/linux/kernel-features.h | 6 ++
|
||||
sysdeps/unix/sysv/linux/syscalls.list | 1
|
||||
4 files changed, 76 insertions(+), 1 deletion(-)
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/Makefile glibc-2.13/sysdeps/unix/sysv/linux/Makefile
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/Makefile 2009-03-02 17:15:13.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/Makefile 2009-11-13 00:51:04.000000000 +0100
|
||||
@@ -20,6 +20,7 @@
|
||||
setfsuid setfsgid makedev epoll_pwait signalfd \
|
||||
eventfd eventfd_read eventfd_write prlimit
|
||||
|
||||
+CFLAGS-fdatasync.c = -fexceptions
|
||||
CFLAGS-gethostid.c = -fexceptions
|
||||
|
||||
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/fdatasync.c glibc-2.13/sysdeps/unix/sysv/linux/fdatasync.c
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/fdatasync.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/fdatasync.c 2009-11-13 00:51:04.000000000 +0100
|
||||
@@ -0,0 +1,69 @@
|
||||
+/* fdatasync -- synchronize at least the data part of a file with
|
||||
+ the underlying media. Linux version.
|
||||
+
|
||||
+ Copyright (C) 2007 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 <errno.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#include <sysdep-cancel.h>
|
||||
+#include <sys/syscall.h>
|
||||
+#include <bp-checks.h>
|
||||
+
|
||||
+#include <kernel-features.h>
|
||||
+
|
||||
+#if defined __NR_fdatasync && !defined __ASSUME_FDATASYNC
|
||||
+static int __have_no_fdatasync;
|
||||
+#endif
|
||||
+
|
||||
+static int
|
||||
+do_fdatasync (int fd)
|
||||
+{
|
||||
+#ifdef __ASSUME_FDATASYNC
|
||||
+ return INLINE_SYSCALL (fdatasync, 1, fd);
|
||||
+#elif defined __NR_fdatasync
|
||||
+ if (!__builtin_expect (__have_no_fdatasync, 0))
|
||||
+ {
|
||||
+ int result = INLINE_SYSCALL (fdatasync, 1, fd);
|
||||
+ if (__builtin_expect (result, 0) != -1 || errno != ENOSYS)
|
||||
+ return result;
|
||||
+
|
||||
+ __have_no_fdatasync = 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ return INLINE_SYSCALL (fsync, 1, fd);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+__fdatasync (int fd)
|
||||
+{
|
||||
+ if (SINGLE_THREAD_P)
|
||||
+ return do_fdatasync (fd);
|
||||
+
|
||||
+ int oldtype = LIBC_CANCEL_ASYNC ();
|
||||
+
|
||||
+ int result = do_fdatasync (fd);
|
||||
+
|
||||
+ LIBC_CANCEL_RESET (oldtype);
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+weak_alias (__fdatasync, fdatasync)
|
||||
+
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h 2009-11-13 00:50:45.000000000 +0100
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h 2009-11-13 00:51:04.000000000 +0100
|
||||
@@ -459,6 +459,12 @@
|
||||
# define __ASSUME_FUTEX_LOCK_PI 1
|
||||
#endif
|
||||
|
||||
+/* Support for fsyncdata syscall was added in 2.6.22 on alpha, but it
|
||||
+ was already present in 2.0 kernels on other architectures. */
|
||||
+#if (!defined __alpha || __LINUX_KERNEL_VERSION >= 0x020616)
|
||||
+# define __ASSUME_FDATASYNC 1
|
||||
+#endif
|
||||
+
|
||||
/* Support for utimensat syscall was added in 2.6.22, on SH
|
||||
only after 2.6.22-rc1. */
|
||||
#if __LINUX_KERNEL_VERSION >= 0x020616 \
|
||||
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/syscalls.list glibc-2.13/sysdeps/unix/sysv/linux/syscalls.list
|
||||
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/syscalls.list 2008-08-02 01:29:08.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/syscalls.list 2009-11-13 00:51:04.000000000 +0100
|
||||
@@ -11,7 +11,6 @@
|
||||
epoll_create1 EXTRA epoll_create1 i:i epoll_create1
|
||||
epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl
|
||||
epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait
|
||||
-fdatasync - fdatasync Ci:i fdatasync
|
||||
flock - flock i:ii __flock flock
|
||||
fork - fork i: __libc_fork __fork fork
|
||||
get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
|
21
patches/glibc/ports-2.13/530-alpha-fix-rtld-fPIC.patch
Normal file
21
patches/glibc/ports-2.13/530-alpha-fix-rtld-fPIC.patch
Normal file
@ -0,0 +1,21 @@
|
||||
2009-05-26 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/Makefile (CFLAGS-rtld.c): add $(PIC-ccflag).
|
||||
|
||||
ports/sysdeps/alpha/Makefile | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/alpha/Makefile glibc-2.13/glibc-ports-2.13/sysdeps/alpha/Makefile
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/alpha/Makefile 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/alpha/Makefile 2009-11-13 00:51:13.000000000 +0100
|
||||
@@ -35,7 +35,8 @@
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
# The ld.so startup code cannot use literals until it self-relocates.
|
||||
-CFLAGS-rtld.c = -mbuild-constants
|
||||
+# It uses more than 64k for the small data area.
|
||||
+CFLAGS-rtld.c = -mbuild-constants $(PIC-ccflag)
|
||||
endif
|
||||
|
||||
# Build everything with full IEEE math support, and with dynamic rounding;
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/alpha/Makefile glibc-2.13/ports/sysdeps/alpha/Makefile
|
415
patches/glibc/ports-2.13/560-ppc-atomic.patch
Normal file
415
patches/glibc/ports-2.13/560-ppc-atomic.patch
Normal file
@ -0,0 +1,415 @@
|
||||
sniped from suse
|
||||
|
||||
Index: sysdeps/powerpc/bits/atomic.h
|
||||
===================================================================
|
||||
RCS file: /cvs/glibc/libc/sysdeps/powerpc/bits/atomic.h,v
|
||||
retrieving revision 1.17
|
||||
diff -u -a -p -r1.17 atomic.h
|
||||
|
||||
diff -durN glibc-2.13.orig/sysdeps/powerpc/bits/atomic.h glibc-2.13/sysdeps/powerpc/bits/atomic.h
|
||||
--- glibc-2.13.orig/sysdeps/powerpc/bits/atomic.h 2007-03-26 22:15:28.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/powerpc/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
||||
@@ -85,14 +85,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" cmpw %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -102,14 +102,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" cmpw %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -118,12 +118,12 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
- " stwcx. %3,0,%2\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
+ " stwcx. %2,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
" " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -132,11 +132,11 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
- " stwcx. %3,0,%2\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
+ " stwcx. %2,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -144,12 +144,12 @@
|
||||
#define __arch_atomic_exchange_and_add_32(mem, value) \
|
||||
({ \
|
||||
__typeof (*mem) __val, __tmp; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
||||
- " add %1,%0,%4\n" \
|
||||
- " stwcx. %1,0,%3\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
||||
+ " add %1,%0,%3\n" \
|
||||
+ " stwcx. %1,%y2\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -157,12 +157,12 @@
|
||||
#define __arch_atomic_increment_val_32(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
||||
" addi %0,%0,1\n" \
|
||||
- " stwcx. %0,0,%2\n" \
|
||||
+ " stwcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -170,27 +170,27 @@
|
||||
#define __arch_atomic_decrement_val_32(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
||||
" subi %0,%0,1\n" \
|
||||
- " stwcx. %0,0,%2\n" \
|
||||
+ " stwcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
|
||||
#define __arch_atomic_decrement_if_positive_32(mem) \
|
||||
({ int __val, __tmp; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
||||
" cmpwi 0,%0,0\n" \
|
||||
" addi %1,%0,-1\n" \
|
||||
" ble 2f\n" \
|
||||
- " stwcx. %1,0,%3\n" \
|
||||
+ " stwcx. %1,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
diff -durN glibc-2.13.orig/sysdeps/powerpc/powerpc32/bits/atomic.h glibc-2.13/sysdeps/powerpc/powerpc32/bits/atomic.h
|
||||
--- glibc-2.13.orig/sysdeps/powerpc/powerpc32/bits/atomic.h 2007-03-26 22:15:45.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/powerpc/powerpc32/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
||||
@@ -44,14 +44,14 @@
|
||||
({ \
|
||||
unsigned int __tmp; \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -60,14 +60,14 @@
|
||||
({ \
|
||||
unsigned int __tmp; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
diff -durN glibc-2.13.orig/sysdeps/powerpc/powerpc64/bits/atomic.h glibc-2.13/sysdeps/powerpc/powerpc64/bits/atomic.h
|
||||
--- glibc-2.13.orig/sysdeps/powerpc/powerpc64/bits/atomic.h 2007-03-26 22:16:03.000000000 +0200
|
||||
+++ glibc-2.13/sysdeps/powerpc/powerpc64/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
||||
@@ -44,14 +44,14 @@
|
||||
({ \
|
||||
unsigned int __tmp, __tmp2; \
|
||||
__asm __volatile (" clrldi %1,%1,32\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%1,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %4,0,%2\n" \
|
||||
+ " stwcx. %4,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp), "=r" (__tmp2) \
|
||||
- : "b" (mem), "1" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
||||
+ : "1" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -61,14 +61,14 @@
|
||||
unsigned int __tmp, __tmp2; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
" clrldi %1,%1,32\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%1,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %4,0,%2\n" \
|
||||
+ " stwcx. %4,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp), "=r" (__tmp2) \
|
||||
- : "b" (mem), "1" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
||||
+ : "1" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -82,14 +82,14 @@
|
||||
({ \
|
||||
unsigned long __tmp; \
|
||||
__asm __volatile ( \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -98,14 +98,14 @@
|
||||
({ \
|
||||
unsigned long __tmp; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -115,14 +115,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile ( \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" cmpd %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -132,14 +132,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" cmpd %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -148,12 +148,12 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
- " stdcx. %3,0,%2\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
+ " stdcx. %2,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
" " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -162,11 +162,11 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
- " stdcx. %3,0,%2\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
+ " stdcx. %2,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -174,12 +174,12 @@
|
||||
#define __arch_atomic_exchange_and_add_64(mem, value) \
|
||||
({ \
|
||||
__typeof (*mem) __val, __tmp; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
||||
- " add %1,%0,%4\n" \
|
||||
- " stdcx. %1,0,%3\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
||||
+ " add %1,%0,%3\n" \
|
||||
+ " stdcx. %1,%y2\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -187,12 +187,12 @@
|
||||
#define __arch_atomic_increment_val_64(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
||||
" addi %0,%0,1\n" \
|
||||
- " stdcx. %0,0,%2\n" \
|
||||
+ " stdcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -200,27 +200,27 @@
|
||||
#define __arch_atomic_decrement_val_64(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
||||
" subi %0,%0,1\n" \
|
||||
- " stdcx. %0,0,%2\n" \
|
||||
+ " stdcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
|
||||
#define __arch_atomic_decrement_if_positive_64(mem) \
|
||||
({ int __val, __tmp; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
||||
" cmpdi 0,%0,0\n" \
|
||||
" addi %1,%0,-1\n" \
|
||||
" ble 2f\n" \
|
||||
- " stdcx. %1,0,%3\n" \
|
||||
+ " stdcx. %1,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
@ -0,0 +1,374 @@
|
||||
http://yann.poupet.free.fr/ep93xx/
|
||||
Add support for the Maverick Crunch FPU on Cirrus EP93XX processor series
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/bits/endian.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/bits/endian.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/bits/endian.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/bits/endian.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -12,7 +12,7 @@
|
||||
/* FPA floating point units are always big-endian, irrespective of the
|
||||
CPU endianness. VFP floating point units use the same endianness
|
||||
as the rest of the system. */
|
||||
-#ifdef __VFP_FP__
|
||||
+#if defined __VFP_FP__ || defined __MAVERICK__
|
||||
#define __FLOAT_WORD_ORDER __BYTE_ORDER
|
||||
#else
|
||||
#define __FLOAT_WORD_ORDER __BIG_ENDIAN
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/__longjmp.S glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/__longjmp.S
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/__longjmp.S 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/__longjmp.S 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -30,7 +30,33 @@
|
||||
movs r0, r1 /* get the return value in place */
|
||||
moveq r0, #1 /* can't let setjmp() return zero! */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+ cfldrd mvd4, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd5, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd6, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd7, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd8, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd9, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd10, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd11, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd12, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd13, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd14, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd15, [ip], #8
|
||||
+#else
|
||||
lfmfd f4, 4, [ip] ! /* load the floating point regs */
|
||||
+#endif
|
||||
|
||||
LOADREGS(ia, ip, {v1-v6, sl, fp, sp, pc})
|
||||
END (__longjmp)
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/bits/fenv.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/bits/fenv.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/bits/fenv.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/bits/fenv.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -20,6 +20,45 @@
|
||||
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
|
||||
#endif
|
||||
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+/* Define bits representing exceptions in the FPU status word. */
|
||||
+enum
|
||||
+ {
|
||||
+ FE_INVALID = 1,
|
||||
+#define FE_INVALID FE_INVALID
|
||||
+ FE_OVERFLOW = 4,
|
||||
+#define FE_OVERFLOW FE_OVERFLOW
|
||||
+ FE_UNDERFLOW = 8,
|
||||
+#define FE_UNDERFLOW FE_UNDERFLOW
|
||||
+ FE_INEXACT = 16,
|
||||
+#define FE_INEXACT FE_INEXACT
|
||||
+ };
|
||||
+
|
||||
+/* Amount to shift by to convert an exception to a mask bit. */
|
||||
+#define FE_EXCEPT_SHIFT 5
|
||||
+
|
||||
+/* All supported exceptions. */
|
||||
+#define FE_ALL_EXCEPT \
|
||||
+ (FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
|
||||
+
|
||||
+/* IEEE rounding modes. */
|
||||
+enum
|
||||
+ {
|
||||
+ FE_TONEAREST = 0,
|
||||
+#define FE_TONEAREST FE_TONEAREST
|
||||
+ FE_TOWARDZERO = 0x400,
|
||||
+#define FE_TOWARDZERO FE_TOWARDZERO
|
||||
+ FE_DOWNWARD = 0x800,
|
||||
+#define FE_DOWNWARD FE_DOWNWARD
|
||||
+ FE_UPWARD = 0xc00,
|
||||
+#define FE_UPWARD FE_UPWARD
|
||||
+ };
|
||||
+
|
||||
+#define FE_ROUND_MASK (FE_UPWARD)
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* Define bits representing exceptions in the FPU status word. */
|
||||
enum
|
||||
{
|
||||
@@ -44,6 +83,8 @@
|
||||
modes exist, but you have to encode them in the actual instruction. */
|
||||
#define FE_TONEAREST 0
|
||||
|
||||
+#endif
|
||||
+
|
||||
/* Type representing exception flags. */
|
||||
typedef unsigned long int fexcept_t;
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/bits/setjmp.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/bits/setjmp.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/bits/setjmp.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/bits/setjmp.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -28,7 +28,11 @@
|
||||
#ifndef _ASM
|
||||
/* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not
|
||||
saved. */
|
||||
+#ifdef __MAVERICK__
|
||||
+typedef int __jmp_buf[34];
|
||||
+#else
|
||||
typedef int __jmp_buf[22];
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fegetround.c glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fegetround.c
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fegetround.c 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fegetround.c 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -18,9 +18,21 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
+#include <fpu_control.h>
|
||||
|
||||
int
|
||||
fegetround (void)
|
||||
{
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+ unsigned long temp;
|
||||
+
|
||||
+ _FPU_GETCW (temp);
|
||||
+ return temp & FE_ROUND_MASK;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
return FE_TONEAREST; /* Easy. :-) */
|
||||
+
|
||||
+#endif
|
||||
}
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fesetround.c glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fesetround.c
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fesetround.c 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fesetround.c 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -18,12 +18,28 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
+#include <fpu_control.h>
|
||||
|
||||
int
|
||||
fesetround (int round)
|
||||
{
|
||||
+#if defined(__MAVERICK__)
|
||||
+ unsigned long temp;
|
||||
+
|
||||
+ if (round & ~FE_ROUND_MASK)
|
||||
+ return 1;
|
||||
+
|
||||
+ _FPU_GETCW (temp);
|
||||
+ temp = (temp & ~FE_ROUND_MASK) | round;
|
||||
+ _FPU_SETCW (temp);
|
||||
+ return 0;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* We only support FE_TONEAREST, so there is no need for any work. */
|
||||
return (round == FE_TONEAREST)?0:1;
|
||||
+
|
||||
+#endif
|
||||
}
|
||||
|
||||
libm_hidden_def (fesetround)
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fpu_control.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fpu_control.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/fpu_control.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/fpu_control.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -1,5 +1,6 @@
|
||||
/* FPU control word definitions. ARM version.
|
||||
- Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1996, 1997, 1998, 2000, 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
|
||||
@@ -20,6 +21,79 @@
|
||||
#ifndef _FPU_CONTROL_H
|
||||
#define _FPU_CONTROL_H
|
||||
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+/* DSPSC register: (from EP9312 User's Guide)
|
||||
+ *
|
||||
+ * bits 31..29 - DAID
|
||||
+ * bits 28..26 - HVID
|
||||
+ * bits 25..24 - RSVD
|
||||
+ * bit 23 - ISAT
|
||||
+ * bit 22 - UI
|
||||
+ * bit 21 - INT
|
||||
+ * bit 20 - AEXC
|
||||
+ * bits 19..18 - SAT
|
||||
+ * bits 17..16 - FCC
|
||||
+ * bit 15 - V
|
||||
+ * bit 14 - FWDEN
|
||||
+ * bit 13 - Invalid
|
||||
+ * bit 12 - Denorm
|
||||
+ * bits 11..10 - RM
|
||||
+ * bits 9..5 - IXE, UFE, OFE, RSVD, IOE
|
||||
+ * bits 4..0 - IX, UF, OF, RSVD, IO
|
||||
+ */
|
||||
+
|
||||
+/* masking of interrupts */
|
||||
+#define _FPU_MASK_IM (1 << 5) /* invalid operation */
|
||||
+#define _FPU_MASK_ZM 0 /* divide by zero */
|
||||
+#define _FPU_MASK_OM (1 << 7) /* overflow */
|
||||
+#define _FPU_MASK_UM (1 << 8) /* underflow */
|
||||
+#define _FPU_MASK_PM (1 << 9) /* inexact */
|
||||
+#define _FPU_MASK_DM 0 /* denormalized operation */
|
||||
+
|
||||
+#define _FPU_RESERVED 0xfffff000 /* These bits are reserved. */
|
||||
+
|
||||
+#define _FPU_DEFAULT 0x00b00000 /* Default value. */
|
||||
+#define _FPU_IEEE 0x00b003a0 /* Default + exceptions enabled. */
|
||||
+
|
||||
+/* Type of the control word. */
|
||||
+typedef unsigned int fpu_control_t;
|
||||
+
|
||||
+/* Macros for accessing the hardware control word. */
|
||||
+#define _FPU_GETCW(cw) ({ \
|
||||
+ register int __t1, __t2; \
|
||||
+ \
|
||||
+ __asm__ volatile ( \
|
||||
+ "cfmvr64l %1, mvdx0\n\t" \
|
||||
+ "cfmvr64h %2, mvdx0\n\t" \
|
||||
+ "cfmv32sc mvdx0, dspsc\n\t" \
|
||||
+ "cfmvr64l %0, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %1\n\t" \
|
||||
+ "cfmv64hr mvdx0, %2" \
|
||||
+ : "=r" (cw), "=r" (__t1), "=r" (__t2) \
|
||||
+ ); \
|
||||
+})
|
||||
+
|
||||
+#define _FPU_SETCW(cw) ({ \
|
||||
+ register int __t0, __t1, __t2; \
|
||||
+ \
|
||||
+ __asm__ volatile ( \
|
||||
+ "cfmvr64l %1, mvdx0\n\t" \
|
||||
+ "cfmvr64h %2, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %0\n\t" \
|
||||
+ "cfmvsc32 dspsc, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %1\n\t" \
|
||||
+ "cfmv64hr mvdx0, %2" \
|
||||
+ : "=r" (__t0), "=r" (__t1), "=r" (__t2) \
|
||||
+ : "0" (cw) \
|
||||
+ ); \
|
||||
+})
|
||||
+
|
||||
+/* Default control word set at startup. */
|
||||
+extern fpu_control_t __fpu_control;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* We have a slight terminology confusion here. On the ARM, the register
|
||||
* we're interested in is actually the FPU status word - the FPU control
|
||||
* word is something different (which is implementation-defined and only
|
||||
@@ -99,4 +173,6 @@
|
||||
/* Default control word set at startup. */
|
||||
extern fpu_control_t __fpu_control;
|
||||
|
||||
+#endif
|
||||
+
|
||||
#endif /* _FPU_CONTROL_H */
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/jmpbuf-offsets.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/jmpbuf-offsets.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/jmpbuf-offsets.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/jmpbuf-offsets.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -17,4 +17,8 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+#define __JMP_BUF_SP 32
|
||||
+#else
|
||||
#define __JMP_BUF_SP 20
|
||||
+#endif
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/setjmp.S glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/setjmp.S
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/fpu/setjmp.S 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/fpu/setjmp.S 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -24,11 +24,41 @@
|
||||
|
||||
ENTRY (__sigsetjmp)
|
||||
/* Save registers */
|
||||
+#ifdef __MAVERICK__
|
||||
+ cfstrd mvd4, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd5, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd6, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd7, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd8, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd9, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd10, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd11, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd12, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd13, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd14, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd15, [r0], #8
|
||||
+#else
|
||||
sfmea f4, 4, [r0]!
|
||||
+#endif
|
||||
stmia r0, {v1-v6, sl, fp, sp, lr}
|
||||
|
||||
/* Restore pointer to jmp_buf */
|
||||
+#ifdef __MAVERICK__
|
||||
+ sub r0, r0, #96
|
||||
+#else
|
||||
sub r0, r0, #48
|
||||
+#endif
|
||||
|
||||
/* Make a tail call to __sigjmp_save; it takes the same args. */
|
||||
B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/gccframe.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/gccframe.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/gccframe.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/gccframe.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -17,6 +17,10 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+#define FIRST_PSEUDO_REGISTER 43
|
||||
+#else
|
||||
#define FIRST_PSEUDO_REGISTER 27
|
||||
+#endif
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/gmp-mparam.h glibc-2.13/glibc-ports-2.13/sysdeps/arm/gmp-mparam.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/arm/gmp-mparam.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/arm/gmp-mparam.h 2009-11-13 00:51:22.000000000 +0100
|
||||
@@ -29,7 +29,7 @@
|
||||
#if defined(__ARMEB__)
|
||||
# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
# define IEEE_DOUBLE_BIG_ENDIAN 1
|
||||
-#elif defined(__VFP_FP__)
|
||||
+#elif defined(__VFP_FP__) || defined(__MAVERICK__)
|
||||
# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
# define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
#else
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/bits/endian.h glibc-2.13/ports/sysdeps/arm/bits/endian.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/__longjmp.S glibc-2.13/ports/sysdeps/arm/fpu/__longjmp.S
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/bits/fenv.h glibc-2.13/ports/sysdeps/arm/fpu/bits/fenv.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/bits/setjmp.h glibc-2.13/ports/sysdeps/arm/fpu/bits/setjmp.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/fegetround.c glibc-2.13/ports/sysdeps/arm/fpu/fegetround.c
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/fesetround.c glibc-2.13/ports/sysdeps/arm/fpu/fesetround.c
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/fpu_control.h glibc-2.13/ports/sysdeps/arm/fpu/fpu_control.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/jmpbuf-offsets.h glibc-2.13/ports/sysdeps/arm/fpu/jmpbuf-offsets.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/fpu/setjmp.S glibc-2.13/ports/sysdeps/arm/fpu/setjmp.S
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/gccframe.h glibc-2.13/ports/sysdeps/arm/gccframe.h
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/arm/gmp-mparam.h glibc-2.13/ports/sysdeps/arm/gmp-mparam.h
|
23
patches/glibc/ports-2.13/580-nptl-lowlevellock.patch
Normal file
23
patches/glibc/ports-2.13/580-nptl-lowlevellock.patch
Normal file
@ -0,0 +1,23 @@
|
||||
fix build error on arm like on hppa:
|
||||
|
||||
arm-unknown-linux-gnu-gcc ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -fno-strict-aliasing -g -pipe -Wstrict-prototypes -fPIC -I../include -I/var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl -I/var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/nptl -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../ports/sysdeps/arm/fpu -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I../ports -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/arm-unknown-linux-gnu/4.3.2/include -isystem /usr/lib/gcc/arm-unknown-linux-gnu/4.3.2/include-fixed -isystem /usr/arm-unknown-linux-gnu/usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DSHARED -o /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os -MD -MP -MF /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os.dt -MT /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os -DNOT_IN_libc=1 -DIS_IN_rtld=1
|
||||
In file included from ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c:21:
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c: In function '__lll_lock_wait_private':
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: warning: implicit declaration of function 'THREAD_GETMEM'
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: 'THREAD_SELF' undeclared (first use in this function)
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: (Each undeclared identifier is reported only once
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: for each function it appears in.)
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: 'header' undeclared (first use in this function)
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-11-13 00:51:23.000000000 +0100
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <atomic.h>
|
||||
#include <sysdep.h>
|
||||
#include <kernel-features.h>
|
||||
+#include <tls.h> /* Need THREAD_*, and header.*. */
|
||||
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h glibc-2.13/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
|
15
patches/glibc/ports-2.13/610-fpu-cw-mips.patch
Normal file
15
patches/glibc/ports-2.13/610-fpu-cw-mips.patch
Normal file
@ -0,0 +1,15 @@
|
||||
http://sourceware.org/ml/libc-alpha/2002-10/msg00392.html
|
||||
|
||||
diff -durN glibc-2.13.orig/glibc-ports-2.13/sysdeps/mips/fpu_control.h glibc-2.13/glibc-ports-2.13/sysdeps/mips/fpu_control.h
|
||||
--- glibc-2.13.orig/glibc-ports-2.13/sysdeps/mips/fpu_control.h 2009-05-16 10:36:20.000000000 +0200
|
||||
+++ glibc-2.13/glibc-ports-2.13/sysdeps/mips/fpu_control.h 2009-11-13 00:51:31.000000000 +0100
|
||||
@@ -86,7 +86,7 @@
|
||||
#define _FPU_RC_UP 0x2
|
||||
#define _FPU_RC_DOWN 0x3
|
||||
|
||||
-#define _FPU_RESERVED 0xfe3c0000 /* Reserved bits in cw */
|
||||
+#define _FPU_RESERVED 0xfebc0000 /* Reserved bits in cw */
|
||||
|
||||
|
||||
/* The fdlibm code requires strict IEEE double precision arithmetic,
|
||||
diff -durN glibc-2.13.orig/ports/sysdeps/mips/fpu_control.h glibc-2.13/ports/sysdeps/mips/fpu_control.h
|
16
patches/glibc/ports-2.13/630-mips_shn_undef-hack.patch
Normal file
16
patches/glibc/ports-2.13/630-mips_shn_undef-hack.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff -durN glibc-2.13.orig/elf/dl-lookup.c glibc-2.13/elf/dl-lookup.c
|
||||
--- glibc-2.13.orig/elf/dl-lookup.c 2009-03-30 23:14:32.000000000 +0200
|
||||
+++ glibc-2.13/elf/dl-lookup.c 2009-11-13 00:51:36.000000000 +0100
|
||||
@@ -301,6 +301,12 @@
|
||||
/* FALLTHROUGH */
|
||||
case STB_GLOBAL:
|
||||
success:
|
||||
+#ifdef __mips__
|
||||
+ /* HACK: MIPS marks its lazy evaluation stubs with SHN_UNDEF
|
||||
+ symbols, we skip them. */
|
||||
+ if (sym->st_shndx == SHN_UNDEF)
|
||||
+ break;
|
||||
+#endif
|
||||
/* Global definition. Just what we need. */
|
||||
result->s = sym;
|
||||
result->m = (struct link_map *) map;
|
12
patches/glibc/ports-2.13/640-alpha-atfcts.patch
Normal file
12
patches/glibc/ports-2.13/640-alpha-atfcts.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h 2010-07-27 14:34:39.000000000 +0300
|
||||
+++ glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h.new 2011-03-10 18:54:37.686795979 +0200
|
||||
@@ -437,7 +437,8 @@
|
||||
the code. On PPC they were introduced in 2.6.17-rc1,
|
||||
on SH in 2.6.19-rc1. */
|
||||
#if __LINUX_KERNEL_VERSION >= 0x020611 \
|
||||
- && (!defined __sh__ || __LINUX_KERNEL_VERSION >= 0x020613)
|
||||
+ && (!defined __sh__ || __LINUX_KERNEL_VERSION >= 0x020613) \
|
||||
+ && (!defined __alpha__)
|
||||
# define __ASSUME_ATFCTS 1
|
||||
#endif
|
||||
|
12
patches/glibc/ports-2.13/650-syslog.patch
Normal file
12
patches/glibc/ports-2.13/650-syslog.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -durN glibc-cvs-2.9.orig/misc/syslog.c glibc-cvs-2.9/misc/syslog.c
|
||||
--- glibc-cvs-2.9.orig/misc/syslog.c 2009-06-01 10:16:50.000000000 +0200
|
||||
+++ glibc-cvs-2.9/misc/syslog.c 2009-06-01 10:17:20.000000000 +0200
|
||||
@@ -152,7 +152,7 @@
|
||||
#define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
|
||||
/* Check for invalid bits. */
|
||||
if (pri & ~(LOG_PRIMASK|LOG_FACMASK)) {
|
||||
- syslog(INTERNALLOG,
|
||||
+ __syslog(INTERNALLOG,
|
||||
"syslog: unknown facility/priority: %x", pri);
|
||||
pri &= LOG_PRIMASK|LOG_FACMASK;
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
diff -dur glibc-cvs-2.9.orig/debug/readlink_chk.c glibc-cvs-2.9/debug/readlink_chk.c
|
||||
--- glibc-cvs-2.9.orig/debug/readlink_chk.c 2005-03-01 01:41:15.000000000 +0100
|
||||
+++ glibc-cvs-2.9/debug/readlink_chk.c 2009-06-01 10:59:37.000000000 +0200
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
ssize_t
|
||||
-__readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
|
||||
+__readlink_chk (const char *path, char *buf, size_t len, size_t buflen)
|
||||
{
|
||||
if (len > buflen)
|
||||
__chk_fail ();
|
||||
diff -dur glibc-cvs-2.9.orig/debug/readlinkat_chk.c glibc-cvs-2.9/debug/readlinkat_chk.c
|
||||
--- glibc-cvs-2.9.orig/debug/readlinkat_chk.c 2006-04-24 18:56:12.000000000 +0200
|
||||
+++ glibc-cvs-2.9/debug/readlinkat_chk.c 2009-06-01 11:07:26.000000000 +0200
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
|
||||
ssize_t
|
||||
-__readlinkat_chk (int fd, const char *path, void *buf, size_t len,
|
||||
+__readlinkat_chk (int fd, const char *path, char *buf, size_t len,
|
||||
size_t buflen)
|
||||
{
|
||||
if (len > buflen)
|
Loading…
x
Reference in New Issue
Block a user