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 <gms...@tuxicoman.be> + Carlos O'Donell <car...@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 <car...@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.ang...@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 <gms...@tuxicoman.be> Carlos O'Donell <car...@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 <car...@systemhalted.org> + + * elf/Makefile (CFLAGS-rtld.c): Append SYSCONF-FLAGS. + 2013-07-01 John David Anglin <dave.ang...@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.ang...@bell.net> + + * ports/sysdeps/hppa/bits/setjmp.h: Name anonymous union. + 2013-07-07 Carlos O'Donell <car...@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 <j...@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.ang...@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