]> sourceware.org Git - glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 12 Apr 2003 20:32:01 +0000 (20:32 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 12 Apr 2003 20:32:01 +0000 (20:32 +0000)
2003-04-12  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
which mishandles loading of global object addresses in PIC.
(THREAD_SETMEM_NC): Likewise.

nptl/Banner
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
nptl/sysdeps/x86_64/tls.h
sysdeps/generic/dl-tls.c
sysdeps/unix/sysv/linux/kernel-features.h

index 288d93dbf84bc6a675419f0d88f7ea2f4d20c84f..28d8ef6ef128e2c0f80353c493d993f11833dd50 100644 (file)
@@ -1 +1 @@
-NPTL 0.34 by Ulrich Drepper
+NPTL 0.35 by Ulrich Drepper
index d40118b42d9130d1111d04d37a331cab847be23a..d6aa004c4200e7ece31441639f7b5bdb603d90e3 100644 (file)
@@ -1,3 +1,9 @@
+2003-04-12  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
+       which mishandles loading of global object addresses in PIC.
+       (THREAD_SETMEM_NC): Likewise.
+
 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
 
        * pthread.h: Define new data structure for cleanup buffer.  Declare
index b7009d753fe3df5e05840510dea35d60089fecaf..09a294b458ccc45e3769ccaf4c3d51387e3ce8f3 100644 (file)
    cancellation state value is saved.  */
 # define EH_FRAME_0(name) \
     .byte 4;                                                                 \
-    .long L(PUSHSTATE)-name;                                                 \
+    .long L(PUSHSTATE)-L(name##START);                                       \
     .byte 14;                                                                \
     .uleb128 8;                                                                      \
     .byte 4;                                                                 \
    also to save the content of the %ebx register.  */
 # define EH_FRAME_3(name) \
     .byte 4;                                                                 \
-    .long L(PUSHBX1)-name;                                                   \
+    .long L(PUSHBX1)-L(name##START);                                         \
     .byte 14;                                                                \
     .uleb128 8;                                                                      \
     .byte 4;                                                                 \
 /* With four parameters the syscall wrappers have to save %ebx and %esi.  */
 # define EH_FRAME_4(name) \
     .byte 4;                                                                 \
-    .long L(PUSHSI1)-name;                                                   \
+    .long L(PUSHSI1)-L(name##START);                                         \
     .byte 14;                                                                \
     .uleb128 8;                                                                      \
     .byte 4;                                                                 \
    and %edi.  */
 # define EH_FRAME_5(name) \
     .byte 4;                                                                 \
-    .long L(PUSHDI1)-name;                                                   \
+    .long L(PUSHDI1)-L(name##START);                                         \
     .byte 14;                                                                \
     .uleb128 8;                                                                      \
     .byte 4;                                                                 \
index dec1b5d1b76cedb8ca061b5b49a253c7cbeb5f84..975d20f3fa6c3f60c4833321579abf4e838bd25f 100644 (file)
@@ -204,6 +204,15 @@ typedef struct
      __value; })
 
 
+/* Loading addresses of objects on x86-64 needs to be treated special
+   when generating PIC code.  */
+#ifdef __pic__
+# define IMM_MODE "nr"
+#else
+# define IMM_MODE "ir"
+#endif
+
+
 /* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
 # define THREAD_SETMEM(descr, member, value) \
   ({ if (sizeof (descr->member) == 1)                                        \
@@ -212,7 +221,7 @@ typedef struct
                       "i" (offsetof (struct pthread, member)));              \
      else if (sizeof (descr->member) == 4)                                   \
        asm volatile ("movl %0,%%fs:%P1" :                                    \
-                    : "ir" (value),                                          \
+                    : IMM_MODE (value),                                      \
                       "i" (offsetof (struct pthread, member)));              \
      else                                                                    \
        {                                                                     \
@@ -222,7 +231,7 @@ typedef struct
           abort ();                                                          \
                                                                              \
         asm volatile ("movq %q0,%%fs:%P1" :                                  \
-                      : "ir" ((unsigned long int) value),                    \
+                      : IMM_MODE ((unsigned long int) value),                \
                         "i" (offsetof (struct pthread, member)));            \
        }})
 
@@ -236,7 +245,7 @@ typedef struct
                       "r" (idx));                                            \
      else if (sizeof (descr->member[0]) == 4)                                \
        asm volatile ("movl %0,%%fs:%P1(,%q2,4)" :                            \
-                    : "ir" (value),                                          \
+                    : IMM_MODE (value),                                      \
                       "i" (offsetof (struct pthread, member[0])),            \
                       "r" (idx));                                            \
      else                                                                    \
@@ -247,7 +256,7 @@ typedef struct
           abort ();                                                          \
                                                                              \
         asm volatile ("movq %q0,%%fs:%P1(,%q2,8)" :                          \
-                      : "r" ((unsigned long int) value),                     \
+                      : IMM_MODE ((unsigned long int) value),                \
                         "i" (offsetof (struct pthread, member[0])),          \
                         "r" (idx));                                          \
        }})
index 19cf0aa0722a4b13828be9507ef0270d74e98686..746d9a20bc9fffab912db4f5c29520bd09ba50dd 100644 (file)
@@ -370,7 +370,7 @@ _dl_allocate_tls_init (void *result)
          assert (map->l_tls_modid == cnt);
          assert (map->l_tls_blocksize >= map->l_tls_initimage_size);
 # if TLS_TCB_AT_TP
-         assert (map->l_tls_offset >= map->l_tls_blocksize);
+         assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize);
          dest = (char *) result - map->l_tls_offset;
 # elif TLS_DTV_AT_TP
          dest = (char *) result + map->l_tls_offset;
index 168715e665507fd4f8d1f259694843c29a1d0c45..56b68ffb5a82bc9394e6ceb4645a944351c32b69 100644 (file)
 # define __ASSUME_NETLINK_SUPPORT      1
 #endif
 
+/* For x86, support for the sysenter instruction was available in
+   2.5.53.  */
+#if __LINUX_KERNEL_VERSION >= 132405 && defined __i386__
+# define __ASSUME_VSYSCALL     1
+#endif
This page took 0.065821 seconds and 5 git commands to generate.