summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2012-07-30 16:09:11 -0700
committerRoland McGrath <roland@hack.frob.com>2012-07-30 16:34:33 -0700
commitbea9b19322c77265033a068ac60c95a37e798a80 (patch)
treed3fad60d4780a5d86fe5dbedd994c3cd7625890b
parentfc56c5bbc1a0d56b9b49171dd377c73c268ebcfd (diff)
downloadglibc-bea9b19322c77265033a068ac60c95a37e798a80.tar.gz
glibc-bea9b19322c77265033a068ac60c95a37e798a80.tar.xz
glibc-bea9b19322c77265033a068ac60c95a37e798a80.zip
Fix lots of bitrot for stub configurations.
-rw-r--r--ChangeLog83
-rw-r--r--argp/argp-help.c1
-rw-r--r--bits/libc-lock.h6
-rw-r--r--bits/signum.h69
-rw-r--r--bits/stat.h9
-rw-r--r--dirent/opendir.c3
-rw-r--r--elf/rtld.c2
-rw-r--r--iconv/iconv_charmap.c4
-rw-r--r--include/unistd.h2
-rw-r--r--inet/netinet/in.h2
-rw-r--r--intl/loadmsgcat.c7
-rw-r--r--io/fchmodat.c3
-rw-r--r--io/ftw.c8
-rw-r--r--io/xmknod.c8
-rw-r--r--libio/genops.c4
-rw-r--r--nss/makedb.c1
-rw-r--r--nss/nss_db/db-initgroups.c1
-rw-r--r--nss/nss_db/db-netgrp.c3
-rw-r--r--nss/nss_files/files-initgroups.c4
-rw-r--r--nss/nsswitch.c4
-rw-r--r--ports/sysdeps/arm/preconfigure2
-rw-r--r--posix/regex.c5
-rw-r--r--posix/wordexp.c3
-rw-r--r--socket/accept4.c7
-rw-r--r--stdio-common/_i18n_number.h3
-rw-r--r--stdio-common/reg-modifier.c3
-rw-r--r--stdio-common/tmpfile.c4
-rw-r--r--stdio-common/tmpfile64.c31
-rw-r--r--stdio-common/vfscanf.c1
-rw-r--r--sysdeps/generic/ldsodefs.h2
-rw-r--r--sysdeps/generic/sys/param.h75
-rw-r--r--sysdeps/ieee754/k_standard.c2
-rw-r--r--sysdeps/posix/getcwd.c2
-rw-r--r--sysdeps/posix/pwrite64.c3
-rw-r--r--sysdeps/posix/spawni.c3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/tmpfile.c1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/tmpfile64.c1
-rw-r--r--sysdeps/wordsize-64/tmpfile.c3
-rw-r--r--sysdeps/wordsize-64/tmpfile64.c1
39 files changed, 294 insertions, 82 deletions
diff --git a/ChangeLog b/ChangeLog
index ea45adce16..e608ac4c1b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,86 @@
+2012-07-30  Roland McGrath  <roland@hack.frob.com>
+
+	* sysdeps/generic/sys/param.h (MAXSYMLINKS): Define to SYMLOOP_MAX
+	rather than to 1.
+	(NBBY, NGROUPS, CANBSIZ, NCARGS): New macros.
+	(MAXPATHLEN): Removed.
+	(NOGROUP, NODEV): New macros.
+	(setbit, clrbit, isset, isclr): New macros.
+	(howmany, roundup, powerof2): New macros.
+	(DEV_BSIZE): New macro.
+
+	* include/unistd.h: Add attribute_hidden on __libc_pwrite64.
+	* sysdeps/posix/pwrite64.c: Remove libc_hidden_def (__libc_pwrite64).
+
+	* sysdeps/ieee754/k_standard.c (__kernel_standard_l): Conditionalize
+	definition on [!__NO_LONG_DOUBLE_MATH].
+
+	* nss/nsswitch.c (__nss_lookup_function): Conditionalize use of
+	PTR_MANGLE and PTR_DEMANGLE.
+
+	* socket/accept4.c (accept4): Rename to __libc_accept4.
+	Define accept4 as a weak alias.
+
+	* sysdeps/posix/getcwd.c (__getcwd): Conditionalize d_type field use
+	on [_DIRENT_HAVE_D_TYPE].
+	* io/ftw.c (ftw_dir): Likewise.
+
+	* io/xmknod.c (__xmknod): Don't check PATH for being null.
+
+	* libio/genops.c (flush_cleanup): Move inside [_IO_MTSAFE_IO].
+
+	* bits/signum.h (SIGSTOP, SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU, SIGCHLD):
+	Use the BSD numbers rather than the arbitrary ones we had.
+	(SIGBUS, SIGIO, SIGPOLL, SIGPROF, SIGSYS): New macros.
+	(SIGTRAP, SIGURG, SIGUSR1, SIGUSR2, SIGVTALRM): New macros.
+	(SIGXCPU, SIGXFSZ): New macros.
+	(_NSIG): Now 32.
+
+	* elf/rtld.c (_rtld_global): Conditionalize .dl_ns[LM_ID_BASE]
+	initializer on [_LIBC_REENTRANT].
+
+	* iconv/iconv_charmap.c (charmap_conversion): Move ST, ADDR
+	definitions inside [_POSIX_MAPPED_FILES].
+
+	* posix/regex.c: Include <sys/param.h> for MIN/MAX.
+
+	* dirent/opendir.c: Include <fcntl.h>.
+
+	* bits/libc-lock.h (__libc_setspecific): Evaluate arguments.
+	(__libc_getspecific): Likewise.
+	(__libc_key_create): Likewise.
+
+	* stdio-common/tmpfile64.c: Include <fcntl.h> first.
+	[defined O_LARGEFILE && O_LARGEFILE != 0]: Conditionalize on this.
+	* stdio-common/tmpfile.c [!defined O_LARGEFILE || O_LARGEFILE == 0]
+	(tmpfile64): Define as alias.
+	* sysdeps/wordsize-64/tmpfile.c: File removed.
+	* sysdeps/wordsize-64/tmpfile64.c: File removed.
+	* sysdeps/unix/sysv/linux/x86_64/x32/tmpfile64.c: File removed.
+	* sysdeps/unix/sysv/linux/x86_64/x32/tmpfile.c: File removed.
+
+	* stdio-common/vfscanf.c: Include <stdbool.h>.
+	* nss/makedb.c: Likewise.
+	* stdio-common/_i18n_number.h: Likewise.
+	* argp/argp-help.c: Likewise.
+	* posix/wordexp.c: Likewise.
+	* sysdeps/posix/spawni.c: Likewise.
+	* nss/nss_files/files-initgroups.c: Likewise.
+	* stdio-common/reg-modifier.c: Include <stdlib.h>.
+	* nss/nss_files/files-initgroups.c: Likewise.
+	* nss/nss_db/db-netgrp.c: Likewise.
+	* nss/nss_db/db-initgroups.c: Likewise.
+	* io/fchmodat.c: Include <sys/stat.h>.
+
+	* sysdeps/generic/ldsodefs.h (struct rtld_global): Use
+	__rtld_lock_define_recursive macro instead of __rtld_lock_recursive_t.
+
+	* intl/loadmsgcat.c (_nl_load_domain): Don't use MAP_FAILED outside of
+	[HAVE_MMAP].
+
+	* bits/stat.h: Fix inclusion guard to accept _FCNTL_H too.
+	Add multiple inclusion protection.
+
 2012-07-27  David S. Miller  <davem@davemloft.net>
 
 	* sysdeps/sparc/fpu/libm-test-ulps: Update.
diff --git a/argp/argp-help.c b/argp/argp-help.c
index 0af680530b..80c2b7d85c 100644
--- a/argp/argp-help.c
+++ b/argp/argp-help.c
@@ -40,6 +40,7 @@ char *alloca ();
 # endif
 #endif
 
+#include <stdbool.h>
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/bits/libc-lock.h b/bits/libc-lock.h
index d7c49e7bb5..87948d5b50 100644
--- a/bits/libc-lock.h
+++ b/bits/libc-lock.h
@@ -129,12 +129,12 @@
 typedef int __libc_key_t;
 
 /* Create key for thread specific data.  */
-#define __libc_key_create(KEY,DEST) -1
+#define __libc_key_create(KEY,DEST)	((void) (KEY), (void) (DEST), -1)
 
 /* Set thread-specific data associated with KEY to VAL.  */
-#define __libc_setspecific(KEY,VAL) ((void)0)
+#define __libc_setspecific(KEY,VAL)	((void) (KEY), (void) (VAL))
 
 /* Get thread-specific data associated with KEY.  */
-#define __libc_getspecific(KEY) 0
+#define __libc_getspecific(KEY)		((void) (KEY), (void *) 0)
 
 #endif	/* bits/libc-lock.h */
diff --git a/bits/signum.h b/bits/signum.h
index 48bb7b8050..0a0acb23af 100644
--- a/bits/signum.h
+++ b/bits/signum.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 1993, 1996, 1998 Free Software Foundation, Inc.
+/* Signal number constants.  Generic version.
+   Copyright (C) 1991-2012 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
@@ -27,37 +28,49 @@
 # define SIG_HOLD ((__sighandler_t)  2)	/* Add signal to hold mask.  */
 #endif
 
-/* Signals in the 1-15 range are defined with their historical numbers.
-   Signals in the 20-25 range are relatively new and have no ingrained
-   numbers. */
+/* We define here all the signal names listed in POSIX (1003.1-2008).
+   Signals in the 1-15 range are defined with their historical numbers.
+   For other signals specified by POSIX, we use the BSD numbers.  */
 
-/* ANSI signals.  */
-#define	SIGINT	2	/* Interactive attention signal.  */
-#define	SIGILL	4	/* Illegal instruction.  */
-#define	SIGABRT	6	/* Abnormal termination.  */
-#define	SIGFPE	8	/* Erroneous arithmetic operation.  */
-#define	SIGSEGV	11	/* Invalid access to storage.  */
-#define	SIGTERM	15	/* Termination request.  */
+/* ISO C99 signals.  */
+#define	SIGINT		2	/* Interactive attention signal.  */
+#define	SIGILL		4	/* Illegal instruction.  */
+#define	SIGABRT		6	/* Abnormal termination.  */
+#define	SIGFPE		8	/* Erroneous arithmetic operation.  */
+#define	SIGSEGV		11	/* Invalid access to storage.  */
+#define	SIGTERM		15	/* Termination request.  */
 
 /* Historical signals specified by POSIX. */
-#define	SIGHUP	1	/* Hangup.  */
-#define	SIGQUIT	3	/* Quit.  */
-#define	SIGKILL	9	/* Kill (cannot be blocked, caught, or ignored).  */
-#define	SIGPIPE	13	/* Broken pipe.  */
-#define	SIGALRM	14	/* Alarm clock.  */
-
-/* New(er) POSIX signals. */
-#define	SIGSTOP	20	/* Stop (cannot be blocked, caught, or ignored).  */
-#define	SIGCONT	21	/* Continue.  */
-#define	SIGTSTP	22	/* Keyboard stop.  */
-#define	SIGTTIN	23	/* Background read from control terminal.  */
-#define	SIGTTOU	24	/* Background write to control terminal.  */
-#define	SIGCHLD	25	/* Child terminated or stopped.  */
-
-#define	_NSIG	26
+#define	SIGHUP		1	/* Hangup.  */
+#define	SIGQUIT		3	/* Quit.  */
+#define	SIGTRAP		5	/* Trace/breakpoint trap.  */
+#define	SIGKILL		9	/* Killed.  */
+#define SIGBUS		10	/* Bus error.  */
+#define	SIGSYS		12	/* Bad system call.  */
+#define	SIGPIPE		13	/* Broken pipe.  */
+#define	SIGALRM		14	/* Alarm clock.  */
+
+/* New(er) POSIX signals (1003.1-2008).  */
+#define	SIGURG		16 /* High bandwidth data is available at a socket.  */
+#define	SIGSTOP		17	/* Stopped (signal).  */
+#define	SIGTSTP		18	/* Stopped.  */
+#define	SIGCONT		19	/* Continued.  */
+#define	SIGCHLD		20	/* Child terminated or stopped.  */
+#define	SIGTTIN		21	/* Background read from control terminal.  */
+#define	SIGTTOU		22	/* Background write to control terminal.  */
+#define	SIGPOLL 	23	/* Pollable event occurred (System V).  */
+#define	SIGIO		SIGPOLL /* I/O now possible (4.2 BSD).  */
+#define	SIGXCPU		24	/* CPU time limit exceeded.  */
+#define	SIGXFSZ		25	/* File size limit exceeded.  */
+#define	SIGVTALRM	26	/* Virtual timer expired.  */
+#define	SIGPROF		27	/* Profiling timer expired.  */
+#define	SIGUSR1		30	/* User-defined signal 1.  */
+#define	SIGUSR2		31	/* User-defined signal 2.  */
+
+#define	_NSIG		32
 
 /* Archaic names for compatibility. */
-#define	SIGIOT  SIGABRT	/* IOT instruction, abort() on a PDP11 */
-#define	SIGCLD  SIGCHLD	/* Old System V name */
+#define	SIGIOT		SIGABRT	/* IOT instruction, abort() on a PDP11 */
+#define	SIGCLD		SIGCHLD	/* Old System V name */
 
 #endif	/* <signal.h> included.  */
diff --git a/bits/stat.h b/bits/stat.h
index 06b4816c81..b9495c52e2 100644
--- a/bits/stat.h
+++ b/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 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
@@ -15,10 +15,13 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
 # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
 #endif
 
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H	1
+
 /* This structure needs to be defined in accordance with the
    implementation of __stat, __fstat, and __lstat.  */
 
@@ -96,3 +99,5 @@ struct stat64
     __time_t st_ctime;		/* Time of last status change.  */
   };
 #endif
+
+#endif	/* bits/stat.h */
diff --git a/dirent/opendir.c b/dirent/opendir.c
index 7fe4210c8f..ce7084c9c1 100644
--- a/dirent/opendir.c
+++ b/dirent/opendir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -18,6 +18,7 @@
 #include <errno.h>
 #include <stddef.h>
 #include <dirent.h>
+#include <fcntl.h>
 
 
 DIR *
diff --git a/elf/rtld.c b/elf/rtld.c
index 06c4220c03..fc221ace25 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -133,8 +133,10 @@ struct rtld_global _rtld_global =
     ._dl_nns = 1,
     ._dl_ns =
     {
+#ifdef _LIBC_REENTRANT
       [LM_ID_BASE] = { ._ns_unique_sym_table
 		       = { .lock = _RTLD_LOCK_RECURSIVE_INITIALIZER } }
+#endif
     }
   };
 /* If we would use strong_alias here the compiler would see a
diff --git a/iconv/iconv_charmap.c b/iconv/iconv_charmap.c
index df28e1c3a1..1a0de35217 100644
--- a/iconv/iconv_charmap.c
+++ b/iconv/iconv_charmap.c
@@ -154,8 +154,6 @@ charmap_conversion (const char *from_code, struct charmap_t *from_charmap,
   else
     do
       {
-	struct stat st;
-	char *addr;
 	int fd;
 
 	if (verbose)
@@ -176,6 +174,8 @@ charmap_conversion (const char *from_code, struct charmap_t *from_charmap,
 	  }
 
 #ifdef _POSIX_MAPPED_FILES
+	struct stat st;
+	char *addr;
 	/* We have possibilities for reading the input file.  First try
 	   to mmap() it since this will provide the fastest solution.  */
 	if (fstat (fd, &st) == 0
diff --git a/include/unistd.h b/include/unistd.h
index 7971a8a71a..e4bff80fc7 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -44,7 +44,7 @@ extern ssize_t __pwrite64 (int __fd, const void *__buf, size_t __n,
 			   __off64_t __offset);
 libc_hidden_proto (__pwrite64)
 extern ssize_t __libc_pwrite64 (int __fd, const void *__buf, size_t __n,
-				__off64_t __offset);
+				__off64_t __offset) attribute_hidden;
 extern ssize_t __libc_read (int __fd, void *__buf, size_t __n);
 libc_hidden_proto (__libc_read)
 extern ssize_t __libc_write (int __fd, const void *__buf, size_t __n);
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index 3940dc3101..c76ad16b99 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -518,6 +518,8 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
 
 
 #ifdef __USE_GNU
+struct cmsghdr;			/* Forward declaration.  */
+
 /* IPv6 packet information.  */
 struct in6_pktinfo
   {
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
index 4e34a368be..a217fcce41 100644
--- a/intl/loadmsgcat.c
+++ b/intl/loadmsgcat.c
@@ -1,5 +1,5 @@
 /* Load needed message catalogs.
-   Copyright (C) 1995-2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1995-2012 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
@@ -27,6 +27,7 @@
 # include <config.h>
 #endif
 
+#include <assert.h>
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -835,11 +836,13 @@ _nl_load_domain (domain_file, domainbinding)
       fd = -1;
       use_mmap = 1;
     }
+
+  assert (MAP_FAILED == (void *) -1);
 #endif
 
   /* If the data is not yet available (i.e. mmap'ed) we try to load
      it manually.  */
-  if (data == MAP_FAILED)
+  if (data == (struct mo_file_header *) -1)
     {
       size_t to_read;
       char *read_ptr;
diff --git a/io/fchmodat.c b/io/fchmodat.c
index 41b44dece6..d171f363b0 100644
--- a/io/fchmodat.c
+++ b/io/fchmodat.c
@@ -1,5 +1,5 @@
 /* Change the protections of file relative to open directory.  Stub version.
-   Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2006-2012 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
@@ -21,6 +21,7 @@
 #include <stddef.h>
 #include <unistd.h>
 #include <sys/types.h>
+#include <sys/stat.h>
 
 int
 fchmodat (fd, file, mode, flag)
diff --git a/io/ftw.c b/io/ftw.c
index ee3ba88174..7aff7d04c9 100644
--- a/io/ftw.c
+++ b/io/ftw.c
@@ -1,5 +1,5 @@
 /* File tree walker functions.
-   Copyright (C) 1996-2004, 2006-2008, 2010 Free Software Foundation, Inc.
+   Copyright (C) 1996-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -542,7 +542,11 @@ fail:
 
   while (dir.stream != NULL && (d = __readdir64 (dir.stream)) != NULL)
     {
-      result = process_entry (data, &dir, d->d_name, NAMLEN (d), d->d_type);
+      int d_type = DT_UNKNOWN;
+#ifdef _DIRENT_HAVE_D_TYPE
+      d_type = d->d_type;
+#endif
+      result = process_entry (data, &dir, d->d_name, NAMLEN (d), d_type);
       if (result != 0)
 	break;
     }
diff --git a/io/xmknod.c b/io/xmknod.c
index 44cd09a438..78bbf5a1a8 100644
--- a/io/xmknod.c
+++ b/io/xmknod.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1995-1997,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -31,12 +31,6 @@ __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
       return -1;
     }
 
-  if (path == NULL)
-    {
-      __set_errno (EINVAL);
-      return -1;
-    }
-
   __set_errno (ENOSYS);
   return -1;
 }
diff --git a/libio/genops.c b/libio/genops.c
index b7dd863626..c8297ff128 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -45,15 +45,15 @@ static int _IO_list_all_stamp;
 
 static _IO_FILE *run_fp;
 
+#ifdef _IO_MTSAFE_IO
 static void
 flush_cleanup (void *not_used)
 {
   if (run_fp != NULL)
     _IO_funlockfile (run_fp);
-#ifdef _IO_MTSAFE_IO
   _IO_lock_unlock (list_all_lock);
-#endif
 }
+#endif
 
 void
 _IO_un_link (fp)
diff --git a/nss/makedb.c b/nss/makedb.c
index 5890c054f0..ccaabdff95 100644
--- a/nss/makedb.c
+++ b/nss/makedb.c
@@ -27,6 +27,7 @@
 #include <libintl.h>
 #include <locale.h>
 #include <search.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/nss/nss_db/db-initgroups.c b/nss/nss_db/db-initgroups.c
index 16eb8e2d82..2e2e3f284b 100644
--- a/nss/nss_db/db-initgroups.c
+++ b/nss/nss_db/db-initgroups.c
@@ -22,6 +22,7 @@
 #include <grp.h>
 #include <limits.h>
 #include <paths.h>
+#include <stdlib.h>
 #include <string.h>
 #include <sys/param.h>
 
diff --git a/nss/nss_db/db-netgrp.c b/nss/nss_db/db-netgrp.c
index 37705b05a1..3c18ea8305 100644
--- a/nss/nss_db/db-netgrp.c
+++ b/nss/nss_db/db-netgrp.c
@@ -1,5 +1,5 @@
 /* Netgroup file parser in nss_db modules.
-   Copyright (C) 1996, 1997, 1999, 2000, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1996-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <paths.h>
+#include <stdlib.h>
 
 #include "nsswitch.h"
 #include "nss_db.h"
diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c
index c8ce0656af..a5a2164eb3 100644
--- a/nss/nss_files/files-initgroups.c
+++ b/nss/nss_files/files-initgroups.c
@@ -1,5 +1,5 @@
 /* Initgroups handling in nss_files module.
-   Copyright (C) 2011 Free Software Foundation, Inc.
+   Copyright (C) 2011-2012 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
@@ -23,6 +23,8 @@
 #include <stdio_ext.h>
 #include <string.h>
 #include <sys/param.h>
+#include <stdbool.h>
+#include <stdlib.h>
 
 enum nss_status
 _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
index 464f478d2b..a2628c747c 100644
--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -415,7 +415,9 @@ __nss_lookup_function (service_user *ni, const char *fct_name)
     {
       /* The search found an existing structure in the tree.  */
       result = ((known_function *) *found)->fct_ptr;
+#ifdef PTR_DEMANGLE
       PTR_DEMANGLE (result);
+#endif
     }
   else
     {
@@ -503,7 +505,9 @@ __nss_lookup_function (service_user *ni, const char *fct_name)
 	  /* Remember function pointer for later calls.  Even if null, we
 	     record it so a second try needn't search the library again.  */
 	  known->fct_ptr = result;
+#ifdef PTR_MANGLE
 	  PTR_MANGLE (known->fct_ptr);
+#endif
 	}
     }
 
diff --git a/ports/sysdeps/arm/preconfigure b/ports/sysdeps/arm/preconfigure
index d98c167a95..20f6d91a12 100644
--- a/ports/sysdeps/arm/preconfigure
+++ b/ports/sysdeps/arm/preconfigure
@@ -41,7 +41,7 @@ arm*)
 		fi
 		CFLAGS="$CFLAGS -fno-unwind-tables"
 		;;
-	*)
+	linux*)
 		echo "Old ABI no longer supported" 2>&1
 		exit 1
 		;;
diff --git a/posix/regex.c b/posix/regex.c
index 6d0a8976ac..3ab9a6adcb 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -1,5 +1,5 @@
 /* Extended regular expression matching and search library.
-   Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
 
@@ -56,6 +56,9 @@
    #undefs RE_DUP_MAX and sets it to the right value.  */
 #include <limits.h>
 
+/* This header defines the MIN and MAX macros.  */
+#include <sys/param.h>
+
 #include <regex.h>
 #include "regex_internal.h"
 
diff --git a/posix/wordexp.c b/posix/wordexp.c
index 5ace13720b..d5a282049b 100644
--- a/posix/wordexp.c
+++ b/posix/wordexp.c
@@ -1,5 +1,5 @@
 /* POSIX.2 wordexp implementation.
-   Copyright (C) 1997-2003,2005,2006,2008,2011 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Tim Waugh <tim@cyberelk.demon.co.uk>.
 
@@ -27,6 +27,7 @@
 #include <paths.h>
 #include <pwd.h>
 #include <signal.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/socket/accept4.c b/socket/accept4.c
index 7c7e2dd9a4..7ad1259680 100644
--- a/socket/accept4.c
+++ b/socket/accept4.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2012 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
@@ -25,7 +25,7 @@
    new socket's descriptor, or -1 for errors.  The operation can be influenced
    by the FLAGS parameter.  */
 int
-accept4 (fd, addr, addr_len, flags)
+__libc_accept4 (fd, addr, addr_len, flags)
      int fd;
      __SOCKADDR_ARG addr;
      socklen_t *addr_len;
@@ -34,7 +34,8 @@ accept4 (fd, addr, addr_len, flags)
   __set_errno (ENOSYS);
   return -1;
 }
-libc_hidden_def (accept4)
+libc_hidden_def (__libc_accept4)
+weak_alias (__libc_accept4, accept4)
 
 
 stub_warning (accept4)
diff --git a/stdio-common/_i18n_number.h b/stdio-common/_i18n_number.h
index f18b152852..17d99112fb 100644
--- a/stdio-common/_i18n_number.h
+++ b/stdio-common/_i18n_number.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2004, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 2000.
 
@@ -16,6 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <stdbool.h>
 #include <wchar.h>
 #include <wctype.h>
 
diff --git a/stdio-common/reg-modifier.c b/stdio-common/reg-modifier.c
index dcfd3a812a..697a408f83 100644
--- a/stdio-common/reg-modifier.c
+++ b/stdio-common/reg-modifier.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2012 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
@@ -18,6 +18,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <printf.h>
+#include <stdlib.h>
 #include <wchar.h>
 #include <bits/libc-lock.h>
 
diff --git a/stdio-common/tmpfile.c b/stdio-common/tmpfile.c
index c6da9acb0b..6a4d48e7be 100644
--- a/stdio-common/tmpfile.c
+++ b/stdio-common/tmpfile.c
@@ -58,6 +58,10 @@ tmpfile (void)
   return f;
 }
 
+#if !defined O_LARGEFILE || O_LARGEFILE == 0
+weak_alias (__new_tmpfile, tmpfile64)
+#endif
+
 #ifndef FLAGS /* Not for tmpfile64.  */
 # undef tmpfile
 # include <shlib-compat.h>
diff --git a/stdio-common/tmpfile64.c b/stdio-common/tmpfile64.c
index ead3f50fba..e8ce8930c1 100644
--- a/stdio-common/tmpfile64.c
+++ b/stdio-common/tmpfile64.c
@@ -1,3 +1,28 @@
-#define FLAGS	O_LARGEFILE
-#define tmpfile	tmpfile64
-#include <tmpfile.c>
+/* Open a stdio stream on an anonymous, large temporary file.  Generic version.
+   Copyright (C) 2012 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <fcntl.h>
+
+/* If there is no O_LARGEFILE, then the plain tmpfile definition
+   does the job and it gets tmpfile64 as an alias.  */
+
+#if defined O_LARGEFILE && O_LARGEFILE != 0
+# define FLAGS		O_LARGEFILE
+# define tmpfile	tmpfile64
+# include <tmpfile.c>
+#endif
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 23a8ac7694..43f25caa6f 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -20,6 +20,7 @@
 #include <limits.h>
 #include <ctype.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 39c633904a..72048eab7f 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -272,7 +272,7 @@ struct rtld_global
     /* Search table for unique objects.  */
     struct unique_sym_table
     {
-      __rtld_lock_recursive_t lock;
+      __rtld_lock_define_recursive (, lock)
       struct unique_sym
       {
 	uint32_t hashval;
diff --git a/sysdeps/generic/sys/param.h b/sysdeps/generic/sys/param.h
index 0e10a0ea94..f6e9f431d5 100644
--- a/sysdeps/generic/sys/param.h
+++ b/sysdeps/generic/sys/param.h
@@ -1,15 +1,74 @@
-/* This file should contain various parameter macros appropriate for the
-   machine and operating system.  There is no standard set of macros; this
-   file is just for compatibility with programs written for Unix that
-   expect it to define things.  On Unix systems that do not have their own
-   sysdep version of this file, it is generated at build time by examining
-   the installed headers on the system.  */
+/* Compatibility header for old-style Unix parameters and limits.  Stub version.
+   Copyright (C) 2012 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_PARAM_H
+
+#define _SYS_PARAM_H    1
+#include <features.h>
+
+#define __need_NULL
+#include <stddef.h>
+
+#include <sys/types.h>
+#include <errno.h>
+#include <signal.h>
+#include <endian.h>
 #include <limits.h>
 
-#define MAXSYMLINKS  1
-#define MAXPATHLEN   256
+
+/* BSD names for some <limits.h> values.  We do not define the BSD names
+   for the values which are not statically limited, such as NOFILE.  */
+
+#define NBBY            CHAR_BIT
+#define NGROUPS         NGROUPS_MAX
+#define MAXSYMLINKS     SYMLOOP_MAX
+#define CANBSIZ         MAX_CANON /* XXX ? */
+
+/* ARG_MAX is unlimited, but we define NCARGS for BSD programs that want to
+   compare against some fixed limit.  */
+#define NCARGS          INT_MAX
+
+
+/* Magical constants.  */
+#define NOGROUP 65535           /* Marker for empty group set member.  */
+#define NODEV   ((dev_t) -1)    /* Non-existent device.  */
+
+
+/* Bit map related macros.  */
+#define setbit(a,i)     ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
+#define clrbit(a,i)     ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
+#define isset(a,i)      ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
+#define isclr(a,i)      (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
+
+/* Macros for counting and rounding.  */
+#ifndef howmany
+# define howmany(x, y)  (((x)+((y)-1))/(y))
+#endif
+#define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
+#define powerof2(x)     ((((x)-1)&(x))==0)
 
 /* Macros for min/max.  */
 #define MIN(a,b) (((a)<(b))?(a):(b))
 #define MAX(a,b) (((a)>(b))?(a):(b))
+
+
+/* Unit of `st_blocks'.  */
+#define DEV_BSIZE       512
+
+
+#endif   /* sys/param.h */
diff --git a/sysdeps/ieee754/k_standard.c b/sysdeps/ieee754/k_standard.c
index 4e65bb16ce..cd3123046b 100644
--- a/sysdeps/ieee754/k_standard.c
+++ b/sysdeps/ieee754/k_standard.c
@@ -1003,6 +1003,7 @@ __kernel_standard_f(float x, float y, int type)
 	return __kernel_standard(x, y, type);
 }
 
+#ifndef __NO_LONG_DOUBLE_MATH
 long double
 __kernel_standard_l (long double x, long double y, int type)
 {
@@ -1082,3 +1083,4 @@ __kernel_standard_l (long double x, long double y, int type)
       return __kernel_standard (dx, dy, type);
     }
 }
+#endif
diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c
index 1dc45e8ee2..911cbfab5d 100644
--- a/sysdeps/posix/getcwd.c
+++ b/sysdeps/posix/getcwd.c
@@ -401,8 +401,10 @@ __getcwd (buf, size)
 	      goto lose;
 	    }
 
+#ifdef _DIRENT_HAVE_D_TYPE
 	  if (d->d_type != DT_DIR && d->d_type != DT_UNKNOWN)
 	    continue;
+#endif
 	  if (d->d_name[0] == '.'
 	      && (d->d_name[1] == '\0'
 		  || (d->d_name[1] == '.' && d->d_name[2] == '\0')))
diff --git a/sysdeps/posix/pwrite64.c b/sysdeps/posix/pwrite64.c
index d9ec10f38d..61c193bea3 100644
--- a/sysdeps/posix/pwrite64.c
+++ b/sysdeps/posix/pwrite64.c
@@ -1,6 +1,6 @@
 /* Write block to given position in file without changing file pointer.
    POSIX version.
-   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -56,7 +56,6 @@ __libc_pwrite64 (int fd, const void *buf, size_t nbyte, off64_t offset)
   return result;
 }
 #ifndef __libc_pwrite64
-libc_hidden_def (__libc_pwrite64)
 weak_alias (__libc_pwrite64, __pwrite64)
 libc_hidden_weak (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
diff --git a/sysdeps/posix/spawni.c b/sysdeps/posix/spawni.c
index abbf956226..2d3ae941dd 100644
--- a/sysdeps/posix/spawni.c
+++ b/sysdeps/posix/spawni.c
@@ -1,5 +1,5 @@
 /* Guts of POSIX spawn interface.  Generic POSIX.1 version.
-   Copyright (C) 2000-2005, 2006, 2011, 2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2012 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
@@ -20,6 +20,7 @@
 #include <fcntl.h>
 #include <paths.h>
 #include <spawn.h>
+#include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile.c b/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile.c
deleted file mode 100644
index f24f361bb6..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/tmpfile.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile64.c b/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile64.c
deleted file mode 100644
index 55feef2a64..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/x32/tmpfile64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/tmpfile64.c>
diff --git a/sysdeps/wordsize-64/tmpfile.c b/sysdeps/wordsize-64/tmpfile.c
deleted file mode 100644
index 449a222d98..0000000000
--- a/sysdeps/wordsize-64/tmpfile.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "../../stdio-common/tmpfile.c"
-
-weak_alias (__new_tmpfile, tmpfile64)
diff --git a/sysdeps/wordsize-64/tmpfile64.c b/sysdeps/wordsize-64/tmpfile64.c
deleted file mode 100644
index 5c124c249b..0000000000
--- a/sysdeps/wordsize-64/tmpfile64.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in tmpfile.c.  */