Quellcode durchsuchen

Merge remote-tracking branch 'origin/upstream' into 1.0

Waldemar Brodkorb vor 11 Jahren
Ursprung
Commit
474700954d

+ 1 - 1
Makerules

@@ -330,7 +330,7 @@ define create-lds
 	-Wl,-z,relro -Wl,--hash-style=gnu -Wl,-z,defs \
 	-Wl,--verbose 2>&1 | LC_ALL=C \
 	$(SED) -e '/^=========/,/^=========/!d;/^=========/d' \
-	-e 's/\. = .* + SIZEOF_HEADERS;/& $(SYMBOL_PREFIX)_begin = . - SIZEOF_HEADERS;/' > $@.lds
+	-e 's/^\([ 	]*\)\. = .* + SIZEOF_HEADERS;/&\n\1$(SYMBOL_PREFIX)_begin = . - SIZEOF_HEADERS;/' > $@.lds
 endef
 
 define link.so

+ 3 - 8
ldso/ldso/dl-debug.c

@@ -112,8 +112,6 @@ _dl_debug_lookup (const char *undef_name, struct elf_resolve *undef_map,
 					const ElfW(Sym) *ref, struct symbol_ref *value, int type_class)
 {
 #ifdef SHARED
-  unsigned long symbol_addr;
-
   if (_dl_trace_prelink)
     {
       int conflict = 0;
@@ -123,17 +121,14 @@ _dl_debug_lookup (const char *undef_name, struct elf_resolve *undef_map,
 	   || _dl_trace_prelink_map == _dl_loaded_modules)
 	  && undef_map != _dl_loaded_modules)
 	{
-		symbol_addr = (unsigned long)
-					  _dl_find_hash(undef_name, &undef_map->symbol_scope,
-									undef_map, type_class, &val);
+	  _dl_find_hash(undef_name, &undef_map->symbol_scope,
+			undef_map, type_class, &val);
 
 	  if (val.sym != value->sym || val.tpnt != value->tpnt)
 	    conflict = 1;
 	}
 
-      if (value->sym
-	  && (__builtin_expect (ELF_ST_TYPE(value->sym->st_info)
-				== STT_TLS, 0)))
+      if (unlikely(value->sym && ELF_ST_TYPE(value->sym->st_info) == STT_TLS))
 	type_class = 4;
 
       if (conflict

+ 3 - 3
ldso/ldso/dl-startup.c

@@ -95,8 +95,8 @@
 #include "dl-startup.h"
 
 #ifdef __LDSO_PRELINK_SUPPORT__
-/* These defined magically in the linker script.  */
-extern char _begin[] attribute_hidden;
+/* This is defined by the linker script.  */
+extern ElfW(Addr) _begin[] attribute_hidden;
 #endif
 
 /* Static declarations */
@@ -181,7 +181,7 @@ DL_START(unsigned long args)
 	 */
 
 	if (!auxvt[AT_BASE].a_un.a_val)
-		auxvt[AT_BASE].a_un.a_val =  (Elf32_Addr) &_begin;
+		auxvt[AT_BASE].a_un.a_val =  (ElfW(Addr)) &_begin;
 	/* Note: if the dynamic linker itself is prelinked, the load_addr is 0 */
 	DL_INIT_LOADADDR_BOOT(load_addr, elf_machine_load_address());
 #else

+ 2 - 1
libc/signal/sigaddset.c

@@ -30,6 +30,7 @@ sigaddset (sigset_t *set, int signo)
       return -1;
     }
 
-  return __sigaddset (set, signo);
+  __sigaddset (set, signo);
+  return 0;
 }
 libc_hidden_def(sigaddset)

+ 2 - 1
libc/signal/sigdelset.c

@@ -29,6 +29,7 @@ int sigdelset (sigset_t *set, int signo)
       return -1;
     }
 
-  return __sigdelset (set, signo);
+  __sigdelset (set, signo);
+  return 0;
 }
 libc_hidden_def(sigdelset)

+ 11 - 10
libc/sysdeps/linux/common/bits/sigset.h

@@ -154,9 +154,9 @@ typedef struct {
 # if !defined __USE_EXTERN_INLINES || defined __PROVIDE_OUT_OF_LINE_SIGSETFN
 extern int __sigismember (const __sigset_t *, int);
 libc_hidden_proto(__sigismember)
-extern int __sigaddset (__sigset_t *, int);
+extern void __sigaddset (__sigset_t *, int);
 libc_hidden_proto(__sigaddset)
-extern int __sigdelset (__sigset_t *, int);
+extern void __sigdelset (__sigset_t *, int);
 libc_hidden_proto(__sigdelset)
 # endif
 
@@ -169,18 +169,19 @@ libc_hidden_proto(__sigdelset)
      * will have its own copy of out-of line function emitted. */
 #   define _EXTERN_INLINE /*extern*/ __always_inline
 #  endif
-#  define __SIGSETFN(NAME, BODY, CONST)					\
-_EXTERN_INLINE int							\
+#  define __SIGSETFN(RET_TYPE, NAME, BODY, CONST)			\
+_EXTERN_INLINE RET_TYPE							\
 NAME (CONST __sigset_t *__set, int __sig)				\
 {									\
 	unsigned long __mask = __sigmask (__sig);			\
 	unsigned __word = __sigword (__sig);				\
-	return BODY;							\
+	BODY;							\
 }
 
-__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const)
-__SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), )
-__SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), )
+__SIGSETFN (int, __sigismember, return (__set->__val[__word] & __mask) ? 1 : 0,
+	const)
+__SIGSETFN (void, __sigaddset, (__set->__val[__word] |= __mask), )
+__SIGSETFN (void, __sigdelset, (__set->__val[__word] &= ~__mask), )
 
 #  undef __SIGSETFN
 # endif
@@ -207,7 +208,7 @@ const_sigaddset(__sigset_t *set, int sig)
 	set->__val[word] |= mask;
 }
 #  define __sigaddset(set, sig) \
-	(__builtin_constant_p(sig) ? (const_sigaddset(set, sig), 0)  : __sigaddset(set, sig))
+	(__builtin_constant_p(sig) ? const_sigaddset(set, sig)  : __sigaddset(set, sig))
 static __always_inline void
 const_sigdelset(__sigset_t *set, int sig)
 {
@@ -216,7 +217,7 @@ const_sigdelset(__sigset_t *set, int sig)
 	set->__val[word] &= ~mask;
 }
 #  define __sigdelset(set, sig) \
-	(__builtin_constant_p(sig) ? (const_sigdelset(set, sig), 0) : __sigdelset(set, sig))
+	(__builtin_constant_p(sig) ? const_sigdelset(set, sig) : __sigdelset(set, sig))
 # endif
 
 #endif /* ! _SIGSET_H_fns.  */

+ 2 - 0
libc/sysdeps/linux/sparc/clone.S

@@ -22,7 +22,9 @@
 
 #include <asm/errno.h>
 #include <asm/unistd.h>
+#ifdef RESET_PID
 #include <tcb-offsets.h>
+#endif
 #include <sysdep.h>
 
 #define CLONE_VM	0x00000100