[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: