Author: aurel32
Date: 2014-05-07 23:02:20 +0000 (Wed, 07 May 2014)
New Revision: 6055

Added:
   glibc-package/trunk/debian/patches/hppa/local-atomic.diff
   glibc-package/trunk/debian/patches/hppa/local-elf-make-cflags.diff
   glibc-package/trunk/debian/patches/hppa/local-fanotify_mark-5i.diff
   glibc-package/trunk/debian/patches/hppa/local-fcntl-osync.diff
   glibc-package/trunk/debian/patches/hppa/local-fpu.diff
   glibc-package/trunk/debian/patches/hppa/local-pthread_spin_unlock.diff
   glibc-package/trunk/debian/patches/hppa/local-setjmp-namespace.diff
   glibc-package/trunk/debian/patches/hppa/local-shmlba.diff
Removed:
   glibc-package/trunk/debian/patches/hppa/local-longjmp-chk.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
patches/hppa/*.diff: apply changes from John David Anglin
<[email protected]>.  Closes: #725508.

Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog        2014-05-07 19:23:08 UTC (rev 
6054)
+++ glibc-package/trunk/debian/changelog        2014-05-07 23:02:20 UTC (rev 
6055)
@@ -38,6 +38,8 @@
   * local/manpages/sprof.1, local/manpages/rpcgen.1: apply typographical
     fixes from Bjarni Ingi Gislason <[email protected]>.  Closes: #726849,
     #740973.
+  * patches/hppa/*.diff: apply changes from John David Anglin
+    <[email protected]>.  Closes: #725508.
 
  -- Adam Conrad <[email protected]>  Sun, 27 Apr 2014 23:15:13 -0600
 

Added: glibc-package/trunk/debian/patches/hppa/local-atomic.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-atomic.diff                   
        (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-atomic.diff   2014-05-07 
23:02:20 UTC (rev 6055)
@@ -0,0 +1,80 @@
+--- eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h.save  
2014-02-17 20:59:55.783974838 -0500
++++ eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h       
2014-02-18 18:40:53.186081865 -0500
+@@ -61,42 +61,46 @@
+ 
+ #if __ASSUME_LWS_CAS
+ /* The only basic operation needed is compare and exchange.  */
+-# define atomic_compare_and_exchange_val_acq(mem, newval, oldval)     \
+-  ({                                                                  \
+-     volatile int lws_errno;                                          \
+-     volatile int lws_ret;                                            \
+-     asm volatile(                                                    \
+-      "0:                                     \n\t"                   \
+-      "copy   %2, %%r26                       \n\t"                   \
+-      "copy   %3, %%r25                       \n\t"                   \
+-      "copy   %4, %%r24                       \n\t"                   \
+-      "ble    " _LWS "(%%sr2, %%r0)           \n\t"                   \
+-      "ldi    " _LWS_CAS ", %%r20             \n\t"                   \
+-      "ldi    " _ASM_EAGAIN ", %%r24          \n\t"                   \
+-      "cmpb,=,n %%r24, %%r21, 0b              \n\t"                   \
+-      "nop                                    \n\t"                   \
+-      "ldi    " _ASM_EDEADLOCK ", %%r25       \n\t"                   \
+-      "cmpb,=,n %%r25, %%r21, 0b              \n\t"                   \
+-      "nop                                    \n\t"                   \
+-      "stw    %%r28, %0                       \n\t"                   \
+-      "stw    %%r21, %1                       \n\t"                   \
+-      : "=m" (lws_ret), "=m" (lws_errno)                              \
+-        : "r" (mem), "r" (oldval), "r" (newval)                               
\
+-      : _LWS_CLOBBER                                                  \
+-     );                                                                       
\
+-                                                                      \
+-     if(lws_errno == -EFAULT || lws_errno == -ENOSYS)                 \
+-      ABORT_INSTRUCTION;                                              \
+-                                                                      \
+-     lws_ret;                                                         \
+-   })
++static int __attribute__((noinline))
++__atomic_compare_and_exchange_val_acq (int mem, int newval, int oldval)
++{
++  volatile int lws_errno;
++  volatile int lws_ret;
++  asm volatile(
++      "0:                                     \n\t"
++      "copy   %2, %%r26                       \n\t"
++      "copy   %3, %%r25                       \n\t"
++      "copy   %4, %%r24                       \n\t"
++      "ble    " _LWS "(%%sr2, %%r0)           \n\t"
++      "ldi    " _LWS_CAS ", %%r20             \n\t"
++      "ldi    " _ASM_EAGAIN ", %%r24          \n\t"
++      "cmpb,=,n %%r24, %%r21, 0b              \n\t"
++      "nop                                    \n\t"
++      "ldi    " _ASM_EDEADLOCK ", %%r25       \n\t"
++      "cmpb,=,n %%r25, %%r21, 0b              \n\t"
++      "nop                                    \n\t"
++      "stw    %%r28, %0                       \n\t"
++      "stw    %%r21, %1                       \n\t"
++      : "=m" (lws_ret), "=m" (lws_errno)
++        : "r" (mem), "r" (oldval), "r" (newval)
++      : _LWS_CLOBBER
++   );
++   
++  if (lws_errno == -EFAULT || lws_errno == -ENOSYS)
++    ABORT_INSTRUCTION;
++
++  return lws_ret;
++}
++# define atomic_compare_and_exchange_val_acq(mem, newval, oldval)     \
++   ((__typeof__(oldval))                                              \
++    __atomic_compare_and_exchange_val_acq ((int)mem, (int)newval, 
(int)oldval))
+ 
+ # define atomic_compare_and_exchange_bool_acq(mem, newval, oldval)    \
+   ({                                                                  \
+-     int ret;                                                         \
++     __typeof__(oldval) ret;                                          \
+      ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval);  \
+      /* Return 1 if it was already acquired.  */                      \
+-     (ret != (int)oldval);                                            \
++     (ret != oldval);                                         \
+    })
+ #else
+ # error __ASSUME_LWS_CAS is required to build glibc.

Added: glibc-package/trunk/debian/patches/hppa/local-elf-make-cflags.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-elf-make-cflags.diff          
                (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-elf-make-cflags.diff  
2014-05-07 23:02:20 UTC (rev 6055)
@@ -0,0 +1,13 @@
+Index: eglibc-2.18/elf/Makefile
+===================================================================
+--- eglibc-2.18.orig/elf/Makefile      2014-02-25 20:47:20.859469989 -0500
++++ eglibc-2.18/elf/Makefile   2014-02-25 20:47:20.769469646 -0500
+@@ -424,7 +424,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)

Added: glibc-package/trunk/debian/patches/hppa/local-fanotify_mark-5i.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-fanotify_mark-5i.diff         
                (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-fanotify_mark-5i.diff 
2014-05-07 23:02:20 UTC (rev 6055)
@@ -0,0 +1,9 @@
+Index: eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list  
2014-02-24 20:50:56.481899712 -0500
++++ eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list       
2014-02-24 20:50:56.391899294 -0500
+@@ -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

Added: glibc-package/trunk/debian/patches/hppa/local-fcntl-osync.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-fcntl-osync.diff              
                (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-fcntl-osync.diff      
2014-05-07 23:02:20 UTC (rev 6055)
@@ -0,0 +1,13 @@
+Index: eglibc-2.17/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h
+===================================================================
+--- eglibc-2.17.orig/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h   
2012-11-06 12:31:45.000000000 -0500
++++ eglibc-2.17/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h        
2013-11-02 17:50:08.839898488 -0400
+@@ -27,7 +27,7 @@
+ #define O_NONBLOCK    00200004 /* HPUX has separate NDELAY & NONBLOCK */
+ #define __O_DSYNC     01000000
+ #define __O_RSYNC     02000000 /* HPUX only */
+-#define __O_SYNC      01000000
++#define __O_SYNC      00100000
+ #define O_SYNC                (__O_SYNC|__O_DSYNC)
+ 
+ #define O_BLKSEEK     00000100 /* HPUX only */

Added: glibc-package/trunk/debian/patches/hppa/local-fpu.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-fpu.diff                      
        (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-fpu.diff      2014-05-07 
23:02:20 UTC (rev 6055)
@@ -0,0 +1,46 @@
+Index: eglibc-2.18/ports/sysdeps/hppa/fpu/feholdexcpt.c
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/hppa/fpu/feholdexcpt.c      2013-06-15 
13:37:04.000000000 -0400
++++ eglibc-2.18/ports/sysdeps/hppa/fpu/feholdexcpt.c   2014-04-09 
21:01:32.492451011 -0400
+@@ -29,8 +29,8 @@
+   /* Store the environment.  */
+   bufptr = clear.buf;
+   __asm__ (
+-         "fstd,ma %%fr0,8(%1)\n"
+-         : "=m" (clear), "+r" (bufptr) : : "%r0");
++         "fstd %%fr0,0(%1)\n"
++         : "=m" (clear) : "r" (bufptr) : "%r0");
+   memcpy (envp, &clear.env, sizeof (fenv_t));
+ 
+   /* Clear exception queues */
+@@ -44,7 +44,7 @@
+      Thus we start bufptr at the end and work backwards */
+   bufptr = (unsigned long long *)((unsigned int)(clear.buf) + sizeof(unsigned 
int)*4);
+   __asm__ (
+-         "fldd,mb -8(%0),%%fr0\n"
++         "fldd 0(%0),%%fr0\n"
+          : : "r" (bufptr), "m" (clear) : "%r0");
+ 
+   return 0;
+Index: eglibc-2.18/ports/sysdeps/hppa/fpu/fesetenv.c
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/hppa/fpu/fesetenv.c 2013-06-15 
13:37:04.000000000 -0400
++++ eglibc-2.18/ports/sysdeps/hppa/fpu/fesetenv.c      2014-04-09 
20:59:45.221386729 -0400
+@@ -33,7 +33,7 @@
+      we want to use from the environment specified by the parameter.  */
+   bufptr = temp.buf;
+   __asm__ (
+-         "fstd,ma %%fr0,8(%1)\n"
++         "fstd %%fr0,0(%1)\n"
+          : "=m" (temp) : "r" (bufptr) : "%r0");
+ 
+   temp.env.__status_word &= ~(FE_ALL_EXCEPT
+@@ -54,7 +54,7 @@
+      we take advantage of that to load in reverse order so fr0
+      is loaded last and T-Bit is enabled. */
+   __asm__ (
+-         "fldd,mb -8(%1),%%fr0\n"
++         "fldd 0(%1),%%fr0\n"
+          : : "m" (temp), "r" (bufptr) : "%r0" );
+ 
+   /* Success.  */

Deleted: glibc-package/trunk/debian/patches/hppa/local-longjmp-chk.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-longjmp-chk.diff      
2014-05-07 19:23:08 UTC (rev 6054)
+++ glibc-package/trunk/debian/patches/hppa/local-longjmp-chk.diff      
2014-05-07 23:02:20 UTC (rev 6055)
@@ -1,14 +0,0 @@
----
- ports/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.S |    7 +++++++
- 1 file changed, 7 insertions(+)
-
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.S
-@@ -0,0 +1,7 @@
-+/* Jump to the position specified by ENV, causing the
-+   setjmp call there to return VAL, or 1 if VAL is 0.
-+   void __longjmp (__jmp_buf env, int val).  */
-+      
-+#warning longjmp_chk unimplemented
-+#define __longjmp ____longjmp_chk
-+#include<__longjmp.S>

Added: glibc-package/trunk/debian/patches/hppa/local-pthread_spin_unlock.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-pthread_spin_unlock.diff      
                        (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-pthread_spin_unlock.diff      
2014-05-07 23:02:20 UTC (rev 6055)
@@ -0,0 +1,36 @@
+Index: eglibc-2.18/ports/sysdeps/hppa/nptl/pthread_spin_init.c
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/hppa/nptl/pthread_spin_init.c       
2013-06-15 13:37:04.000000000 -0400
++++ eglibc-2.18/ports/sysdeps/hppa/nptl/pthread_spin_init.c    2014-05-03 
17:52:31.677662598 -0400
+@@ -20,9 +20,9 @@
+ int
+ pthread_spin_init (pthread_spinlock_t *lock, int pshared)
+ {
+-  int tmp = 0;
+-  /* This should be a memory barrier to newer compilers */
+-  __asm__ __volatile__ ("stw,ma %1,0(%0)"
+-                        : : "r" (lock), "r" (tmp) : "memory");
++  /* The LWS-CAS operation on hppa is a synthetic atomic operation
++     that doesn't provide the type of coherency that we need. Therefore
++     we force that coherency by using LWS-CAS again.  */
++  atomic_exchange_rel (lock, 0);
+   return 0;
+ }
+Index: eglibc-2.18/ports/sysdeps/hppa/nptl/pthread_spin_unlock.c
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/hppa/nptl/pthread_spin_unlock.c     
2013-06-15 13:37:04.000000000 -0400
++++ eglibc-2.18/ports/sysdeps/hppa/nptl/pthread_spin_unlock.c  2014-05-03 
17:54:51.829030840 -0400
+@@ -20,9 +20,9 @@
+ int
+ pthread_spin_unlock (pthread_spinlock_t *lock)
+ {
+-  int tmp = 0;
+-  /* This should be a memory barrier to newer compilers */
+-  __asm__ __volatile__ ("stw,ma %1,0(%0)"
+-                        : : "r" (lock), "r" (tmp) : "memory");
++  /* The LWS-CAS operation on hppa is a synthetic atomic operation
++     that doesn't provide the type of coherency that we need. Therefore
++     we force that coherency by using LWS-CAS again.  */
++  atomic_exchange_rel (lock, 0);
+   return 0;
+ }

Added: glibc-package/trunk/debian/patches/hppa/local-setjmp-namespace.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-setjmp-namespace.diff         
                (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-setjmp-namespace.diff 
2014-05-07 23:02:20 UTC (rev 6055)
@@ -0,0 +1,13 @@
+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
+       {

Added: glibc-package/trunk/debian/patches/hppa/local-shmlba.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-shmlba.diff                   
        (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-shmlba.diff   2014-05-07 
23:02:20 UTC (rev 6055)
@@ -0,0 +1,13 @@
+Index: eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/bits/shm.h
+===================================================================
+--- eglibc-2.18.orig/ports/sysdeps/unix/sysv/linux/hppa/bits/shm.h     
2013-01-09 19:28:48.000000000 -0500
++++ eglibc-2.18/ports/sysdeps/unix/sysv/linux/hppa/bits/shm.h  2014-04-09 
21:08:06.516202583 -0400
+@@ -36,7 +36,7 @@
+ #define SHM_UNLOCK    12              /* unlock segment (root only) */
+ 
+ /* Segment low boundary address multiple.  */
+-#define SHMLBA 0x00400000             /* address needs to be 4 Mb aligned */
++#define SHMLBA                (__getpagesize ())
+ 
+ /* Type to count number of attaches.  */
+ typedef unsigned long int shmatt_t;

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series   2014-05-07 19:23:08 UTC (rev 
6054)
+++ glibc-package/trunk/debian/patches/series   2014-05-07 23:02:20 UTC (rev 
6055)
@@ -73,10 +73,16 @@
 hppa/submitted-fadvise64_64.diff
 hppa/submitted-nptl-carlos.diff
 hppa/local-stack-grows-up.diff
-hppa/local-longjmp-chk.diff
 hppa/local-lowlevellock.diff
 hppa/local-EAGAIN.diff
 hppa/cvs-hppa-DL_CALL_DT_INIT_FINI.diff
+hppa/local-elf-make-cflags.diff
+hppa/local-setjmp-namespace.diff
+hppa/local-fcntl-osync.diff
+hppa/local-atomic.diff
+hppa/local-fpu.diff
+hppa/local-shmlba.diff
+hppa/local-pthread_spin_unlock.diff
 
 hurd-i386/cvs-tcbhead_t.diff
 hurd-i386/local-enable-ldconfig.diff


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: https://lists.debian.org/[email protected]

Reply via email to