Bug#725508: eglibc: [hppa] Patch set for 2.13 build
Source: eglibc
Version: 2.17-93
Severity: important
Tags: patch
Attached are the set of patches that I use to build eglibc for the hppa
architecture. They have been under test for a couple months.
The attached file ORDER.txt describes the installation order.
The current hppa/local-longjmp-chk.diff patch needs to be removed first.
Problem is fixed in 2.17 ports.
The hppa/submitted-fpu-control.diff patch fixes a problem in fpu_control.h.
Patch received from Guy Martin and Carlos O'Donell.
The hppa/local-volatile-fdesc.diff patch fixes an optimization
problem building with GCC versions after 4.4. The newer compilers
optimize away the code setting fptr[0] and fptr[1] because they
don't understand hppa function pointer encoding.
The hppa/local-elf-make-cflags.diff patch fixes a CFLAGS issue compiling
rtld.c on hppa. It's from Carlos.
The hppa/local-setjmp-namespace.diff patch fixes a warning about an
anonymous union. It caused several fails in testsuite.
The hppa/local-fanotify_mark-5i.diff patch fixes the fanotify_mark syscall
interface. It's from Jeroen Roovers.
Please test and install.
Thanks,
Dave Anglin
-- System Information:
Debian Release: 7.0
APT prefers unreleased
APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: hppa (parisc64)
Kernel: Linux 3.12.0-rc3+ (SMP w/4 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
0) hppa/local-longjmp-chk.diff -- delete
1) hppa/submitted-fpu-control.diff
2) hppa/local-volatile-fdesc.diff
3) hppa/local-elf-make-cflags.diff
4) hppa/local-setjmp-namespace.diff
5) hppa/local-fanotify_mark-5i.diff
Index: eglibc-2.17/ports/ChangeLog.hppa
===================================================================
--- eglibc-2.17.orig/ports/ChangeLog.hppa 2012-12-02 16:11:45.000000000 -0500
+++ eglibc-2.17/ports/ChangeLog.hppa 2013-05-20 14:41:32.000000000 -0400
@@ -1,3 +1,10 @@
+2013-05-15 Guy Martin <gmsoft@tuxicoman.be>
+ Carlos O'Donell <carlos@redhat.com>
+
+ [BZ# 15000]
+ * ports/sysdeps/hppa/fpu/fpu_control.h (_FPU_GETCW): Set cw.
+ (_FPU_SETCW): Pass address to fldd.
+
2012-11-29 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/bits/socket.h: Delete file.
Index: eglibc-2.17/ports/sysdeps/hppa/fpu/fpu_control.h
===================================================================
--- eglibc-2.17.orig/ports/sysdeps/hppa/fpu/fpu_control.h 2012-12-02 16:11:45.000000000 -0500
+++ eglibc-2.17/ports/sysdeps/hppa/fpu/fpu_control.h 2013-05-20 14:50:06.000000000 -0400
@@ -49,7 +49,7 @@
__asm__ ("fstd %%fr0,0(%1)\n\t" \
"fldd 0(%1),%%fr0\n\t" \
: "=m" (__fullfp.__fpreg) : "r" (&__fullfp.__fpreg) : "%r0"); \
- __fullfp.__halfreg[0]; \
+ cw = __fullfp.__halfreg[0]; \
})
#define _FPU_SETCW(cw) \
@@ -57,7 +57,7 @@
union { unsigned long long __fpreg; unsigned int __halfreg[2]; } __fullfp; \
__fullfp.__halfreg[0] = cw; \
__asm__ ("fldd 0(%1),%%fr0\n\t" \
- : : "m" (__fullfp.__fpreg), "r" (__fullfp.__fpreg) : "%r0" ); \
+ : : "m" (__fullfp.__fpreg), "r" (&__fullfp.__fpreg) : "%r0" ); \
})
/* Default control word set at startup. */
Index: eglibc-2.17/ports/ChangeLog.hppa
===================================================================
--- eglibc-2.17.orig/ports/ChangeLog.hppa 2013-06-27 21:26:29.000000000 -0400
+++ eglibc-2.17/ports/ChangeLog.hppa 2013-07-01 12:54:24.000000000 -0400
@@ -1,3 +1,9 @@
+2013-07-01 John David Anglin <dave.anglin@bell.net>
+
+ * ports/sysdeps/hppa/dl-lookupcfg.h (DL_AUTO_FUNCTION_ADDRESS): Make
+ function descriptor volatile.
+ (DL_STATIC_FUNCTION_ADDRESS): Likewise.
+
2013-05-15 Guy Martin <gmsoft@tuxicoman.be>
Carlos O'Donell <carlos@redhat.com>
Index: eglibc-2.17/ports/sysdeps/hppa/dl-lookupcfg.h
===================================================================
--- eglibc-2.17.orig/ports/sysdeps/hppa/dl-lookupcfg.h 2013-07-01 12:44:06.000000000 -0400
+++ eglibc-2.17/ports/sysdeps/hppa/dl-lookupcfg.h 2013-07-01 12:54:02.000000000 -0400
@@ -40,7 +40,7 @@
#define DL_AUTO_FUNCTION_ADDRESS(map, addr) \
({ \
- unsigned int fptr[2]; \
+ volatile unsigned int fptr[2]; \
fptr[0] = (unsigned int) (addr); \
fptr[1] = (map)->l_info[DT_PLTGOT]->d_un.d_ptr; \
/* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */ \
@@ -49,7 +49,7 @@
#define DL_STATIC_FUNCTION_ADDRESS(map, addr) \
({ \
- static unsigned int fptr[2]; \
+ static volatile unsigned int fptr[2]; \
fptr[0] = (unsigned int) (addr); \
fptr[1] = (map)->l_info[DT_PLTGOT]->d_un.d_ptr; \
/* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */ \
Index: eglibc-2.17/elf/Makefile
===================================================================
--- eglibc-2.17.orig/elf/Makefile 2013-07-07 16:32:49.000000000 -0400
+++ eglibc-2.17/elf/Makefile 2013-07-07 16:34:44.000000000 -0400
@@ -431,7 +431,7 @@
-D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
CFLAGS-cache.c = $(SYSCONF-FLAGS)
-CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+CFLAGS-rtld.c += $(SYSCONF-FLAGS)
CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
-DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
Index: eglibc-2.17/ports/ChangeLog.hppa
===================================================================
--- eglibc-2.17.orig/ports/ChangeLog.hppa 2013-07-07 16:32:49.000000000 -0400
+++ eglibc-2.17/ports/ChangeLog.hppa 2013-07-07 16:34:06.000000000 -0400
@@ -1,3 +1,7 @@
+2013-07-07 Carlos O'Donell <carlos@systemhalted.org>
+
+ * elf/Makefile (CFLAGS-rtld.c): Append SYSCONF-FLAGS.
+
2013-07-01 John David Anglin <dave.anglin@bell.net>
* ports/sysdeps/hppa/dl-lookupcfg.h (DL_AUTO_FUNCTION_ADDRESS): Make
Index: eglibc-2.17/ports/ChangeLog.hppa
===================================================================
--- eglibc-2.17.orig/ports/ChangeLog.hppa 2013-07-07 16:34:06.000000000 -0400
+++ eglibc-2.17/ports/ChangeLog.hppa 2013-07-07 16:39:09.000000000 -0400
@@ -1,3 +1,7 @@
+2013-07-07 John David Anglin <dave.anglin@bell.net>
+
+ * ports/sysdeps/hppa/bits/setjmp.h: Name anonymous union.
+
2013-07-07 Carlos O'Donell <carlos@systemhalted.org>
* elf/Makefile (CFLAGS-rtld.c): Append SYSCONF-FLAGS.
Index: eglibc-2.17/ports/sysdeps/hppa/bits/setjmp.h
===================================================================
--- eglibc-2.17.orig/ports/sysdeps/hppa/bits/setjmp.h 2013-07-07 16:03:20.000000000 -0400
+++ eglibc-2.17/ports/sysdeps/hppa/bits/setjmp.h 2013-07-07 16:37:39.000000000 -0400
@@ -38,7 +38,7 @@
* 10 x 64-bit fprs in this order:
- fr12-fr21 (callee saves)
Note: We have 8 bytes of free space for future uses. */
-typedef union
+typedef union __jmp_buf_internal
{
struct __jmp_buf_internal_tag
{
Index: eglibc-2.17/ports/ChangeLog.hppa
===================================================================
--- eglibc-2.17.orig/ports/ChangeLog.hppa 2013-09-29 18:16:36.586291866 -0400
+++ eglibc-2.17/ports/ChangeLog.hppa 2013-09-29 18:30:16.462096607 -0400
@@ -1,3 +1,8 @@
+2013-08-08 Jeroen Roovers <jer@gentoo.org>
+
+ * ports/sysdeps/unix/sysv/linux/hppa/syscalls.list: Add fanotify_mark
+ entry with 5 i's.
+
2013-07-07 John David Anglin <dave.anglin@bell.net>
* ports/sysdeps/hppa/bits/setjmp.h: Name anonymous union.
Index: eglibc-2.17/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
===================================================================
--- eglibc-2.17.orig/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list 2012-09-25 10:42:18.000000000 -0400
+++ eglibc-2.17/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list 2013-09-29 18:24:04.309604407 -0400
@@ -36,3 +36,4 @@
setrlimit - setrlimit i:ip __setrlimit setrlimit
getrlimit - getrlimit i:ip __getrlimit getrlimit
prlimit64 EXTRA prlimit64 i:iipp __prlimit64 prlimit64@@GLIBC_2.17
+fanotify_mark EXTRA fanotify_mark i:iiiiis __fanotify_mark fanotify_mark@@GLIBC_2.17
Reply to: