]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 30 Jan 2003 18:04:01 +0000 (18:04 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 30 Jan 2003 18:04:01 +0000 (18:04 +0000)
2003-01-30  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/alpha/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Avoid warnings about unused self
variable.
* sysdeps/ia64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
* sysdeps/s390/s390-32/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
* sysdeps/s390/s390-64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
* sysdeps/sh/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
* sysdeps/sparc/sparc32/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
* sysdeps/sparc/sparc64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.

13 files changed:
elf/dl-reloc.c
elf/do-rel.h
elf/dynamic-link.h
linuxthreads/ChangeLog
linuxthreads/sysdeps/alpha/tls.h
linuxthreads/sysdeps/ia64/pt-machine.h
linuxthreads/sysdeps/s390/s390-32/pt-machine.h
linuxthreads/sysdeps/s390/s390-64/pt-machine.h
linuxthreads/sysdeps/sh/pt-machine.h
linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
sysdeps/unix/sysv/linux/s390/s390-32/clone.S
sysdeps/unix/sysv/linux/s390/s390-64/clone.S

index 7d28553eba2dd32cd1728955d9ec4e4a1d9d1ce1..0443011b361f070e0b9e5c7617293c089e7b7b85 100644 (file)
@@ -39,9 +39,9 @@
 /* We are trying to perform a static TLS relocation in MAP, but it was
    dynamically loaded.  This can only work if there is enough surplus in
    the static TLS area already allocated for each running thread.  If this
-   object's TLS segment is too big to fit, we return false.  If it fits,
-   we set MAP->l_tls_offset and return true.  */
-static bool
+   object's TLS segment is too big to fit, we fail.  If it fits,
+   we set MAP->l_tls_offset and return.  */
+static void __attribute_noinline__
 allocate_static_tls (struct link_map *map)
 {
   size_t offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
@@ -54,10 +54,13 @@ allocate_static_tls (struct link_map *map)
 #  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
 # endif
       > GL(dl_tls_static_size))
-    return false;
+    {
+      const char *errstring = N_("\
+shared object cannot be dlopen()ed: static TLS memory too small");
+      INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring);
+    }
   map->l_tls_offset = offset;
   GL(dl_tls_static_used) = offset + map->l_tls_blocksize;
-  return true;
 }
 #endif
 
@@ -197,13 +200,8 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
        intended to produce.  */
 #define CHECK_STATIC_TLS(map, sym_map)                                       \
     do {                                                                     \
-      if (__builtin_expect ((sym_map)->l_tls_offset == 0, 0)                 \
-         && !allocate_static_tls (sym_map))                                  \
-       {                                                                     \
-         errstring = N_("\
-shared object cannot be dlopen()ed: static TLS memory too small");           \
-         INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring);       \
-       }                                                                     \
+      if (__builtin_expect ((sym_map)->l_tls_offset == 0, 0))                \
+       allocate_static_tls (sym_map);                                        \
     } while (0)
 
 #include "dynamic-link.h"
@@ -256,7 +254,7 @@ INTDEF (_dl_relocate_object)
 
 
 void
-internal_function
+internal_function __attribute_noinline__
 _dl_reloc_bad_type (struct link_map *map, unsigned int type, int plt)
 {
   extern const char INTUSE(_itoa_lower_digits)[] attribute_hidden;
index 9ebffd85707f0986995bafe43ab01707268917bb..726418748c04d12b8de2b185315e214b77c6c06c 100644 (file)
@@ -1,5 +1,5 @@
 /* Do relocations for ELF dynamic linking.
-   Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -49,7 +49,7 @@
    relocations; they should be set up to call _dl_runtime_resolve, rather
    than fully resolved now.  */
 
-static inline void
+static inline void __attribute__ ((always_inline))
 elf_dynamic_do_rel (struct link_map *map,
                    ElfW(Addr) reladdr, ElfW(Addr) relsize,
                    int lazy)
index 6a8871ea9c9c6c31b59f24640a2a9a6720ee121b..63adfcb8024a83fa4609bb6c81798e478ee234f6 100644 (file)
@@ -1,5 +1,5 @@
 /* Inline functions for dynamic linking.
-   Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    02111-1307 USA.  */
 
 #include <elf.h>
-#include <dl-machine.h>
 #include <assert.h>
 
+#ifdef RESOLVE
+auto void __attribute__((always_inline))
+elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
+                const ElfW(Sym) *sym, const struct r_found_version *version,
+                ElfW(Addr) *const reloc_addr);
+auto void __attribute__((always_inline))
+elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
+                 const ElfW(Sym) *sym, const struct r_found_version *version,
+                 ElfW(Addr) *const reloc_addr);
+auto void __attribute__((always_inline))
+elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+                         ElfW(Addr) *const reloc_addr);
+auto void __attribute__((always_inline))
+elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
+                          ElfW(Addr) *const reloc_addr);
+# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
+auto void __attribute__((always_inline))
+elf_machine_lazy_rel (struct link_map *map,
+                     ElfW(Addr) l_addr, const ElfW(Rel) *reloc);
+# else
+auto void __attribute__((always_inline))
+elf_machine_lazy_rel (struct link_map *map,
+                     ElfW(Addr) l_addr, const ElfW(Rela) *reloc);
+# endif
+#endif
+
+#include <dl-machine.h>
+
 #ifndef VERSYMIDX
 # define VERSYMIDX(sym)        (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
 #endif
index 80de0debab05977583f69849bc82dcaa2fcc966f..52da3264ae6fb0095f58fa3c00cf770fd3d87af0 100644 (file)
@@ -1,3 +1,21 @@
+2003-01-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/alpha/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Avoid warnings about unused self
+       variable.
+       * sysdeps/ia64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+       * sysdeps/s390/s390-32/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+       * sysdeps/s390/s390-64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+       * sysdeps/sh/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+       * sysdeps/sparc/sparc32/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+       * sysdeps/sparc/sparc64/pt-machine.h (THREAD_GETMEM, THREAD_GETMEM_NC,
+       THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
+
 2003-01-27  Martin Schwidefsky  <schwidefsky@de.ibm.com>
 
        * sysdeps/s390/s390-32/pt-machine.h (THREAD_SELF, INIT_THREAD_SELF):
index d93c91fc5215e85ee856793ada239826faa6a371..261e67dd0f53a1f5b0935fa12fedca10527457b1 100644 (file)
@@ -114,10 +114,12 @@ typedef struct
    the compiler does its job and unifies the multiple
    __builtin_thread_pointer instances.  */
 
-#define THREAD_GETMEM(descr, member) THREAD_SELF->member
-#define THREAD_GETMEM_NC(descr, member) THREAD_SELF->member
-#define THREAD_SETMEM(descr, member, value) (THREAD_SELF->member = (value))
-#define THREAD_SETMEM_NC(descr, member, value) (THREAD_SELF->member = (value))
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 # endif        /* HAVE_TLS_SUPPORT */
 #endif /* __ASSEMBLER__ */
index 4b88a00509672260af4d0f1300df1b91012b2610..6efe66966d22e24fea68134401830ca4a1c7055d 100644 (file)
@@ -64,10 +64,12 @@ register struct _pthread_descr_struct *__thread_self __asm__("r13");
 
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) THREAD_SELF->member
-#define THREAD_GETMEM_NC(descr, member) THREAD_SELF->member
-#define THREAD_SETMEM(descr, member, value) THREAD_SELF->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) THREAD_SELF->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 
 /* Memory barrier */
index ee353200594eb79d30c351c3ed3eee10a397e33b..c3a811008449afa49cdcc3438412fab1a5bfe5ee 100644 (file)
@@ -80,10 +80,12 @@ register char * stack_pointer __asm__ ("15");
 #endif
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) THREAD_SELF->member
-#define THREAD_GETMEM_NC(descr, member) THREAD_SELF->member
-#define THREAD_SETMEM(descr, member, value) THREAD_SELF->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) THREAD_SELF->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 /* We want the OS to assign stack addresses.  */
 #define FLOATING_STACKS 1
index c0f30789c27d1035de3d5549d0a1b061fda298f9..5cab958cface71c798536c370c74c9e1e47774d8 100644 (file)
@@ -86,10 +86,12 @@ register char * stack_pointer __asm__ ("15");
 #endif
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) THREAD_SELF->member
-#define THREAD_GETMEM_NC(descr, member) THREAD_SELF->member
-#define THREAD_SETMEM(descr, member, value) THREAD_SELF->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) THREAD_SELF->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 /* We want the OS to assign stack addresses.  */
 #define FLOATING_STACKS 1
index cc3a4f2ce9ae98d7fc4bf644fad82299b94ad4ab..c7fcc694b1ec9ba0dcaaa72d6a5ed0b5115d74d8 100644 (file)
@@ -1,6 +1,6 @@
 /* Machine-dependent pthreads configuration and inline functions.
    SuperH version.
-   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Niibe Yutaka <gniibe@m17n.org>.
 
@@ -68,10 +68,12 @@ struct _pthread_descr_struct;
   ({ __asm__ __volatile__("ldc %0,gbr" : : "r" (descr));})
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) THREAD_SELF->member
-#define THREAD_GETMEM_NC(descr, member) THREAD_SELF->member
-#define THREAD_SETMEM(descr, member, value) THREAD_SELF->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) THREAD_SELF->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 #endif /* __ASSEMBLER__ */
 
 #endif /* pt-machine.h */
index cbfc872df2f5e59c0e6cb8278fe886e42b337385..404edf2b9599aaead98ce4a46f515dd7b5b07351 100644 (file)
@@ -65,10 +65,12 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g7");
 #define INIT_THREAD_SELF(descr, nr)  (__thread_self = (descr))
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) __thread_self->member
-#define THREAD_GETMEM_NC(descr, member) __thread_self->member
-#define THREAD_SETMEM(descr, member, value) __thread_self->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) __thread_self->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 /* We want the OS to assign stack addresses.  */
 #define FLOATING_STACKS 1
index 3087020e1b7b85253443f35cd469b4bc12f69635..291a73291cac649c2b729bf6f9e744e5e90eef69 100644 (file)
@@ -87,10 +87,12 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
 }
 
 /* Access to data in the thread descriptor is easy.  */
-#define THREAD_GETMEM(descr, member) __thread_self->member
-#define THREAD_GETMEM_NC(descr, member) __thread_self->member
-#define THREAD_SETMEM(descr, member, value) __thread_self->member = (value)
-#define THREAD_SETMEM_NC(descr, member, value) __thread_self->member = (value)
+#define THREAD_GETMEM(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) (sizeof (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+  (sizeof (descr), THREAD_SELF->member = (value))
 
 /* We want the OS to assign stack addresses.  */
 #define FLOATING_STACKS 1
index 91c362a2e8744c12e990da8e3cf6ce04478d0d8c..650384cbc9fd4e48a45f140e675e58e09911e549 100644 (file)
@@ -42,10 +42,10 @@ ENTRY(__clone)
        l       %r5,100(%r15)           /* load child_tid from stack */
        l       %r6,96(%r15)            /* load tls from stack */
        svc     SYS_ify(clone)
-       l       %r6,24(%r15)            /* restore %r6 */
        ltr     %r2,%r2                 /* check return code */
-       jm      SYSCALL_ERROR_LABEL
        jz      thread_start
+       l       %r6,24(%r15)            /* restore %r6 */
+       jm      SYSCALL_ERROR_LABEL
        br      %r14
 error:
        lhi     %r2,-EINVAL
index 5150540f4eb8f4ae11afbbb64b10690f0fafedba..fdeb4c806f0964ff216110255054f4173ae6208b 100644 (file)
@@ -43,10 +43,10 @@ ENTRY(__clone)
        lg      %r5,168(%r15)           /* load child_tid from stack */
        l       %r6,160(%r15)           /* load tls from stack */
        svc     SYS_ify(clone)
-       lg      %r6,48(%r15)            /* restore %r6 */
        ltgr    %r2,%r2                 /* check return code */
-       jgm     SYSCALL_ERROR_LABEL
        jz      thread_start
+       lg      %r6,48(%r15)            /* restore %r6 */
+       jgm     SYSCALL_ERROR_LABEL
        br      %r14
 error:
        lghi    %r2,-EINVAL