This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch gentoo/2.19 created. glibc-2.19-11-gb76e856


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, gentoo/2.19 has been created
        at  b76e856d84e14d5ece6988fee589aff26d6ac2f2 (commit)

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b76e856d84e14d5ece6988fee589aff26d6ac2f2

commit b76e856d84e14d5ece6988fee589aff26d6ac2f2
Author: David Lamparter <equinox-gentoo@diac24.net>
Date:   Fri Aug 16 15:06:34 2013 -0400

    arm: fix PIC vs SHARED typos
    
    the logic in setjmp/__longjmp incorrectly tie to "PIC" to figure out
    whether the code is going into a shared library when it should be using
    "SHARED".  otherwise, building static PIC code goes wrong.
    
    https://bugs.gentoo.org/336914
    http://sourceware.org/ml/libc-ports/2011-09/msg00018.html
    
    2011-09-19  David Lamparter  <equinox-gentoo@diac24.net>
    
    	* sysdeps/arm/eabi/setjmp.S: Change PIC to SHARED.
    	* sysdeps/arm/eabi/__longjmp.S: Likewise

diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
index 27c57a1..c2efe12 100644
--- a/ports/sysdeps/arm/__longjmp.S
+++ b/ports/sysdeps/arm/__longjmp.S
@@ -73,7 +73,7 @@ ENTRY (__longjmp)
 	add	a2, a2, a3
 	ldr	a2, [a2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
 # else
-#  ifdef PIC
+#  ifdef SHARED
 	ldr	a2, 1f
 	ldr	a3, .Lrtld_global_ro
 0:	add	a2, pc, a2
@@ -126,7 +126,7 @@ ENTRY (__longjmp)
 .Lrtld_local_ro:
 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
 # else
-#  ifdef PIC
+#  ifdef SHARED
 1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long	C_SYMBOL_NAME(_rtld_global_ro)(GOT)
diff --git a/ports/sysdeps/arm/setjmp.S b/ports/sysdeps/arm/setjmp.S
index b0b45ed..54e5de4 100644
--- a/ports/sysdeps/arm/setjmp.S
+++ b/ports/sysdeps/arm/setjmp.S
@@ -54,7 +54,7 @@ ENTRY (__sigsetjmp)
 	add	a3, a3, a4
 	ldr	a3, [a3, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
 # else
-#  ifdef PIC
+#  ifdef SHARED
 	ldr	a3, 1f
 	ldr	a4, .Lrtld_global_ro
 0:	add	a3, pc, a3
@@ -110,7 +110,7 @@ ENTRY (__sigsetjmp)
 .Lrtld_local_ro:
 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
 # else
-#  ifdef PIC
+#  ifdef SHARED
 1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long	C_SYMBOL_NAME(_rtld_global_ro)(GOT)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b4edac208dde06c49553aaec6ec877b52b7c4649

commit b4edac208dde06c49553aaec6ec877b52b7c4649
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Fri Aug 16 15:05:26 2013 -0400

    gentoo: disable building in timezone subdir
    
    We've split this out into the package sys-libs/timezone-data

diff --git a/Makeconfig b/Makeconfig
index d3f6023..ea4d2f1 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1032,7 +1032,7 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal	    \
 	      stdlib stdio-common libio malloc string wcsmbs time dirent    \
 	      grp pwd posix io termios resource misc socket sysvipc gmon    \
 	      gnulib iconv iconvdata wctype manual shadow gshadow po argp   \
-	      crypt localedata timezone rt conform debug		    \
+	      crypt localedata rt conform debug		    \
 	      $(add-on-subdirs) dlfcn elf
 
 ifndef avoid-generated

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6d981a99c35fbbfdf90ff188c5dd6d1ac46b9353

commit 6d981a99c35fbbfdf90ff188c5dd6d1ac46b9353
Author: Stephanie J. Lockwood-Childs <wormo@gentoo.org>
Date:   Fri Aug 16 15:03:41 2013 -0400

    gentoo: support running tests under sandbox
    
    when glibc runs its tests, it does so by invoking the local library loader.
    in Gentoo, we build/run inside of our "sandbox" which itself is linked against
    libdl (so that it can load libraries and pull out symbols).  the trouble
    is that when you upgrade from an older glibc to the new one, often times
    internal symbols change name or abi.  this is normally OK as you cannot use
    libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
    we always say "keep all of the glibc libraries from the same build".  but
    when glibc runs its tests, it uses dynamic paths to point to its new local
    copies of libraries.  if the test doesnt use libdl, then glibc doesnt add
    its path, and when sandbox triggers the loading of libdl, glibc does so
    from the host system system.  this gets us into the case of all libraries
    are from the locally compiled version of glibc except for libdl.so.
    
    http://bugs.gentoo.org/56898

diff --git a/Makeconfig b/Makeconfig
index 1908f27..d3f6023 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -612,7 +612,7 @@ comma = ,
 sysdep-library-path = \
 $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
 				       $(filter -Wl$(comma)-rpath-link=%,\
-						$(sysdep-LDFLAGS)))))
+						$(sysdep-LDFLAGS)))) $(common-objpfx)/dlfcn)
 # $(run-via-rtld-prefix) is a command that, when prepended to the name
 # of a program built with the newly built library, produces a command
 # that, executed on the host for which the library is built, runs that
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index e23f60d..b722415 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -35,7 +35,7 @@ GCONV_PATH=$codir/iconvdata
 export GCONV_PATH
 
 # We have to have some directories in the library path.
-LIBPATH=$codir:$codir/iconvdata
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
 
 # How the start the iconv(1) program.
 ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
diff --git a/nptl/tst-tls6.sh b/nptl/tst-tls6.sh
index 5a897fe..ba47568 100755
--- a/nptl/tst-tls6.sh
+++ b/nptl/tst-tls6.sh
@@ -25,7 +25,7 @@ test_wrapper_env=$1; shift
 logfile=$common_objpfx/nptl/tst-tls6.out
 
 # We have to find libc and nptl
-library_path=${common_objpfx}:${common_objpfx}nptl
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
 tst_tls5="${test_via_rtld_prefix} ${common_objpfx}/nptl/tst-tls5"
 
 LC_ALL=C

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8f1bdcb971a624a08796dae3ad01a9eb7552ba24

commit 8f1bdcb971a624a08796dae3ad01a9eb7552ba24
Author: Carlos O'Donell <carlos@systemhalted.org>
Date:   Fri Aug 16 15:00:53 2013 -0400

    nptl: handle EAGAIN with some futex operations
    
    https://bugs.gentoo.org/452184

diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c
index 4d5f75d..4bf19ec 100644
--- a/nptl/pthread_mutex_trylock.c
+++ b/nptl/pthread_mutex_trylock.c
@@ -260,7 +260,8 @@ __pthread_mutex_trylock (mutex)
 							  private), 0, 0);
 
 	    if (INTERNAL_SYSCALL_ERROR_P (e, __err)
-		&& INTERNAL_SYSCALL_ERRNO (e, __err) == EWOULDBLOCK)
+		&& ((INTERNAL_SYSCALL_ERRNO (e, __err) == EWOULDBLOCK)
+		    || (INTERNAL_SYSCALL_ERRNO (e, __err) == EAGAIN)))
 	      {
 		THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
 
diff --git a/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c b/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
index 7dfe51d..f96f625 100644
--- a/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
@@ -94,7 +94,7 @@ sem_timedwait (sem_t *sem, const struct timespec *abstime)
       rt.tv_sec = sec;
       rt.tv_nsec = nsec;
       err = do_futex_timed_wait(isem, &rt);
-      if (err != 0 && err != -EWOULDBLOCK)
+      if (err != 0 && err != -EWOULDBLOCK && err != -EAGAIN)
 	{
 	  __set_errno (-err);
 	  err = -1;
diff --git a/nptl/sysdeps/unix/sysv/linux/sem_wait.c b/nptl/sysdeps/unix/sysv/linux/sem_wait.c
index 7d586cf..6f2a89f 100644
--- a/nptl/sysdeps/unix/sysv/linux/sem_wait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sem_wait.c
@@ -67,7 +67,7 @@ __new_sem_wait (sem_t *sem)
   while (1)
     {
       err = do_futex_wait(isem);
-      if (err != 0 && err != -EWOULDBLOCK)
+      if (err != 0 && err != -EWOULDBLOCK && err != -EAGAIN)
 	{
 	  __set_errno (-err);
 	  err = -1;
@@ -112,7 +112,7 @@ __old_sem_wait (sem_t *sem)
       /* Disable asynchronous cancellation.  */
       __pthread_disable_asynccancel (oldtype);
     }
-  while (err == 0 || err == -EWOULDBLOCK);
+  while (err == 0 || err == -EWOULDBLOCK || err == -EAGAIN);
 
   __set_errno (-err);
   return -1;

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=2a6098d40483e825eebc18f74203b0b1d1c6e6c8

commit 2a6098d40483e825eebc18f74203b0b1d1c6e6c8
Author: Guy Martin <gmsoft@tuxicoman.be>
Date:   Fri Aug 16 15:00:05 2013 -0400

    rtld: do not ignore arch-specific CFLAGS
    
    https://bugs.gentoo.org/452184
    http://sourceware.org/bugzilla/show_bug.cgi?id=15005
    http://sourceware.org/ml/libc-alpha/2013-01/msg00247.html

diff --git a/elf/Makefile b/elf/Makefile
index 4c58fc9..56900d2 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -421,7 +421,7 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
 		    -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)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a5760bbb50f3dbfd1e4051a54aae35060cdd639b

commit a5760bbb50f3dbfd1e4051a54aae35060cdd639b
Author: Carlos O'Donell <carlos@systemhalted.org>
Date:   Fri Aug 16 14:57:59 2013 -0400

    nptl: support thread stacks that grow up
    
    http://bugs.gentoo.org/301642

diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 13eca47..ad6d8a9 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -371,6 +371,15 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
   if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0))
     {
       uintptr_t adj;
+#if _STACK_GROWS_DOWN
+      char * stackaddr = (char *) attr->stackaddr;
+#else
+      /* Assume the same layout as the _STACK_GROWS_DOWN case, 
+	 with struct pthread at the top of the stack block. 
+	 Later we adjust the guard location and stack address 
+	 to match the _STACK_GROWS_UP case.  */
+      char * stackaddr = (char *) attr->stackaddr + attr->stacksize;
+#endif
 
       /* If the user also specified the size of the stack make sure it
 	 is large enough.  */
@@ -380,11 +389,11 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 
       /* Adjust stack size for alignment of the TLS block.  */
 #if TLS_TCB_AT_TP
-      adj = ((uintptr_t) attr->stackaddr - TLS_TCB_SIZE)
+      adj = ((uintptr_t) stackaddr - TLS_TCB_SIZE)
 	    & __static_tls_align_m1;
       assert (size > adj + TLS_TCB_SIZE);
 #elif TLS_DTV_AT_TP
-      adj = ((uintptr_t) attr->stackaddr - __static_tls_size)
+      adj = ((uintptr_t) stackaddr - __static_tls_size)
 	    & __static_tls_align_m1;
       assert (size > adj);
 #endif
@@ -394,10 +403,10 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	 the stack.  It is the user's responsibility to do this if it
 	 is wanted.  */
 #if TLS_TCB_AT_TP
-      pd = (struct pthread *) ((uintptr_t) attr->stackaddr
+      pd = (struct pthread *) ((uintptr_t) stackaddr
 			       - TLS_TCB_SIZE - adj);
 #elif TLS_DTV_AT_TP
-      pd = (struct pthread *) (((uintptr_t) attr->stackaddr
+      pd = (struct pthread *) (((uintptr_t) stackaddr
 				- __static_tls_size - adj)
 			       - TLS_PRE_TCB_SIZE);
 #endif
@@ -409,7 +418,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
       pd->specific[0] = pd->specific_1stblock;
 
       /* Remember the stack-related values.  */
-      pd->stackblock = (char *) attr->stackaddr - size;
+      pd->stackblock = (char *) stackaddr - size;
       pd->stackblock_size = size;
 
       /* This is a user-provided stack.  It will not be queued in the
@@ -635,7 +644,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	  char *guard = mem + (((size - guardsize) / 2) & ~pagesize_m1);
 #elif _STACK_GROWS_DOWN
 	  char *guard = mem;
-# elif _STACK_GROWS_UP
+#elif _STACK_GROWS_UP
 	  char *guard = (char *) (((uintptr_t) pd - guardsize) & ~pagesize_m1);
 #endif
 	  if (mprotect (guard, guardsize, PROT_NONE) != 0)
@@ -731,7 +740,6 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
   *stack = stacktop;
 #elif _STACK_GROWS_UP
   *stack = pd->stackblock;
-  assert (*stack > 0);
 #endif
 
   return 0;
diff --git a/nptl/pthread_attr_getstack.c b/nptl/pthread_attr_getstack.c
index 3f4fd8d..4c1a098 100644
--- a/nptl/pthread_attr_getstack.c
+++ b/nptl/pthread_attr_getstack.c
@@ -32,7 +32,11 @@ __pthread_attr_getstack (attr, stackaddr, stacksize)
   iattr = (struct pthread_attr *) attr;
 
   /* Store the result.  */
+#ifdef _STACK_GROWS_DOWN
   *stackaddr = (char *) iattr->stackaddr - iattr->stacksize;
+#else
+  *stackaddr = (char *) iattr->stackaddr;
+#endif
   *stacksize = iattr->stacksize;
 
   return 0;
diff --git a/nptl/pthread_attr_setstack.c b/nptl/pthread_attr_setstack.c
index 19a5b54..4785501 100644
--- a/nptl/pthread_attr_setstack.c
+++ b/nptl/pthread_attr_setstack.c
@@ -48,7 +48,11 @@ __pthread_attr_setstack (attr, stackaddr, stacksize)
 #endif
 
   iattr->stacksize = stacksize;
+#if _STACK_GROWS_DOWN
   iattr->stackaddr = (char *) stackaddr + stacksize;
+#else
+  iattr->stackaddr = (char *) stackaddr;
+#endif
   iattr->flags |= ATTR_FLAG_STACKADDR;
 
   return 0;
@@ -81,7 +85,11 @@ __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
 #  endif
 
   iattr->stacksize = stacksize;
+#if _STACK_GROWS_DOWN
   iattr->stackaddr = (char *) stackaddr + stacksize;
+#else
+  iattr->stackaddr = (char *) stackaddr;
+#endif
   iattr->flags |= ATTR_FLAG_STACKADDR;
 
   return 0;
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 9d7f52f..72945cb 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -401,13 +401,26 @@ start_thread (void *arg)
 #ifdef _STACK_GROWS_DOWN
   char *sp = CURRENT_STACK_FRAME;
   size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1;
-#else
-# error "to do"
-#endif
   assert (freesize < pd->stackblock_size);
   if (freesize > PTHREAD_STACK_MIN)
     __madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
-
+#else
+  /* Page aligned start of memory to free (higher than or equal 
+     to current sp plus the minimum stack size).  */
+  void *freeblock = (void*)((size_t)(CURRENT_STACK_FRAME 
+				     + PTHREAD_STACK_MIN 
+				     + pagesize_m1) 
+				    & ~pagesize_m1);
+  char *free_end = (char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1);
+  /* Is there any space to free?  */
+  if (free_end > (char *)freeblock)
+    {
+      size_t freesize = (size_t)(free_end - (char *)freeblock);
+      assert (freesize < pd->stackblock_size);
+      __madvise (freeblock, freesize, MADV_DONTNEED);
+    }
+#endif
+ 
   /* If the thread is detached free the TCB.  */
   if (IS_DETACHED (pd))
     /* Free the TCB.  */
diff --git a/nptl/pthread_getattr_np.c b/nptl/pthread_getattr_np.c
index e79f282..2ec2748 100644
--- a/nptl/pthread_getattr_np.c
+++ b/nptl/pthread_getattr_np.c
@@ -60,7 +60,11 @@ pthread_getattr_np (thread_id, attr)
   if (__builtin_expect (thread->stackblock != NULL, 1))
     {
       iattr->stacksize = thread->stackblock_size;
+#ifdef _STACK_GROWS_DOWN
       iattr->stackaddr = (char *) thread->stackblock + iattr->stacksize;
+#else
+      iattr->stackaddr = (char *) thread->stackblock;
+#endif
     }
   else
     {
@@ -129,12 +133,17 @@ pthread_getattr_np (thread_id, attr)
 		         stack extension request.  */
 		      iattr->stacksize = (iattr->stacksize
 					  & -(intptr_t) GLRO(dl_pagesize));
-
+#if _STACK_GROWS_DOWN
 		      /* The limit might be too high.  */
 		      if ((size_t) iattr->stacksize
 			  > (size_t) iattr->stackaddr - last_to)
 			iattr->stacksize = (size_t) iattr->stackaddr - last_to;
-
+#else
+		      /* The limit might be too high.  */
+		      if ((size_t) iattr->stacksize
+			  > to - (size_t) iattr->stackaddr)
+			iattr->stacksize = to - (size_t) iattr->stackaddr;
+#endif
 		      /* We succeed and no need to look further.  */
 		      ret = 0;
 		      break;

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6a714e48586aa7f21d2eeef9195cee57c9ebaa60

commit 6a714e48586aa7f21d2eeef9195cee57c9ebaa60
Author: Thorsten Kukuk <kukuk@suse.de>
Date:   Fri Aug 16 14:54:23 2013 -0400

    reload /etc/resolv.conf when it has changed
    
    if /etc/resolv.conf is updated, then make sure applications
    already running get the updated information.
    
    ripped from SuSE
    
    http://bugs.gentoo.org/177416

diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index ee3fa21..f30b3a9 100644
--- a/resolv/res_libc.c
+++ b/resolv/res_libc.c
@@ -22,6 +22,7 @@
 #include <arpa/nameser.h>
 #include <resolv.h>
 #include <bits/libc-lock.h>
+#include <sys/stat.h>
 
 
 /* The following bit is copied from res_data.c (where it is #ifdef'ed
@@ -95,6 +96,20 @@ int
 __res_maybe_init (res_state resp, int preinit)
 {
 	if (resp->options & RES_INIT) {
+		static time_t last_mtime, last_check;
+		time_t now;
+		struct stat statbuf;
+
+		time (&now);
+		if (now != last_check) {
+			last_check = now;
+			if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
+				last_mtime = statbuf.st_mtime;
+				atomicinclock (lock);
+				atomicinc (__res_initstamp);
+				atomicincunlock (lock);
+			}
+		}
 		if (__res_initstamp != resp->_u._ext.initstamp) {
 			if (resp->nscount > 0)
 				__res_iclose (resp, true);

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=ce3e26b03abb5d1f20117fa3e80b31bfee53ee33

commit ce3e26b03abb5d1f20117fa3e80b31bfee53ee33
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Aug 16 14:52:25 2013 -0400

    Fix localedef segfault when run under exec-shield, PaX or similar
    
    http://bugs.debian.org/198099
    http://bugs.debian.org/231438

diff --git a/locale/programs/3level.h b/locale/programs/3level.h
index c83cdf2..1d4553e 100644
--- a/locale/programs/3level.h
+++ b/locale/programs/3level.h
@@ -204,6 +204,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t,
 	}
     }
 }
+
+/* GCC ATM seems to do a poor job with pointers to nested functions passed
+   to inlined functions.  Help it a little bit with this hack.  */
+#define wchead_table_iterate(tp, fn) \
+do									      \
+  {									      \
+    struct wchead_table *t = (tp);					      \
+    uint32_t index1;							      \
+    for (index1 = 0; index1 < t->level1_size; index1++)			      \
+      {									      \
+	uint32_t lookup1 = t->level1[index1];				      \
+	if (lookup1 != ((uint32_t) ~0))					      \
+	  {								      \
+	    uint32_t lookup1_shifted = lookup1 << t->q;			      \
+	    uint32_t index2;						      \
+	    for (index2 = 0; index2 < (1 << t->q); index2++)		      \
+	      {								      \
+		uint32_t lookup2 = t->level2[index2 + lookup1_shifted];	      \
+		if (lookup2 != ((uint32_t) ~0))				      \
+		  {							      \
+		    uint32_t lookup2_shifted = lookup2 << t->p;		      \
+		    uint32_t index3;					      \
+		    for (index3 = 0; index3 < (1 << t->p); index3++)	      \
+		      {							      \
+			struct element_t *lookup3			      \
+			  = t->level3[index3 + lookup2_shifted];	      \
+			if (lookup3 != NULL)				      \
+			  fn ((((index1 << t->q) + index2) << t->p) + index3, \
+			      lookup3);					      \
+		      }							      \
+		  }							      \
+	      }								      \
+	  }								      \
+      }									      \
+  } while (0)
+
 #endif
 
 #ifndef NO_ADD_LOCALE

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0371345ce892d174f344d0f912419f4a5b3c8954

commit 0371345ce892d174f344d0f912419f4a5b3c8954
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Sat May 4 14:12:58 2013 -0400

    make fortify logic checks less angry
    
    the fortify/optimization check does not play well with our default gcc specs
    
    http://sourceware.org/ml/libc-alpha/2012-06/msg00068.html

diff --git a/include/features.h b/include/features.h
index 21173a2..46638ca 100644
--- a/include/features.h
+++ b/include/features.h
@@ -336,10 +336,11 @@
 # define __USE_REENTRANT	1
 #endif
 
+#if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
+# undef _FORTIFY_SOURCE
+#endif
 #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
-# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
-#  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
-# elif !__GNUC_PREREQ (4, 1)
+# if !__GNUC_PREREQ (4, 1)
 #  warning _FORTIFY_SOURCE requires GCC 4.1 or later
 # elif _FORTIFY_SOURCE > 1
 #  define __USE_FORTIFY_LEVEL 2

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=cca855811394c527a7de8dc45abc7d65dd9e1745

commit cca855811394c527a7de8dc45abc7d65dd9e1745
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Sat May 4 14:10:41 2013 -0400

    workaround crash when handling signals in static PIEs
    
    work around ... not entirely sure what is going on here.
    
    2011-03-01	squeezy  <vina@mailserver.eu>
    
    	* sysdeps/unix/sysv/linux/x86_64/sigaction.c fix the __restore_rt symbol
    
    http://bugs.gentoo.org/283470

diff --git a/sysdeps/unix/sysv/linux/x86_64/sigaction.c b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
index ab23985..3f48a26 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
@@ -39,7 +39,7 @@
 
 /* Using the hidden attribute here does not change the code but it
    helps to avoid warnings.  */
-extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
+extern void restore_rt (void) asm ("__restore_rt") __attribute__((__visibility__("hidden")));
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=9ef157813274d285e99c238f433b9be92b48ac88

commit 9ef157813274d285e99c238f433b9be92b48ac88
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Sat May 4 14:07:11 2013 -0400

    disable ldconfig during install
    
    do not bother running ldconfig on DESTDIR.  it wants to write the temp cache
    file outside of the chroot.  doesnt matter anyways as we wont use the cache
    results (portage will rebuild cache), so running ldconfig is simply a waste
    of time.
    
    http://sourceware.org/ml/libc-alpha/2012-08/msg00118.html
    https://bugs.gentoo.org/431038

diff --git a/Makefile b/Makefile
index 51d4690..65f6cbe 100644
--- a/Makefile
+++ b/Makefile
@@ -105,6 +105,7 @@ install-symbolic-link: subdir_install
 	rm -f $(symbolic-link-list)
 
 install:
+dont-bother-with-destdir:
 	-test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \
 	  $(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
 				       $(slibdir) $(libdir)

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]