about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--elf/dl-deps.c8
-rw-r--r--include/alloca.h10
-rw-r--r--nscd/Makefile2
-rwxr-xr-xscripts/check-local-headers.sh2
5 files changed, 23 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index f18c5cbf4b..3b59f298c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-11-01  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* include/alloca.h (stackinfo_alloca_round): Define.
+	(extend_alloca): Use it.
+	[_STACK_GROWS_UP]: Correct check for adjacent allocation.
+	* elf/dl-deps.c (_dl_map_object_deps): Don't round alloca size
+	here.
+
+	* scripts/check-local-headers.sh: Ignore libaudit.h.
+
+	* nscd/Makefile (extra-objs): Make recursively expanded.
+
 2011-11-01  Ulrich Drepper  <drepper@gmail.com>
 
 	* sysdeps/x86_64/strcmp.S: Fix test for non-ASCII locales.
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index a1ba3d1d32..565a339331 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -221,15 +221,11 @@ _dl_map_object_deps (struct link_map *map,
       if (l->l_searchlist.r_list == NULL && l->l_initfini == NULL
 	  && l != map && l->l_ldnum > 0)
 	{
-	  /* 16-align so extend_alloca has a chance to re-use the space.
-	     Note that extend_alloca is broken for recent versions of GCC
-	     on x86: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50938  */
-	  size_t new_size
-            = (l->l_ldnum * sizeof (struct link_map *) + 15) & ~15;
+	  size_t new_size = l->l_ldnum * sizeof (struct link_map *);
 
 	  if (new_size > needed_space_bytes)
 	    needed_space
-              = extend_alloca (needed_space, needed_space_bytes, new_size);
+	      = extend_alloca (needed_space, needed_space_bytes, new_size);
 
 	  needed = needed_space;
 	}
diff --git a/include/alloca.h b/include/alloca.h
index 83504135f4..f741d25d54 100644
--- a/include/alloca.h
+++ b/include/alloca.h
@@ -20,9 +20,13 @@ libc_hidden_proto (__libc_alloca_cutoff)
 
 #include <allocalim.h>
 
+#ifndef stackinfo_alloca_round
+# define stackinfo_alloca_round(l) (((l) + 15) & -16)
+#endif
+
 #if _STACK_GROWS_DOWN
 # define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = (newlen);			      \
+  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
 		      char *__newbuf = __alloca (__newlen);		      \
 		      if (__newbuf + __newlen == (char *) buf)		      \
 			len += __newlen;				      \
@@ -31,10 +35,10 @@ libc_hidden_proto (__libc_alloca_cutoff)
 		      __newbuf; })
 #elif _STACK_GROWS_UP
 # define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = (newlen);			      \
+  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
 		      char *__newbuf = __alloca (__newlen);		      \
 		      char *__buf = (buf);				      \
-		      if (__buf + __newlen == __newbuf)			      \
+		      if (__buf + len == __newbuf)			      \
 			{						      \
 			  len += __newlen;				      \
 			  __newbuf = __buf;				      \
diff --git a/nscd/Makefile b/nscd/Makefile
index be0afed2d8..284b4fc4e7 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -43,7 +43,7 @@ others += nscd
 others-pie += nscd
 install-sbin := nscd
 
-extra-objs := $(nscd-modules:=.o)
+extra-objs = $(nscd-modules:=.o)
 
 endif
 
diff --git a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh
index b73078d364..62831ddda1 100755
--- a/scripts/check-local-headers.sh
+++ b/scripts/check-local-headers.sh
@@ -29,7 +29,7 @@ exec ${AWK} -v includedir="$includedir" '
 BEGIN {
   status = 0
   exclude = "^" includedir \
-    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h)"
+    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h|libaudit\\.h)"
 }
 /^[^ ]/ && $1 ~ /.*:/ { obj = $1 }
 {