diff options
39 files changed, 294 insertions, 82 deletions
@@ -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) @@ -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 |
