summaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2005-11-18 03:14:53 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2005-11-18 03:14:53 +0000
commitf87c7bd4133a2b3ad9b45c32fab33d167a348c4b (patch)
tree7259957b97704c375b3d8ab42f8da3d52665845e /libc
parent164a928b77f596b6617a4bbf43a2c06bc35a5602 (diff)
downloaduClibc-alpine-f87c7bd4133a2b3ad9b45c32fab33d167a348c4b.tar.bz2
uClibc-alpine-f87c7bd4133a2b3ad9b45c32fab33d167a348c4b.tar.xz
Massive merge from trunk.
Diffstat (limited to 'libc')
-rw-r--r--libc/Makefile.in63
-rw-r--r--libc/inet/rpc/getrpcent.c20
-rw-r--r--libc/inet/rpc/rexec.c2
-rw-r--r--libc/inet/rpc/sa_len.c2
-rw-r--r--libc/misc/dirent/dirstream.h4
-rw-r--r--libc/misc/glob/glob.c2
-rw-r--r--libc/misc/internals/Makefile.in9
-rw-r--r--libc/misc/pthread/no-tsd.c1
-rw-r--r--libc/misc/pthread/weaks.c1
-rw-r--r--libc/misc/syslog/syslog.c2
-rw-r--r--libc/misc/sysvipc/ipc.h2
-rw-r--r--libc/misc/time/time.c2
-rw-r--r--libc/misc/ttyent/getttyent.c6
-rw-r--r--libc/signal/killpg.c29
-rw-r--r--libc/signal/raise.c5
-rw-r--r--libc/signal/sigaction.c124
-rw-r--r--libc/signal/sigaddset.c31
-rw-r--r--libc/signal/sigandset.c30
-rw-r--r--libc/signal/sigblock.c4
-rw-r--r--libc/signal/sigdelset.c31
-rw-r--r--libc/signal/sigempty.c32
-rw-r--r--libc/signal/sigfillset.c40
-rw-r--r--libc/signal/siggetmask.c25
-rw-r--r--libc/signal/sighold.c42
-rw-r--r--libc/signal/sigignore.c37
-rw-r--r--libc/signal/sigintr.c53
-rw-r--r--libc/signal/sigisempty.c26
-rw-r--r--libc/signal/sigismem.c31
-rw-r--r--libc/signal/signal.c54
-rw-r--r--libc/signal/sigorset.c30
-rw-r--r--libc/signal/sigpause.c19
-rw-r--r--libc/signal/sigrelse.c42
-rw-r--r--libc/signal/sigset.c93
-rw-r--r--libc/signal/sigsetmask.c18
-rw-r--r--libc/signal/sigsetops.h17
-rw-r--r--libc/signal/sigwait.c42
-rw-r--r--libc/signal/sysv_signal.c52
-rw-r--r--libc/stdio/_READ.c2
-rw-r--r--libc/stdio/_WRITE.c2
-rw-r--r--libc/stdio/_adjust_pos.c2
-rw-r--r--libc/stdio/_cs_funcs.c14
-rw-r--r--libc/stdio/_fopen.c2
-rw-r--r--libc/stdio/_fpmaxtostr.c4
-rw-r--r--libc/stdio/_fwrite.c2
-rw-r--r--libc/stdio/_load_inttype.c2
-rw-r--r--libc/stdio/_rfill.c2
-rw-r--r--libc/stdio/_stdio.h38
-rw-r--r--libc/stdio/_store_inttype.c2
-rw-r--r--libc/stdio/_trans2r.c4
-rw-r--r--libc/stdio/_trans2w.c4
-rw-r--r--libc/stdio/_wcommit.c2
-rw-r--r--libc/stdio/old_vfprintf.c6
-rw-r--r--libc/stdio/scanf.c21
-rw-r--r--libc/stdio/vfprintf.c23
-rw-r--r--libc/stdlib/abort.c3
-rw-r--r--libc/string/generic/memchr.c4
-rw-r--r--libc/string/generic/memcmp.c13
-rw-r--r--libc/string/generic/memcpy.c4
-rw-r--r--libc/string/generic/memmem.c4
-rw-r--r--libc/string/generic/memmove.c6
-rw-r--r--libc/string/generic/mempcpy.c6
-rw-r--r--libc/string/generic/memrchr.c4
-rw-r--r--libc/string/generic/memset.c8
-rw-r--r--libc/string/generic/rawmemchr.c4
-rw-r--r--libc/string/generic/strcat.c7
-rw-r--r--libc/string/generic/strchr.c12
-rw-r--r--libc/string/generic/strchrnul.c5
-rw-r--r--libc/string/generic/strcmp.c10
-rw-r--r--libc/string/generic/strcpy.c7
-rw-r--r--libc/string/generic/strcspn.c7
-rw-r--r--libc/string/generic/strlen.c6
-rw-r--r--libc/string/generic/strncat.c8
-rw-r--r--libc/string/generic/strncmp.c8
-rw-r--r--libc/string/generic/strncpy.c8
-rw-r--r--libc/string/generic/strnlen.c6
-rw-r--r--libc/string/generic/strrchr.c8
-rw-r--r--libc/string/generic/strsep.c4
-rw-r--r--libc/string/generic/strspn.c7
-rw-r--r--libc/string/generic/strstr.c7
-rw-r--r--libc/string/generic/strtok_r.c7
-rw-r--r--libc/sysdeps/linux/alpha/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/bfin/bits/setjmp.h22
-rw-r--r--libc/sysdeps/linux/common/__syscall_fcntl.c10
-rw-r--r--libc/sysdeps/linux/common/__syscall_fcntl64.c6
-rw-r--r--libc/sysdeps/linux/common/_exit.c6
-rw-r--r--libc/sysdeps/linux/common/bits/byteswap.h23
-rw-r--r--libc/sysdeps/linux/common/bits/confname.h91
-rw-r--r--libc/sysdeps/linux/common/bits/environments.h5
-rw-r--r--libc/sysdeps/linux/common/bits/getopt.h39
-rw-r--r--libc/sysdeps/linux/common/bits/in.h39
-rw-r--r--libc/sysdeps/linux/common/bits/ioctls.h3
-rw-r--r--libc/sysdeps/linux/common/bits/kernel_stat.h59
-rw-r--r--libc/sysdeps/linux/common/bits/local_lim.h34
-rw-r--r--libc/sysdeps/linux/common/bits/msq.h1
-rw-r--r--libc/sysdeps/linux/common/bits/posix_opt.h76
-rw-r--r--libc/sysdeps/linux/common/bits/resource.h32
-rw-r--r--libc/sysdeps/linux/common/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/common/bits/sigthread.h28
-rw-r--r--libc/sysdeps/linux/common/bits/socket.h5
-rw-r--r--libc/sysdeps/linux/common/bits/statvfs.h18
-rw-r--r--libc/sysdeps/linux/common/bits/termios.h7
-rw-r--r--libc/sysdeps/linux/common/bits/types.h39
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_ctype.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_fpmax.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_locale.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_page.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_pthread.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_stdio.h21
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_touplow.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_uwchar.h15
-rw-r--r--libc/sysdeps/linux/common/bits/uClibc_va_copy.h17
-rw-r--r--libc/sysdeps/linux/common/bits/waitflags.h10
-rw-r--r--libc/sysdeps/linux/common/dl-osinfo.h3
-rw-r--r--libc/sysdeps/linux/common/fork.c2
-rw-r--r--libc/sysdeps/linux/common/getcwd.c2
-rw-r--r--libc/sysdeps/linux/common/getdents.c2
-rw-r--r--libc/sysdeps/linux/common/getdents64.c6
-rw-r--r--libc/sysdeps/linux/common/getpgrp.c3
-rw-r--r--libc/sysdeps/linux/common/open64.c2
-rw-r--r--libc/sysdeps/linux/common/ssp-local.c4
-rw-r--r--libc/sysdeps/linux/common/ssp.c8
-rw-r--r--libc/sysdeps/linux/common/wait4.c5
-rw-r--r--libc/sysdeps/linux/cris/bits/setjmp.h22
-rw-r--r--libc/sysdeps/linux/e1/bits/setjmp.h6
-rw-r--r--libc/sysdeps/linux/frv/bits/setjmp.h25
-rw-r--r--libc/sysdeps/linux/h8300/bits/setjmp.h7
-rw-r--r--libc/sysdeps/linux/i386/bits/setjmp.h8
-rw-r--r--libc/sysdeps/linux/i960/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/m68k/bits/setjmp.h27
-rw-r--r--libc/sysdeps/linux/microblaze/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/mips/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/nios/bits/setjmp.h22
-rw-r--r--libc/sysdeps/linux/nios2/bits/setjmp.h7
-rw-r--r--libc/sysdeps/linux/powerpc/bits/setjmp.h47
-rw-r--r--libc/sysdeps/linux/sh/bits/setjmp.h4
-rw-r--r--libc/sysdeps/linux/sh64/bits/setjmp.h22
-rw-r--r--libc/sysdeps/linux/sparc/bits/setjmp.h10
-rw-r--r--libc/sysdeps/linux/v850/bits/setjmp.h9
-rw-r--r--libc/sysdeps/linux/x86_64/bits/setjmp.h4
140 files changed, 1319 insertions, 1022 deletions
diff --git a/libc/Makefile.in b/libc/Makefile.in
index 1e0b58437..50201d4fd 100644
--- a/libc/Makefile.in
+++ b/libc/Makefile.in
@@ -6,17 +6,22 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-DOMULTI=n
+# Check if the target architecture has a version script for
+# libc, and if so, include it when linking.
+VERSION_SCRIPT := $(wildcard $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map)
+ifneq ($(VERSION_SCRIPT),)
+VERSION_SCRIPT := --version-script $(VERSION_SCRIPT)
+endif
-# we have SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION) defined in Rules.mak
-LIB_NAME:=libc
+LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -init __uClibc_init
-libc_DIR:=$(top_srcdir)libc
-libc_OUT:=$(top_builddir)libc
+LIBS-libc.so := $(interp) $(top_builddir)lib/$(UCLIBC_LDSO)
-libc_FULL_NAME:=libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+# we have SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION) defined in Rules.mak
+libc_FULL_NAME := libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-#DIRS:=misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd
+libc_DIR := $(top_srcdir)libc
+libc_OUT := $(top_builddir)libc
# this comes first, so duplicate removal works correctly
include $(libc_DIR)/sysdeps/Makefile.in
@@ -31,17 +36,41 @@ include $(libc_DIR)/signal/Makefile.in
include $(libc_DIR)/stdlib/Makefile.in
include $(libc_DIR)/unistd/Makefile.in
-# Check if the target architecture has a version script for
-# libc, and if so, include it when linking.
-VERSION_SCRIPT := $(wildcard $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map)
-ifneq ($(VERSION_SCRIPT),)
-VERSION_SCRIPT := --version-script $(VERSION_SCRIPT)
+libc-a-y += $(libc-static-y)
+libc-so-y += $(libc-shared-y)
+
+libc-nomulti-y += $(libc-shared-y)
+
+lib-a-y += $(top_builddir)lib/libc.a crt-y
+lib-so-y += libc-y $(top_builddir)lib/$(NONSHARED_LIBNAME) crt-y
+objclean-y += libc_clean
+
+$(top_builddir)lib/libc.so: $(libc_OUT)/libc_so.a pre-y
+ $(call link.so,$(libc_FULL_NAME),$(MAJOR_VERSION))
+ $(Q)$(RM) $@
+ $(Q)echo "/* GNU ld script" > $@
+ $(Q)echo " * Use the shared library, but some functions are only in" >> $@
+ $(Q)echo " * the static library, so try that secondarily. */" >> $@
+ifeq ($(COMPAT_ATEXIT),y)
+ $(Q)echo "GROUP ( $(NONSHARED_LIBNAME) $(SHARED_MAJORNAME) $(ASNEEDED) )" >> $@
+else
+ $(Q)echo "GROUP ( $(SHARED_MAJORNAME) $(NONSHARED_LIBNAME) $(ASNEEDED) )" >> $@
endif
-EXTRA_LINK_OPTS:=$(VERSION_SCRIPT) -init __uClibc_init
-EXTRA_LINK_LIBS:=$(libc_OUT)/misc/internals/interp.os $(top_builddir)lib/$(UCLIBC_LDSO) $(LIBGCC) # $(LDADD_LIBFLOAT)
+$(libc_OUT)/libc_so.a: $(libc-so-y)
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
-objclean-y+=libc_clean
+ifeq ($(DOPIC),y)
+$(top_builddir)lib/libc.a: $(libc-a-y:.o=.os)
+else
+$(top_builddir)lib/libc.a: $(libc-a-y)
+endif
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
-lib-a-y+=$(top_builddir)lib/libc.a crt-y
-lib-so-y+=$(top_builddir)lib/libc.so $(top_builddir)lib/$(NONSHARED_LIBNAME) crt-y other-y
+libc_clean:
+ $(RM) $(libc_OUT)/*.{o,os,a}
diff --git a/libc/inet/rpc/getrpcent.c b/libc/inet/rpc/getrpcent.c
index b796d856d..56fbbbe45 100644
--- a/libc/inet/rpc/getrpcent.c
+++ b/libc/inet/rpc/getrpcent.c
@@ -166,8 +166,8 @@ static char *firstwhite(char *s)
{
char *s1, *s2;
- s1 = index(s, ' ');
- s2 = index(s, '\t');
+ s1 = strchr(s, ' ');
+ s2 = strchr(s, '\t');
if (s1) {
if (s2)
return (s1 < s2) ? s1 : s2;
@@ -187,9 +187,9 @@ static struct rpcent *interpret(register struct rpcdata *d)
d->line[strlen(p)-1] = '\n';
if (*p == '#')
return __get_next_rpcent(d);
- cp = index(p, '#');
+ cp = strchr(p, '#');
if (cp == NULL) {
- cp = index(p, '\n');
+ cp = strchr(p, '\n');
if (cp == NULL)
return __get_next_rpcent(d);
}
@@ -200,9 +200,9 @@ static struct rpcent *interpret(register struct rpcdata *d)
else
return __get_next_rpcent(d);
#else
- cp = index(p, ' ');
+ cp = strchr(p, ' ');
if (cp == NULL) {
- cp = index(p, '\t');
+ cp = strchr(p, '\t');
if (cp == NULL)
return __get_next_rpcent(d);
}
@@ -218,11 +218,11 @@ static struct rpcent *interpret(register struct rpcdata *d)
if ((cp = firstwhite(cp)))
*cp++ = '\0';
#else
- cp = index(p, ' ');
+ cp = strchr(p, ' ');
if (cp != NULL)
*cp++ = '\0';
else {
- cp = index(p, '\t');
+ cp = strchr(p, '\t');
if (cp != NULL)
*cp++ = '\0';
}
@@ -238,11 +238,11 @@ static struct rpcent *interpret(register struct rpcdata *d)
if ((cp = firstwhite(cp)))
*cp++ = '\0';
#else
- cp = index(p, ' ');
+ cp = strchr(p, ' ');
if (cp != NULL)
*cp++ = '\0';
else {
- cp = index(p, '\t');
+ cp = strchr(p, '\t');
if (cp != NULL)
*cp++ = '\0';
}
diff --git a/libc/inet/rpc/rexec.c b/libc/inet/rpc/rexec.c
index 7af948991..2c280d922 100644
--- a/libc/inet/rpc/rexec.c
+++ b/libc/inet/rpc/rexec.c
@@ -43,7 +43,7 @@
#include <unistd.h>
#define SA_LEN(_x) __libc_sa_len((_x)->sa_family)
-extern int __libc_sa_len (sa_family_t __af) __THROW;
+extern int __libc_sa_len (sa_family_t __af) __THROW attribute_hidden;
int rexecoptions;
char ahostbuf[NI_MAXHOST];
diff --git a/libc/inet/rpc/sa_len.c b/libc/inet/rpc/sa_len.c
index 50b4a7b12..21a6417af 100644
--- a/libc/inet/rpc/sa_len.c
+++ b/libc/inet/rpc/sa_len.c
@@ -31,7 +31,7 @@
#include <netrose/rose.h>
#endif
-int __libc_sa_len (sa_family_t af)
+int attribute_hidden __libc_sa_len (sa_family_t af)
{
switch (af)
{
diff --git a/libc/misc/dirent/dirstream.h b/libc/misc/dirent/dirstream.h
index 2dd0264fc..a90ca6312 100644
--- a/libc/misc/dirent/dirstream.h
+++ b/libc/misc/dirent/dirstream.h
@@ -71,9 +71,9 @@ struct __dirstream {
}; /* stream data from opendir() */
-extern int __getdents(unsigned int fd, struct dirent *dirp, unsigned int count);
+extern ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
#ifdef __UCLIBC_HAS_LFS__
-extern int __getdents64 (unsigned int fd, struct dirent64 *dirp, unsigned int count);
+extern ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
#endif
#endif /* dirent.h */
diff --git a/libc/misc/glob/glob.c b/libc/misc/glob/glob.c
index a93cf0ab4..0d788df53 100644
--- a/libc/misc/glob/glob.c
+++ b/libc/misc/glob/glob.c
@@ -426,7 +426,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
if (! (d->d_ino != 0))
continue;
name = d->d_name;
-#ifdef HAVE_D_NAMLEN
+#ifdef _DIRENT_HAVE_D_NAMLEN
len = d->d_namlen;
#else
len = 0;
diff --git a/libc/misc/internals/Makefile.in b/libc/misc/internals/Makefile.in
index 2916475ec..bfae764e4 100644
--- a/libc/misc/internals/Makefile.in
+++ b/libc/misc/internals/Makefile.in
@@ -6,7 +6,7 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CFLAGS-__uClibc_main.c=$(SSP_DISABLE_FLAGS)
+CFLAGS-__uClibc_main.c:=$(SSP_DISABLE_FLAGS)
CSRC:=tempname.c errno.c __errno_location.c __h_errno_location.c
@@ -16,9 +16,7 @@ MISC_INTERNALS_OUT:=$(top_builddir)libc/misc/internals
MISC_INTERNALS_SRC:=$(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC))
MISC_INTERNALS_OBJ:=$(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC))
-STATIC_SRC:=__uClibc_main.c
-
-$(MISC_INTERNALS_OUT)/interp.c: $(MISC_INTERNALS_DIR)/Makefile.in
+$(MISC_INTERNALS_OUT)/interp.c: headers_root
$(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@
$(Q)echo "#include <features.h>" >> $@
$(Q)echo "#ifdef __HAVE_ELF__" >> $@
@@ -29,8 +27,7 @@ $(MISC_INTERNALS_OUT)/interp.c: $(MISC_INTERNALS_DIR)/Makefile.in
libc-a-y+=$(MISC_INTERNALS_OBJ)
libc-so-y+=$(MISC_INTERNALS_OBJ:.o=.os)
libc-shared-y+=$(MISC_INTERNALS_OUT)/__uClibc_main.oS
-libc-static-y+=$(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(STATIC_SRC))
-other-y+=$(MISC_INTERNALS_OUT)/interp.os
+libc-static-y+=$(MISC_INTERNALS_OUT)/__uClibc_main.o
libc-multi-y+=$(MISC_INTERNALS_SRC)
diff --git a/libc/misc/pthread/no-tsd.c b/libc/misc/pthread/no-tsd.c
index ef79cb832..1fabaae68 100644
--- a/libc/misc/pthread/no-tsd.c
+++ b/libc/misc/pthread/no-tsd.c
@@ -17,6 +17,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#define _GNU_SOURCE
#include <bits/libc-tsd.h>
/* This file provides uinitialized (common) definitions for the
diff --git a/libc/misc/pthread/weaks.c b/libc/misc/pthread/weaks.c
index 6767cfffb..b1e067eb4 100644
--- a/libc/misc/pthread/weaks.c
+++ b/libc/misc/pthread/weaks.c
@@ -17,6 +17,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#define _GNU_SOURCE
#include <errno.h>
#include <limits.h>
#include <stdlib.h>
diff --git a/libc/misc/syslog/syslog.c b/libc/misc/syslog/syslog.c
index 2b478e13d..704336006 100644
--- a/libc/misc/syslog/syslog.c
+++ b/libc/misc/syslog/syslog.c
@@ -254,7 +254,7 @@ vsyslog( int pri, const char *fmt, va_list ap )
/* should mode be `O_WRONLY | O_NOCTTY' ? -- Uli */
if (LogStat & LOG_CONS &&
(fd = open(_PATH_CONSOLE, O_WRONLY, 0)) >= 0) {
- p = index(tbuf, '>') + 1;
+ p = strchr(tbuf, '>') + 1;
last_chr[0] = '\r';
last_chr[1] = '\n';
(void)write(fd, p, last_chr - p + 2);
diff --git a/libc/misc/sysvipc/ipc.h b/libc/misc/sysvipc/ipc.h
index a5d443543..c1d4e76c5 100644
--- a/libc/misc/sysvipc/ipc.h
+++ b/libc/misc/sysvipc/ipc.h
@@ -7,7 +7,7 @@
#ifdef __NR_ipc
/* The actual system call: all functions are multiplexed by this. */
-extern int __syscall_ipc __P((int __call, int __first, int __second,
+extern int __syscall_ipc __P((unsigned int __call, int __first, int __second,
int __third, void *__ptr));
diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c
index c315baddc..21c4bb96b 100644
--- a/libc/misc/time/time.c
+++ b/libc/misc/time/time.c
@@ -1239,9 +1239,7 @@ __XL_ALIAS(strftime)
/**********************************************************************/
#if defined(L_strptime) || defined(L_strptime_l)
-#if defined(L_strptime) || defined(L_strptime_l)
#define ISDIGIT(C) __isdigit_char((C))
-#endif
#ifdef __UCLIBC_DO_XLOCALE
#define ISSPACE(C) isspace_l((C), locale_arg)
diff --git a/libc/misc/ttyent/getttyent.c b/libc/misc/ttyent/getttyent.c
index 6e2fbd2f4..d7d77c1ba 100644
--- a/libc/misc/ttyent/getttyent.c
+++ b/libc/misc/ttyent/getttyent.c
@@ -96,7 +96,7 @@ static char * skip(register char *p)
static char * value(register char *p)
{
- return ((p = index(p, '=')) ? ++p : NULL);
+ return ((p = strchr(p, '=')) ? ++p : NULL);
}
struct ttyent * getttyent(void)
@@ -122,7 +122,7 @@ struct ttyent * getttyent(void)
return (NULL);
}
/* skip lines that are too big */
- if (!index(p, '\n')) {
+ if (!strchr(p, '\n')) {
while ((c = getc_unlocked(tf)) != '\n' && c != EOF)
;
continue;
@@ -171,7 +171,7 @@ struct ttyent * getttyent(void)
tty.ty_comment = p;
if (*p == 0)
tty.ty_comment = 0;
- if ((p = index(p, '\n')))
+ if ((p = strchr(p, '\n')))
*p = '\0';
return (&tty);
}
diff --git a/libc/signal/killpg.c b/libc/signal/killpg.c
index e75cfc483..1fcf6bfa5 100644
--- a/libc/signal/killpg.c
+++ b/libc/signal/killpg.c
@@ -2,19 +2,19 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
@@ -23,13 +23,16 @@
/* Send SIG to all processes in process group PGRP.
If PGRP is zero, send SIG to all processes in
the current process's process group. */
-int killpg ( __pid_t pgrp, int sig)
+int
+killpg (pgrp, sig)
+ __pid_t pgrp;
+ int sig;
{
- if (pgrp < 0)
+ if (pgrp < 0)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return kill (- pgrp, sig);
+ return kill (- pgrp, sig);
}
diff --git a/libc/signal/raise.c b/libc/signal/raise.c
index d4137aeb8..69b61385c 100644
--- a/libc/signal/raise.c
+++ b/libc/signal/raise.c
@@ -7,8 +7,11 @@
#include <signal.h>
#include <sys/types.h>
-int raise(int signo)
+#undef raise
+int attribute_hidden __raise(int signo)
{
return kill(getpid(), signo);
}
+/* psm: keep this weak, because the one in libpthread.so could overwrite it */
+weak_alias(__raise, raise)
diff --git a/libc/signal/sigaction.c b/libc/signal/sigaction.c
index 4b8503276..eedf98169 100644
--- a/libc/signal/sigaction.c
+++ b/libc/signal/sigaction.c
@@ -1,96 +1,116 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,1999,2000,2002,2003 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
#include <string.h>
+
#include <sys/syscall.h>
+
+
+/* The difference here is that the sigaction structure used in the
+ kernel is not the same as we use in the libc. Therefore we must
+ translate it here. */
#include <bits/kernel_sigaction.h>
+int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact);
#if defined __NR_rt_sigaction
/* If ACT is not NULL, change the action for SIG to *ACT.
If OACT is not NULL, put the old action for SIG in *OACT. */
-int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
+int
+__libc_sigaction (sig, act, oact)
+ int sig;
+ const struct sigaction *act;
+ struct sigaction *oact;
{
- int result;
- struct kernel_sigaction kact, koact;
+ int result;
+ struct kernel_sigaction kact, koact;
- if (act) {
- kact.k_sa_handler = act->sa_handler;
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
- kact.sa_flags = act->sa_flags;
+ if (act) {
+ kact.k_sa_handler = act->sa_handler;
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
+ kact.sa_flags = act->sa_flags;
# ifdef HAVE_SA_RESTORER
- kact.sa_restorer = act->sa_restorer;
+ kact.sa_restorer = act->sa_restorer;
# endif
- }
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
- result = __syscall_rt_sigaction(sig, act ? __ptrvalue (&kact) : NULL,
- oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
-
- if (oact && result >= 0) {
- oact->sa_handler = koact.k_sa_handler;
- memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (oact->sa_mask));
- oact->sa_flags = koact.sa_flags;
+ }
+
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+ result = __syscall_rt_sigaction(sig,
+ act ? __ptrvalue (&kact) : NULL,
+ oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+
+ if (oact && result >= 0) {
+ oact->sa_handler = koact.k_sa_handler;
+ memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (oact->sa_mask));
+ oact->sa_flags = koact.sa_flags;
# ifdef HAVE_SA_RESTORER
- oact->sa_restorer = koact.sa_restorer;
+ oact->sa_restorer = koact.sa_restorer;
# endif
- }
- return result;
-}
+ }
+ return result;
+}
#else
/* If ACT is not NULL, change the action for SIG to *ACT.
If OACT is not NULL, put the old action for SIG in *OACT. */
-int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
+int
+__libc_sigaction (sig, act, oact)
+ int sig;
+ const struct sigaction *act;
+ struct sigaction *oact;
{
- int result;
- struct old_kernel_sigaction kact, koact;
+ int result;
+ struct old_kernel_sigaction kact, koact;
- if (act) {
- kact.k_sa_handler = act->sa_handler;
- kact.sa_mask = act->sa_mask.__val[0];
- kact.sa_flags = act->sa_flags;
+ if (act) {
+ kact.k_sa_handler = act->sa_handler;
+ kact.sa_mask = act->sa_mask.__val[0];
+ kact.sa_flags = act->sa_flags;
# ifdef HAVE_SA_RESTORER
- kact.sa_restorer = act->sa_restorer;
+ kact.sa_restorer = act->sa_restorer;
# endif
- }
- result = __syscall_sigaction(sig, act ? __ptrvalue (&kact) : NULL,
- oact ? __ptrvalue (&koact) : NULL);
-
- if (oact && result >= 0) {
- oact->sa_handler = koact.k_sa_handler;
- oact->sa_mask.__val[0] = koact.sa_mask;
- oact->sa_flags = koact.sa_flags;
+ }
+
+ result = __syscall_sigaction(sig,
+ act ? __ptrvalue (&kact) : NULL,
+ oact ? __ptrvalue (&koact) : NULL);
+
+ if (oact && result >= 0) {
+ oact->sa_handler = koact.k_sa_handler;
+ oact->sa_mask.__val[0] = koact.sa_mask;
+ oact->sa_flags = koact.sa_flags;
# ifdef HAVE_SA_RESTORER
- oact->sa_restorer = koact.sa_restorer;
+ oact->sa_restorer = koact.sa_restorer;
# endif
- }
- return result;
+ }
+
+ return result;
}
#endif
#ifndef LIBC_SIGACTION
-weak_alias(__libc_sigaction, sigaction)
+weak_alias (__libc_sigaction, __sigaction)
+weak_alias (__libc_sigaction, sigaction)
#endif
diff --git a/libc/signal/sigaddset.c b/libc/signal/sigaddset.c
index 2e4f5c540..e5813c117 100644
--- a/libc/signal/sigaddset.c
+++ b/libc/signal/sigaddset.c
@@ -1,31 +1,34 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 2003 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "sigsetops.h"
/* Add SIGNO to SET. */
-int sigaddset (sigset_t *set, int signo)
+int
+sigaddset (set, signo)
+ sigset_t *set;
+ int signo;
{
- if (set == NULL || signo <= 0 || signo >= NSIG)
+ if (set == NULL || signo <= 0 || signo >= NSIG)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return __sigaddset (set, signo);
+ return __sigaddset (set, signo);
}
diff --git a/libc/signal/sigandset.c b/libc/signal/sigandset.c
index a09e102ae..4e1abd969 100644
--- a/libc/signal/sigandset.c
+++ b/libc/signal/sigandset.c
@@ -2,19 +2,19 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#define __USE_GNU
@@ -23,13 +23,17 @@
#include <stddef.h>
/* Combine sets LEFT and RIGHT by logical AND and place result in DEST. */
-int sigandset (sigset_t *dest, const sigset_t *left, const sigset_t *right)
+int
+sigandset (dest, left, right)
+ sigset_t *dest;
+ const sigset_t *left;
+ const sigset_t *right;
{
- if (dest == NULL || left == NULL || right == NULL)
+ if (dest == NULL || left == NULL || right == NULL)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return __sigandset (dest, left, right);
+ return __sigandset (dest, left, right);
}
diff --git a/libc/signal/sigblock.c b/libc/signal/sigblock.c
index 1d673f454..c02c234b6 100644
--- a/libc/signal/sigblock.c
+++ b/libc/signal/sigblock.c
@@ -17,11 +17,10 @@
02111-1307 USA. */
#include <errno.h>
-#define __USE_GNU
#include <signal.h>
/* Block signals in MASK, returning the old mask. */
-int sigblock (int mask)
+int __sigblock (int mask)
{
register unsigned int sig;
sigset_t set, oset;
@@ -53,3 +52,4 @@ int sigblock (int mask)
return mask;
}
+strong_alias (__sigblock, sigblock)
diff --git a/libc/signal/sigdelset.c b/libc/signal/sigdelset.c
index 76279a945..16bc9ea4a 100644
--- a/libc/signal/sigdelset.c
+++ b/libc/signal/sigdelset.c
@@ -1,31 +1,34 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 2003 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "sigsetops.h"
/* Add SIGNO to SET. */
-int sigdelset (sigset_t *set, int signo)
+int
+sigdelset (set, signo)
+ sigset_t *set;
+ int signo;
{
- if (set == NULL || signo <= 0 || signo >= NSIG)
+ if (set == NULL || signo <= 0 || signo >= NSIG)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return __sigdelset (set, signo);
+ return __sigdelset (set, signo);
}
diff --git a/libc/signal/sigempty.c b/libc/signal/sigempty.c
index 36b8f63fa..75b5be420 100644
--- a/libc/signal/sigempty.c
+++ b/libc/signal/sigempty.c
@@ -1,35 +1,37 @@
-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,96,97,2002 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
#include <string.h>
/* Clear all signals from SET. */
-int sigemptyset (sigset_t *set)
+int
+sigemptyset (set)
+ sigset_t *set;
{
- if (set == NULL)
+ if (set == NULL)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- memset (set, 0, sizeof (sigset_t));
+ memset (set, 0, sizeof (sigset_t));
- return 0;
+ return 0;
}
diff --git a/libc/signal/sigfillset.c b/libc/signal/sigfillset.c
index 735359cf0..03361787e 100644
--- a/libc/signal/sigfillset.c
+++ b/libc/signal/sigfillset.c
@@ -1,44 +1,46 @@
-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,96,97,2002,2003,2004 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
#include <string.h>
/* Set all signals in SET. */
-int sigfillset (sigset_t *set)
+int
+sigfillset (set)
+ sigset_t *set;
{
- if (set == NULL)
+ if (set == NULL)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- memset (set, 0xff, sizeof (sigset_t));
+ memset (set, 0xff, sizeof (sigset_t));
- /* If implementation uses a cancellation signal don't set the bit. */
+ /* If the implementation uses a cancellation signal don't set the bit. */
#ifdef SIGCANCEL
- __sigdelset (set, SIGCANCEL);
+ __sigdelset (set, SIGCANCEL);
#endif
- /* Likewise for the signal to implement setxid. */
+ /* Likewise for the signal to implement setxid. */
#ifdef SIGSETXID
- __sigdelset (set, SIGSETXID);
+ __sigdelset (set, SIGSETXID);
#endif
- return 0;
+ return 0;
}
diff --git a/libc/signal/siggetmask.c b/libc/signal/siggetmask.c
index 0436532a5..f139d3861 100644
--- a/libc/signal/siggetmask.c
+++ b/libc/signal/siggetmask.c
@@ -3,25 +3,28 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
-#define __USE_GNU
#include <signal.h>
-int siggetmask (void)
+extern int __sigblock (int __mask);
+int
+siggetmask (void)
{
- return sigblock (0);
+ return __sigblock (0);
}
+link_warning (siggetmask,
+ "warning: `siggetmask' is obsolete; `sigprocmask' is best")
diff --git a/libc/signal/sighold.c b/libc/signal/sighold.c
index d30a337f2..670a4872e 100644
--- a/libc/signal/sighold.c
+++ b/libc/signal/sighold.c
@@ -1,40 +1,42 @@
/* Add SIG to the calling process' signal mask.
- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#define __need_NULL
#include <stddef.h>
-#define __USE_GNU
+#define _GNU_SOURCE
#include <signal.h>
-int sighold (int sig)
+int
+sighold (sig)
+ int sig;
{
- sigset_t set;
+ sigset_t set;
- /* Retrieve current signal set. */
- if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
- return -1;
+ /* Retrieve current signal set. */
+ if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
+ return -1;
- /* Add the specified signal. */
- if (__sigaddset (&set, sig) < 0)
- return -1;
+ /* Add the specified signal. */
+ if (sigaddset (&set, sig) < 0)
+ return -1;
- /* Set the new mask. */
- return sigprocmask (SIG_SETMASK, &set, NULL);
+ /* Set the new mask. */
+ return sigprocmask (SIG_SETMASK, &set, NULL);
}
diff --git a/libc/signal/sigignore.c b/libc/signal/sigignore.c
index 64d1852ab..407b52e2a 100644
--- a/libc/signal/sigignore.c
+++ b/libc/signal/sigignore.c
@@ -1,36 +1,41 @@
/* Set the disposition of SIG to SIG_IGN.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+#define _GNU_SOURCE
#include <errno.h>
#define __need_NULL
#include <stddef.h>
#include <signal.h>
+#include <string.h> /* For the real memset prototype. */
-int sigignore (int sig)
+
+int
+sigignore (sig)
+ int sig;
{
- struct sigaction act;
+ struct sigaction act;
- act.sa_handler = SIG_IGN;
- if (__sigemptyset (&act.sa_mask) < 0)
- return -1;
- act.sa_flags = 0;
+ act.sa_handler = SIG_IGN;
+ if (__sigemptyset (&act.sa_mask) < 0)
+ return -1;
+ act.sa_flags = 0;
- return sigaction (sig, &act, NULL);
+ return sigaction (sig, &act, NULL);
}
diff --git a/libc/signal/sigintr.c b/libc/signal/sigintr.c
index e8cdd9814..8315c3a6b 100644
--- a/libc/signal/sigintr.c
+++ b/libc/signal/sigintr.c
@@ -1,20 +1,20 @@
-/* Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1994, 1996, 2002 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <stddef.h>
#include <signal.h>
@@ -23,32 +23,35 @@
/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
(causing them to fail with EINTR); if INTERRUPT is zero, make system
calls be restarted after signal SIG. */
-int siginterrupt (int sig, int interrupt)
+int
+siginterrupt (sig, interrupt)
+ int sig;
+ int interrupt;
{
#ifdef SA_RESTART
- extern sigset_t _sigintr; /* Defined in signal.c. */
- struct sigaction action;
+ extern sigset_t _sigintr attribute_hidden; /* Defined in signal.c. */
+ struct sigaction action;
- if (sigaction (sig, (struct sigaction *) NULL, &action) < 0)
- return -1;
+ if (sigaction (sig, (struct sigaction *) NULL, &action) < 0)
+ return -1;
- if (interrupt)
+ if (interrupt)
{
- __sigaddset (&_sigintr, sig);
- action.sa_flags &= ~SA_RESTART;
+ __sigaddset (&_sigintr, sig);
+ action.sa_flags &= ~SA_RESTART;
}
- else
+ else
{
- __sigdelset (&_sigintr, sig);
- action.sa_flags |= SA_RESTART;
+ __sigdelset (&_sigintr, sig);
+ action.sa_flags |= SA_RESTART;
}
- if (sigaction (sig, &action, (struct sigaction *) NULL) < 0)
- return -1;
+ if (sigaction (sig, &action, (struct sigaction *) NULL) < 0)
+ return -1;
- return 0;
+ return 0;
#else
- __set_errno (ENOSYS);
- return -1;
+ __set_errno (ENOSYS);
+ return -1;
#endif
}
diff --git a/libc/signal/sigisempty.c b/libc/signal/sigisempty.c
index 9067ff08a..6d1de45a8 100644
--- a/libc/signal/sigisempty.c
+++ b/libc/signal/sigisempty.c
@@ -2,19 +2,19 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#define __USE_GNU
@@ -23,12 +23,14 @@
#include <stddef.h>
/* Test whether SET is empty. */
-int sigisemptyset (const sigset_t *set)
+int
+sigisemptyset (set)
+ const sigset_t *set;
{
- if (set == NULL)
+ if (set == NULL)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
return __sigisemptyset (set);
diff --git a/libc/signal/sigismem.c b/libc/signal/sigismem.c
index f1c79d2da..6423a1a02 100644
--- a/libc/signal/sigismem.c
+++ b/libc/signal/sigismem.c
@@ -1,31 +1,34 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991,96,2002 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include "sigsetops.h"
/* Return 1 if SIGNO is in SET, 0 if not. */
-int sigismember (const sigset_t *set, int signo)
+int
+sigismember (set, signo)
+ const sigset_t *set;
+ int signo;
{
- if (set == NULL || signo <= 0 || signo >= NSIG)
+ if (set == NULL || signo <= 0 || signo >= NSIG)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return __sigismember (set, signo);
+ return __sigismember (set, signo);
}
diff --git a/libc/signal/signal.c b/libc/signal/signal.c
index 463de1e50..7df88eff0 100644
--- a/libc/signal/signal.c
+++ b/libc/signal/signal.c
@@ -1,49 +1,53 @@
/* BSD-like signal function.
- Copyright (C) 1991, 1992, 1996, 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1991,1992,1996,1997,2000,2002,2005
+ 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
+#include <string.h> /* For the real memset prototype. */
-sigset_t _sigintr; /* Set by siginterrupt. */
+sigset_t _sigintr attribute_hidden; /* Set by siginterrupt. */
/* Set the handler for the signal SIG to HANDLER,
returning the old handler, or SIG_ERR on error. */
-__sighandler_t bsd_signal (int sig, __sighandler_t handler)
+__sighandler_t
+__bsd_signal (int sig, __sighandler_t handler)
{
- struct sigaction act, oact;
+ struct sigaction act, oact;
- /* Check signal extents to protect __sigismember. */
- if (handler == SIG_ERR || sig < 1 || sig >= NSIG)
+ /* Check signal extents to protect __sigismember. */
+ if (handler == SIG_ERR || sig < 1 || sig >= NSIG)
{
- __set_errno (EINVAL);
- return SIG_ERR;
+ __set_errno (EINVAL);
+ return SIG_ERR;
}
- act.sa_handler = handler;
- if (__sigemptyset (&act.sa_mask) < 0
- || __sigaddset (&act.sa_mask, sig) < 0)
- return SIG_ERR;
- act.sa_flags = __sigismember (&_sigintr, sig) ? 0 : SA_RESTART;
- if (sigaction (sig, &act, &oact) < 0)
- return SIG_ERR;
+ act.sa_handler = handler;
+ if (__sigemptyset (&act.sa_mask) < 0
+ || __sigaddset (&act.sa_mask, sig) < 0)
+ return SIG_ERR;
+ act.sa_flags = __sigismember (&_sigintr, sig) ? 0 : SA_RESTART;
+ if (sigaction (sig, &act, &oact) < 0)
+ return SIG_ERR;
- return oact.sa_handler;
+ return oact.sa_handler;
}
-weak_alias (bsd_signal, signal)
+weak_alias (__bsd_signal, bsd_signal)
+weak_alias (__bsd_signal, signal)
diff --git a/libc/signal/sigorset.c b/libc/signal/sigorset.c
index 017f3ba06..ffabf3704 100644
--- a/libc/signal/sigorset.c
+++ b/libc/signal/sigorset.c
@@ -2,19 +2,19 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#define __USE_GNU
@@ -23,13 +23,17 @@
#include <stddef.h>
/* Combine sets LEFT and RIGHT by logical OR and place result in DEST. */
-int sigorset (sigset_t *dest, const sigset_t *left, const sigset_t *right)
+int
+sigorset (dest, left, right)
+ sigset_t *dest;
+ const sigset_t *left;
+ const sigset_t *right;
{
- if (dest == NULL || left == NULL || right == NULL)
+ if (dest == NULL || left == NULL || right == NULL)
{
- __set_errno (EINVAL);
- return -1;
+ __set_errno (EINVAL);
+ return -1;
}
- return __sigorset (dest, left, right);
+ return __sigorset (dest, left, right);
}
diff --git a/libc/signal/sigpause.c b/libc/signal/sigpause.c
index 433b92b0c..dd05e6e0a 100644
--- a/libc/signal/sigpause.c
+++ b/libc/signal/sigpause.c
@@ -1,20 +1,21 @@
-/* Copyright (C) 1991, 92, 1994-1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,94-98,2000,2002,2003,2004
+ 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
diff --git a/libc/signal/sigrelse.c b/libc/signal/sigrelse.c
index ae3b20ae2..091f97de5 100644
--- a/libc/signal/sigrelse.c
+++ b/libc/signal/sigrelse.c
@@ -1,40 +1,42 @@
/* Remove SIG from the calling process' signal mask.
- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#define __need_NULL
#include <stddef.h>
-#define __USE_GNU
+#define _GNU_SOURCE
#include <signal.h>
-int sigrelse (int sig)
+int
+sigrelse (sig)
+ int sig;
{
- sigset_t set;
+ sigset_t set;
- /* Retrieve current signal set. */
- if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
- return -1;
+ /* Retrieve current signal set. */
+ if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
+ return -1;
- /* Remove the specified signal. */
- if (__sigdelset (&set, sig) < 0)
- return -1;
+ /* Remove the specified signal. */
+ if (sigdelset (&set, sig) < 0)
+ return -1;
- /* Set the new mask. */
- return sigprocmask (SIG_SETMASK, &set, NULL);
+ /* Set the new mask. */
+ return sigprocmask (SIG_SETMASK, &set, NULL);
}
diff --git a/libc/signal/sigset.c b/libc/signal/sigset.c
index e0cda7b9f..0ce411c8c 100644
--- a/libc/signal/sigset.c
+++ b/libc/signal/sigset.c
@@ -1,78 +1,83 @@
-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2005 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#define __need_NULL
#include <stddef.h>
+#define __USE_XOPEN_EXTENDED
#include <signal.h>
+#include <string.h> /* For the real memset prototype. */
/* Set the disposition for SIG. */
-__sighandler_t sigset (int sig, __sighandler_t disp)
+__sighandler_t
+sigset (sig, disp)
+ int sig;
+ __sighandler_t disp;
{
- struct sigaction act, oact;
- sigset_t set;
+ struct sigaction act, oact;
+ sigset_t set;
#ifdef SIG_HOLD
- /* Handle SIG_HOLD first. */
- if (disp == SIG_HOLD)
+ /* Handle SIG_HOLD first. */
+ if (disp == SIG_HOLD)
{
- /* Create an empty signal set. */
- if (__sigemptyset (&set) < 0)
- return SIG_ERR;
+ /* Create an empty signal set. */
+ if (__sigemptyset (&set) < 0)
+ return SIG_ERR;
- /* Add the specified signal. */
- if (__sigaddset (&set, sig) < 0)
- return SIG_ERR;
+ /* Add the specified signal. */
+ if (__sigaddset (&set, sig) < 0)
+ return SIG_ERR;
- /* Add the signal set to the current signal mask. */
- if (sigprocmask (SIG_BLOCK, &set, NULL) < 0)
- return SIG_ERR;
+ /* Add the signal set to the current signal mask. */
+ if (sigprocmask (SIG_BLOCK, &set, NULL) < 0)
+ return SIG_ERR;
- return SIG_HOLD;
+ return SIG_HOLD;
}
#endif /* SIG_HOLD */
- /* Check signal extents to protect __sigismember. */
- if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
+ /* Check signal extents to protect __sigismember. */
+ if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
{
- __set_errno (EINVAL);
- return SIG_ERR;
+ __set_errno (EINVAL);
+ return SIG_ERR;
}
- act.sa_handler = disp;
- if (__sigemptyset (&act.sa_mask) < 0)
- return SIG_ERR;
- act.sa_flags = 0;
- if (sigaction (sig, &act, &oact) < 0)
- return SIG_ERR;
+ act.sa_handler = disp;
+ if (__sigemptyset (&act.sa_mask) < 0)
+ return SIG_ERR;
+ act.sa_flags = 0;
+ if (sigaction (sig, &act, &oact) < 0)
+ return SIG_ERR;
- /* Create an empty signal set. */
- if (__sigemptyset (&set) < 0)
- return SIG_ERR;
+ /* Create an empty signal set. */
+ if (__sigemptyset (&set) < 0)
+ return SIG_ERR;
- /* Add the specified signal. */
- if (__sigaddset (&set, sig) < 0)
- return SIG_ERR;
+ /* Add the specified signal. */
+ if (__sigaddset (&set, sig) < 0)
+ return SIG_ERR;
- /* Remove the signal set from the current signal mask. */
- if (sigprocmask (SIG_UNBLOCK, &set, NULL) < 0)
- return SIG_ERR;
+ /* Remove the signal set from the current signal mask. */
+ if (sigprocmask (SIG_UNBLOCK, &set, NULL) < 0)
+ return SIG_ERR;
- return oact.sa_handler;
+ return oact.sa_handler;
}
diff --git a/libc/signal/sigsetmask.c b/libc/signal/sigsetmask.c
index 632eaff2a..4c7a43e5f 100644
--- a/libc/signal/sigsetmask.c
+++ b/libc/signal/sigsetmask.c
@@ -1,20 +1,20 @@
-/* Copyright (C) 1991,1994,1995,1996,1997,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1994-1997,2001-2002 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
diff --git a/libc/signal/sigsetops.h b/libc/signal/sigsetops.h
index 8cdbf0d9b..52081c2ba 100644
--- a/libc/signal/sigsetops.h
+++ b/libc/signal/sigsetops.h
@@ -2,24 +2,23 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Definitions relevant to functions that operate on `sigset_t's. */
#include <errno.h>
-#define __USE_GNU
#include <signal.h>
#include <string.h>
diff --git a/libc/signal/sigwait.c b/libc/signal/sigwait.c
index 9cd2b6d12..99ddfc481 100644
--- a/libc/signal/sigwait.c
+++ b/libc/signal/sigwait.c
@@ -3,31 +3,35 @@
*
* Copyright (C) 2003 by Erik Andersen <andersen@uclibc.org>
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
+ * This program 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.
*
- * This program 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 Library General Public License
- * for more details.
+ * 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 Library General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
#include <string.h>
-int sigwait (const sigset_t *set, int *sig)
+#undef sigwait
+int attribute_hidden __sigwait (const sigset_t *set, int *sig)
{
- int ret = 1;
- if ((ret = sigwaitinfo(set, NULL)) != -1) {
- *sig = ret;
- return 0;
- }
- return 1;
+ int ret = 1;
+ if ((ret = sigwaitinfo(set, NULL)) != -1) {
+ *sig = ret;
+ return 0;
+ }
+ return 1;
}
+
+/* psm: keep this weak, because the one in libpthread.so could overwrite it */
+weak_alias(__sigwait, sigwait)
diff --git a/libc/signal/sysv_signal.c b/libc/signal/sysv_signal.c
index 0c94577be..576fc0b8d 100644
--- a/libc/signal/sysv_signal.c
+++ b/libc/signal/sysv_signal.c
@@ -1,23 +1,25 @@
-/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1997, 2005 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#include <errno.h>
#include <signal.h>
+#include <string.h> /* For the real memset prototype. */
+
/* Tolerate non-threads versions of Posix */
#ifndef SA_ONESHOT
@@ -32,25 +34,29 @@
/* Set the handler for the signal SIG to HANDLER,
returning the old handler, or SIG_ERR on error. */
-__sighandler_t __sysv_signal (int sig, __sighandler_t handler)
+__sighandler_t
+__sysv_signal (sig, handler)
+ int sig;
+ __sighandler_t handler;
{
- struct sigaction act, oact;
+ struct sigaction act, oact;
- /* Check signal extents to protect __sigismember. */
- if (handler == SIG_ERR || sig < 1 || sig >= NSIG)
+ /* Check signal extents to protect __sigismember. */
+ if (handler == SIG_ERR || sig < 1 || sig >= NSIG)
{
- __set_errno (EINVAL);
- return SIG_ERR;
+ __set_errno (EINVAL);
+ return SIG_ERR;
}
- act.sa_handler = handler;
- if (__sigemptyset (&act.sa_mask) < 0)
- return SIG_ERR;
- act.sa_flags = SA_ONESHOT | SA_NOMASK | SA_INTERRUPT;
- act.sa_flags &= ~SA_RESTART;
- if (sigaction (sig, &act, &oact) < 0)
- return SIG_ERR;
+ act.sa_handler = handler;
+ if (__sigemptyset (&act.sa_mask) < 0)
+ return SIG_ERR;
+ act.sa_flags = SA_ONESHOT | SA_NOMASK | SA_INTERRUPT;
+ act.sa_flags &= ~SA_RESTART;
+ if (sigaction (sig, &act, &oact) < 0)
+ return SIG_ERR;
- return oact.sa_handler;
+ return oact.sa_handler;
}
+
weak_alias (__sysv_signal, sysv_signal)
diff --git a/libc/stdio/_READ.c b/libc/stdio/_READ.c
index 7d3c38ce6..013ca0281 100644
--- a/libc/stdio/_READ.c
+++ b/libc/stdio/_READ.c
@@ -20,7 +20,7 @@
* NOT THREADSAFE! Assumes stream already locked if necessary.
*/
-size_t __stdio_READ(register FILE *stream,
+size_t attribute_hidden __stdio_READ(register FILE *stream,
unsigned char *buf, size_t bufsize)
{
ssize_t rv = 0;
diff --git a/libc/stdio/_WRITE.c b/libc/stdio/_WRITE.c
index d300d3919..877d055f7 100644
--- a/libc/stdio/_WRITE.c
+++ b/libc/stdio/_WRITE.c
@@ -28,7 +28,7 @@
* NOT THREADSAFE! Assumes stream already locked if necessary.
*/
-size_t __stdio_WRITE(register FILE *stream,
+size_t attribute_hidden __stdio_WRITE(register FILE *stream,
register const unsigned char *buf, size_t bufsize)
{
size_t todo;
diff --git a/libc/stdio/_adjust_pos.c b/libc/stdio/_adjust_pos.c
index bc48d32b7..bc6e90555 100644
--- a/libc/stdio/_adjust_pos.c
+++ b/libc/stdio/_adjust_pos.c
@@ -16,7 +16,7 @@
* If position is unrepresentable, set errno to EOVERFLOW.
*/
-int __stdio_adjust_position(register FILE * __restrict stream,
+int attribute_hidden __stdio_adjust_position(register FILE * __restrict stream,
register __offmax_t *pos)
{
__offmax_t oldpos;
diff --git a/libc/stdio/_cs_funcs.c b/libc/stdio/_cs_funcs.c
index fd81a6f95..9df93f227 100644
--- a/libc/stdio/_cs_funcs.c
+++ b/libc/stdio/_cs_funcs.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
+/* Copyright (C) 2004-2005 Manuel Novoa III <mjn3@codepoet.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*
* Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
*/
@@ -11,21 +11,21 @@
#ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
/**********************************************************************/
-ssize_t _cs_read(void *cookie, char *buf, size_t bufsize)
+ssize_t attribute_hidden _cs_read(void *cookie, char *buf, size_t bufsize)
{
return read(*((int *) cookie), buf, bufsize);
}
/**********************************************************************/
-ssize_t _cs_write(void *cookie, const char *buf, size_t bufsize)
+ssize_t attribute_hidden _cs_write(void *cookie, const char *buf, size_t bufsize)
{
return write(*((int *) cookie), (char *) buf, bufsize);
}
/**********************************************************************/
-int _cs_seek(void *cookie, register __offmax_t *pos, int whence)
+int attribute_hidden _cs_seek(void *cookie, register __offmax_t *pos, int whence)
{
__offmax_t res;
@@ -40,7 +40,7 @@ int _cs_seek(void *cookie, register __offmax_t *pos, int whence)
/**********************************************************************/
-int _cs_close(void *cookie)
+int attribute_hidden _cs_close(void *cookie)
{
return close(*((int *) cookie));
}
@@ -49,7 +49,7 @@ int _cs_close(void *cookie)
#else
/**********************************************************************/
-int __stdio_seek(FILE *stream, register __offmax_t *pos, int whence)
+int attribute_hidden __stdio_seek(FILE *stream, register __offmax_t *pos, int whence)
{
__offmax_t res;
diff --git a/libc/stdio/_fopen.c b/libc/stdio/_fopen.c
index bba8cfdfd..508c36d1c 100644
--- a/libc/stdio/_fopen.c
+++ b/libc/stdio/_fopen.c
@@ -27,7 +27,7 @@
/* Internal function -- reentrant (locks open file list) */
-FILE *_stdio_fopen(intptr_t fname_or_mode,
+FILE attribute_hidden *_stdio_fopen(intptr_t fname_or_mode,
register const char * __restrict mode,
register FILE * __restrict stream, int filedes)
{
diff --git a/libc/stdio/_fpmaxtostr.c b/libc/stdio/_fpmaxtostr.c
index b9aacdca8..9ffa5493e 100644
--- a/libc/stdio/_fpmaxtostr.c
+++ b/libc/stdio/_fpmaxtostr.c
@@ -19,7 +19,7 @@ typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
*
* Function:
*
- * size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
+ * ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
* __fp_outfunc_t fp_outfunc);
*
* This is derived from the old _dtostr, whic I wrote for uClibc to provide
@@ -198,7 +198,7 @@ static const __fpmax_t exp16_table[] = {
#define FPO_STR_WIDTH (0x80 | ' ');
#define FPO_STR_PREC 'p'
-ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
+ssize_t attribute_hidden _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
__fp_outfunc_t fp_outfunc)
{
#ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
diff --git a/libc/stdio/_fwrite.c b/libc/stdio/_fwrite.c
index a706ba7e6..d9d0bc2a8 100644
--- a/libc/stdio/_fwrite.c
+++ b/libc/stdio/_fwrite.c
@@ -11,7 +11,7 @@
/* Either buffer data or (commit buffer if necessary and) write. */
-size_t __stdio_fwrite(const unsigned char * __restrict buffer,
+size_t attribute_hidden __stdio_fwrite(const unsigned char * __restrict buffer,
size_t bytes,
register FILE * __restrict stream)
{
diff --git a/libc/stdio/_load_inttype.c b/libc/stdio/_load_inttype.c
index 2dd559a53..e4dc61e9c 100644
--- a/libc/stdio/_load_inttype.c
+++ b/libc/stdio/_load_inttype.c
@@ -8,7 +8,7 @@
#include "_stdio.h"
#include <printf.h>
-uintmax_t _load_inttype(int desttype, register const void *src, int uflag)
+uintmax_t attribute_hidden _load_inttype(int desttype, register const void *src, int uflag)
{
if (uflag >= 0) { /* unsigned */
#if LONG_MAX != INT_MAX
diff --git a/libc/stdio/_rfill.c b/libc/stdio/_rfill.c
index 145c1d78e..d61b1a9f9 100644
--- a/libc/stdio/_rfill.c
+++ b/libc/stdio/_rfill.c
@@ -19,7 +19,7 @@
* Side effects are those of _stdio_READ.
*/
-size_t __stdio_rfill(register FILE *__restrict stream)
+size_t attribute_hidden __stdio_rfill(register FILE *__restrict stream)
{
size_t rv;
diff --git a/libc/stdio/_stdio.h b/libc/stdio/_stdio.h
index c167b177e..1ed349533 100644
--- a/libc/stdio/_stdio.h
+++ b/libc/stdio/_stdio.h
@@ -1,6 +1,6 @@
-/* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
+/* Copyright (C) 2004-2005 Manuel Novoa III <mjn3@codepoet.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*
* Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
*/
@@ -59,10 +59,10 @@
/**********************************************************************/
#ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
-extern __ssize_t _cs_read(void *cookie, char *buf, size_t bufsize);
-extern __ssize_t _cs_write(void *cookie, const char *buf, size_t bufsize);
-extern int _cs_seek(void *cookie, __offmax_t *pos, int whence);
-extern int _cs_close(void *cookie);
+extern __ssize_t _cs_read(void *cookie, char *buf, size_t bufsize) attribute_hidden;
+extern __ssize_t _cs_write(void *cookie, const char *buf, size_t bufsize) attribute_hidden;
+extern int _cs_seek(void *cookie, __offmax_t *pos, int whence) attribute_hidden;
+extern int _cs_close(void *cookie) attribute_hidden;
#define __STDIO_STREAM_RESET_GCS(S) \
(S)->__cookie = &((S)->__filedes); \
@@ -87,7 +87,7 @@ extern int _cs_close(void *cookie);
#else /* __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__ */
-extern int __stdio_seek(FILE *stream, register __offmax_t *pos, int whence);
+extern int __stdio_seek(FILE *stream, register __offmax_t *pos, int whence) attribute_hidden;
#define __STDIO_STREAM_RESET_GCS(S) ((void)0)
@@ -249,13 +249,13 @@ extern int __stdio_seek(FILE *stream, register __offmax_t *pos, int whence);
/* Assume stream in valid writing state. Do not reset writing flag
* or disble putc macro unless error. */
/* Should we assume that buffer is not empty to avoid a check? */
-extern size_t __stdio_wcommit(FILE *__restrict stream);
+extern size_t __stdio_wcommit(FILE *__restrict stream) attribute_hidden;
/* Remember to fail if at EOF! */
-extern size_t __stdio_rfill(FILE *__restrict stream);
+extern size_t __stdio_rfill(FILE *__restrict stream) attribute_hidden;
extern size_t __stdio_fwrite(const unsigned char *__restrict buffer,
- size_t bytes, FILE *__restrict stream);
+ size_t bytes, FILE *__restrict stream) attribute_hidden;
#else
#define __stdio_fwrite(B,N,S) __stdio_WRITE((S),(B),(N))
@@ -263,14 +263,14 @@ extern size_t __stdio_fwrite(const unsigned char *__restrict buffer,
#endif
extern size_t __stdio_WRITE(FILE *stream, const unsigned char *buf,
- size_t bufsize);
-extern size_t __stdio_READ(FILE *stream, unsigned char *buf, size_t bufsize);
+ size_t bufsize) attribute_hidden;
+extern size_t __stdio_READ(FILE *stream, unsigned char *buf, size_t bufsize) attribute_hidden;
-extern int __stdio_trans2r(FILE *__restrict stream);
-extern int __stdio_trans2w(FILE *__restrict stream);
+extern int __stdio_trans2r(FILE *__restrict stream) attribute_hidden;
+extern int __stdio_trans2w(FILE *__restrict stream) attribute_hidden;
-extern int __stdio_trans2r_o(FILE *__restrict stream, int oflag);
-extern int __stdio_trans2w_o(FILE *__restrict stream, int oflag);
+extern int __stdio_trans2r_o(FILE *__restrict stream, int oflag) attribute_hidden;
+extern int __stdio_trans2w_o(FILE *__restrict stream, int oflag) attribute_hidden;
/**********************************************************************/
#ifdef __STDIO_BUFFERS
@@ -374,7 +374,7 @@ extern int __fputc_unlocked(int c, FILE *stream);
extern int __fflush_unlocked(FILE *stream);
-extern int __stdio_adjust_position(FILE *__restrict stream, __offmax_t *pos);
+extern int __stdio_adjust_position(FILE *__restrict stream, __offmax_t *pos) attribute_hidden;
extern void __clearerr_unlocked(FILE *stream);
extern int __feof_unlocked(FILE *stream);
@@ -427,8 +427,8 @@ extern size_t _stdio_fread(unsigned char *buffer, size_t bytes,
FILE *stream);
extern FILE *_stdio_fopen(intptr_t fname_or_mode,
- const char *__restrict mode,
- FILE *__restrict stream, int filedes);
+ const char *__restrict mode,
+ FILE *__restrict stream, int filedes) attribute_hidden;
#ifdef __UCLIBC_HAS_WCHAR__
extern size_t _wstdio_fwrite(const wchar_t *__restrict ws, size_t n,
diff --git a/libc/stdio/_store_inttype.c b/libc/stdio/_store_inttype.c
index 228e90619..82fb894c6 100644
--- a/libc/stdio/_store_inttype.c
+++ b/libc/stdio/_store_inttype.c
@@ -28,7 +28,7 @@
/* We assume int may be short or long, but short and long are different. */
-void _store_inttype(register void *dest, int desttype, uintmax_t val)
+void attribute_hidden _store_inttype(register void *dest, int desttype, uintmax_t val)
{
if (desttype == __PA_FLAG_CHAR) { /* assume char not int */
*((unsigned char *) dest) = val;
diff --git a/libc/stdio/_trans2r.c b/libc/stdio/_trans2r.c
index 9afb75428..1f3930070 100644
--- a/libc/stdio/_trans2r.c
+++ b/libc/stdio/_trans2r.c
@@ -22,9 +22,9 @@
*/
#ifdef __UCLIBC_HAS_WCHAR__
-int __stdio_trans2r_o(FILE * __restrict stream, int oflag)
+int attribute_hidden __stdio_trans2r_o(FILE * __restrict stream, int oflag)
#else
-int __stdio_trans2r(FILE * __restrict stream)
+int attribute_hidden __stdio_trans2r(FILE * __restrict stream)
#endif
{
__STDIO_STREAM_VALIDATE(stream);
diff --git a/libc/stdio/_trans2w.c b/libc/stdio/_trans2w.c
index 7ab3403c0..e85f45a24 100644
--- a/libc/stdio/_trans2w.c
+++ b/libc/stdio/_trans2w.c
@@ -21,9 +21,9 @@
*/
#ifdef __UCLIBC_HAS_WCHAR__
-int __stdio_trans2w_o(FILE * __restrict stream, int oflag)
+int attribute_hidden __stdio_trans2w_o(FILE * __restrict stream, int oflag)
#else
-int __stdio_trans2w(FILE * __restrict stream)
+int attribute_hidden __stdio_trans2w(FILE * __restrict stream)
#endif
{
__STDIO_STREAM_VALIDATE(stream);
diff --git a/libc/stdio/_wcommit.c b/libc/stdio/_wcommit.c
index 71720e83f..a0b3219b1 100644
--- a/libc/stdio/_wcommit.c
+++ b/libc/stdio/_wcommit.c
@@ -14,7 +14,7 @@
* Side effects are those of _stdio_WRITE
*/
-size_t __stdio_wcommit(register FILE * __restrict stream)
+size_t attribute_hidden __stdio_wcommit(register FILE * __restrict stream)
{
size_t bufsize;
diff --git a/libc/stdio/old_vfprintf.c b/libc/stdio/old_vfprintf.c
index 23cb10f94..8caa3d66d 100644
--- a/libc/stdio/old_vfprintf.c
+++ b/libc/stdio/old_vfprintf.c
@@ -217,7 +217,7 @@ typedef void (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
intptr_t buf);
extern size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
- __fp_outfunc_t fp_outfunc);
+ __fp_outfunc_t fp_outfunc) attribute_hidden;
static void _charpad(FILE * __restrict stream, int padchar, size_t numpad)
{
@@ -261,8 +261,8 @@ static const char spec[] = "+-#0 ";
/**********************************************************************/
-extern void _store_inttype(void *dest, int desttype, uintmax_t val);
-extern uintmax_t _load_inttype(int desttype, const void *src, int uflag);
+extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
+extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
/*
* In order to ease translation to what arginfo and _print_info._flags expect,
diff --git a/libc/stdio/scanf.c b/libc/stdio/scanf.c
index feaec3b44..d99896893 100644
--- a/libc/stdio/scanf.c
+++ b/libc/stdio/scanf.c
@@ -46,7 +46,6 @@
#define _ISOC99_SOURCE /* for LLONG_MAX primarily... */
#define _GNU_SOURCE
-#define _STDIO_UTILITY
#include <features.h>
#include "_stdio.h"
#include <stdlib.h>
@@ -661,16 +660,16 @@ typedef struct {
/**********************************************************************/
extern void __init_scan_cookie(register struct scan_cookie *sc,
- register FILE *fp);
-extern int __scan_getc(register struct scan_cookie *sc);
-extern void __scan_ungetc(register struct scan_cookie *sc);
+ register FILE *fp) attribute_hidden;
+extern int __scan_getc(register struct scan_cookie *sc) attribute_hidden;
+extern void __scan_ungetc(register struct scan_cookie *sc) attribute_hidden;
#ifdef __UCLIBC_HAS_FLOATS__
extern int __scan_strtold(long double *ld, struct scan_cookie *sc);
#endif /* __UCLIBC_HAS_FLOATS__ */
-extern int __psfs_parse_spec(psfs_t *psfs);
-extern int __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc);
+extern int __psfs_parse_spec(psfs_t *psfs) attribute_hidden;
+extern int __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc) attribute_hidden;
/**********************************************************************/
#ifdef L___scan_cookie
@@ -682,7 +681,7 @@ extern int __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc);
static const char decpt_str[] = ".";
#endif
-void __init_scan_cookie(register struct scan_cookie *sc,
+void attribute_hidden __init_scan_cookie(register struct scan_cookie *sc,
register FILE *fp)
{
sc->fp = fp;
@@ -723,7 +722,7 @@ void __init_scan_cookie(register struct scan_cookie *sc,
}
-int __scan_getc(register struct scan_cookie *sc)
+int attribute_hidden __scan_getc(register struct scan_cookie *sc)
{
int c;
@@ -771,7 +770,7 @@ int __scan_getc(register struct scan_cookie *sc)
return sc->cc = sc->ungot_char;
}
-void __scan_ungetc(register struct scan_cookie *sc)
+void attribute_hidden __scan_ungetc(register struct scan_cookie *sc)
{
++sc->width;
if (sc->ungot_flag == 2) { /* last was EOF */
@@ -797,7 +796,7 @@ static const unsigned char qual_chars[] = QUAL_CHARS;
static const unsigned char spec_ranges[] = SPEC_RANGES;
static const unsigned short spec_allowed[] = SPEC_ALLOWED_FLAGS;
-int __psfs_parse_spec(register psfs_t *psfs)
+int attribute_hidden __psfs_parse_spec(register psfs_t *psfs)
{
const unsigned char *p;
const unsigned char *fmt0 = psfs->fmt;
@@ -1756,7 +1755,7 @@ int VFSCANF (FILE *__restrict fp, const Wchar *__restrict format, va_list arg)
static const unsigned char spec_base[] = SPEC_BASE;
static const unsigned char nil_string[] = "(nil)";
-int __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc)
+int attribute_hidden __psfs_do_numeric(psfs_t *psfs, struct scan_cookie *sc)
{
unsigned char *b;
const unsigned char *p;
diff --git a/libc/stdio/vfprintf.c b/libc/stdio/vfprintf.c
index 10114f061..73bbe63d3 100644
--- a/libc/stdio/vfprintf.c
+++ b/libc/stdio/vfprintf.c
@@ -91,7 +91,6 @@
#define _ISOC99_SOURCE /* for ULLONG primarily... */
#define _GNU_SOURCE
-#define _STDIO_UTILITY /* We're using _uintmaxtostr. */
#include <features.h>
#include "_stdio.h"
#include <stdlib.h>
@@ -414,16 +413,16 @@ typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
intptr_t buf);
extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
- __fp_outfunc_t fp_outfunc);
+ __fp_outfunc_t fp_outfunc) attribute_hidden;
#endif
-extern int _ppfs_init(ppfs_t *ppfs, const char *fmt0); /* validates */
-extern void _ppfs_prepargs(ppfs_t *ppfs, va_list arg); /* sets posargptrs */
-extern void _ppfs_setargs(ppfs_t *ppfs); /* sets argptrs for current spec */
-extern int _ppfs_parsespec(ppfs_t *ppfs); /* parses specifier */
+extern int _ppfs_init(ppfs_t *ppfs, const char *fmt0) attribute_hidden; /* validates */
+extern void _ppfs_prepargs(ppfs_t *ppfs, va_list arg) attribute_hidden; /* sets posargptrs */
+extern void _ppfs_setargs(ppfs_t *ppfs) attribute_hidden; /* sets argptrs for current spec */
+extern int _ppfs_parsespec(ppfs_t *ppfs) attribute_hidden; /* parses specifier */
-extern void _store_inttype(void *dest, int desttype, uintmax_t val);
-extern uintmax_t _load_inttype(int desttype, const void *src, int uflag);
+extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
+extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
/**********************************************************************/
#ifdef L_parse_printf_format
@@ -498,7 +497,7 @@ size_t parse_printf_format(register const char *template,
/**********************************************************************/
#ifdef L__ppfs_init
-int _ppfs_init(register ppfs_t *ppfs, const char *fmt0)
+int attribute_hidden _ppfs_init(register ppfs_t *ppfs, const char *fmt0)
{
int r;
@@ -588,7 +587,7 @@ int _ppfs_init(register ppfs_t *ppfs, const char *fmt0)
#endif
/**********************************************************************/
#ifdef L__ppfs_prepargs
-void _ppfs_prepargs(register ppfs_t *ppfs, va_list arg)
+void attribute_hidden _ppfs_prepargs(register ppfs_t *ppfs, va_list arg)
{
int i;
@@ -607,7 +606,7 @@ void _ppfs_prepargs(register ppfs_t *ppfs, va_list arg)
/**********************************************************************/
#ifdef L__ppfs_setargs
-void _ppfs_setargs(register ppfs_t *ppfs)
+void attribute_hidden _ppfs_setargs(register ppfs_t *ppfs)
{
#ifdef __va_arg_ptr
register void **p = ppfs->argptr;
@@ -821,7 +820,7 @@ printf_arginfo_function *_custom_printf_arginfo[MAX_USER_SPEC];
printf_function _custom_printf_handler[MAX_USER_SPEC];
#endif /* __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */
-extern int _ppfs_parsespec(ppfs_t *ppfs)
+int attribute_hidden _ppfs_parsespec(ppfs_t *ppfs)
{
register const char *fmt;
register const char *p;
diff --git a/libc/stdlib/abort.c b/libc/stdlib/abort.c
index 77c2cdc69..6457836e8 100644
--- a/libc/stdlib/abort.c
+++ b/libc/stdlib/abort.c
@@ -81,6 +81,7 @@ static pthread_mutex_t mylock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
#endif
+extern int __raise (int __sig) __THROW attribute_hidden;
/* Cause an abnormal program termination with core-dump */
void abort(void)
{
@@ -111,7 +112,7 @@ void abort(void)
abort_it:
UNLOCK;
- raise(SIGABRT);
+ __raise(SIGABRT);
LOCK;
}
diff --git a/libc/string/generic/memchr.c b/libc/string/generic/memchr.c
index 6116b8f92..bc0623f3f 100644
--- a/libc/string/generic/memchr.c
+++ b/libc/string/generic/memchr.c
@@ -32,7 +32,7 @@
#undef memchr
/* Search no more than N bytes of S for C. */
-void * memchr (const void * s, int c_in, size_t n)
+void attribute_hidden *__memchr (const void * s, int c_in, size_t n)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -173,3 +173,5 @@ void * memchr (const void * s, int c_in, size_t n)
return 0;
}
+
+strong_alias(__memchr, memchr)
diff --git a/libc/string/generic/memcmp.c b/libc/string/generic/memcmp.c
index d9c3a7cab..a3fcba036 100644
--- a/libc/string/generic/memcmp.c
+++ b/libc/string/generic/memcmp.c
@@ -275,10 +275,7 @@ memcmp_not_common_alignment (srcp1, srcp2, len)
}
int
-memcmp (s1, s2, len)
- const __ptr_t s1;
- const __ptr_t s2;
- size_t len;
+attribute_hidden __memcmp (const __ptr_t s1, const __ptr_t s2, size_t len)
{
op_t a0;
op_t b0;
@@ -334,7 +331,7 @@ memcmp (s1, s2, len)
return 0;
}
-#ifdef weak_alias
-# undef bcmp
-weak_alias (memcmp, bcmp)
-#endif
+
+strong_alias(__memcmp, memcmp)
+
+weak_alias(memcmp, bcmp)
diff --git a/libc/string/generic/memcpy.c b/libc/string/generic/memcpy.c
index 9851fdea6..2fb48ebef 100644
--- a/libc/string/generic/memcpy.c
+++ b/libc/string/generic/memcpy.c
@@ -211,7 +211,7 @@ static void _wordcopy_fwd_dest_aligned (long int dstp, long int srcp, size_t len
((op_t *) dstp)[0] = MERGE (a2, sh_1, a3, sh_2);
}
-void *memcpy (void *dstpp, const void *srcpp, size_t len)
+void attribute_hidden *__memcpy (void *dstpp, const void *srcpp, size_t len)
{
unsigned long int dstp = (long int) dstpp;
unsigned long int srcp = (long int) srcpp;
@@ -244,3 +244,5 @@ void *memcpy (void *dstpp, const void *srcpp, size_t len)
return dstpp;
}
+
+strong_alias(__memcpy, memcpy)
diff --git a/libc/string/generic/memmem.c b/libc/string/generic/memmem.c
index c0f2bd192..5f2c1e244 100644
--- a/libc/string/generic/memmem.c
+++ b/libc/string/generic/memmem.c
@@ -22,7 +22,7 @@
#undef memmem
/* Return the first occurrence of NEEDLE in HAYSTACK. */
-void *memmem (const void *haystack, size_t haystack_len,
+void attribute_hidden *__memmem (const void *haystack, size_t haystack_len,
const void *needle, size_t needle_len)
{
const char *begin;
@@ -48,3 +48,5 @@ void *memmem (const void *haystack, size_t haystack_len,
return NULL;
}
+
+strong_alias(__memmem, memmem)
diff --git a/libc/string/generic/memmove.c b/libc/string/generic/memmove.c
index 21876ce6e..ddf7c8aa4 100644
--- a/libc/string/generic/memmove.c
+++ b/libc/string/generic/memmove.c
@@ -206,7 +206,9 @@ static void _wordcopy_bwd_dest_aligned (long int dstp, long int srcp, size_t len
((op_t *) dstp)[3] = MERGE (a0, sh_1, a1, sh_2);
}
-void *memmove (void *dest, const void *src, size_t len)
+#undef memmove
+
+void attribute_hidden *__memmove (void *dest, const void *src, size_t len)
{
unsigned long int dstp = (long int) dest;
unsigned long int srcp = (long int) src;
@@ -276,3 +278,5 @@ void *memmove (void *dest, const void *src, size_t len)
return (dest);
}
+
+strong_alias(__memmove, memmove)
diff --git a/libc/string/generic/mempcpy.c b/libc/string/generic/mempcpy.c
index 46a2eaf92..cda156edf 100644
--- a/libc/string/generic/mempcpy.c
+++ b/libc/string/generic/mempcpy.c
@@ -8,11 +8,11 @@
#include <string.h>
#undef mempcpy
-#undef __mempcpy
-void *__mempcpy (void *dstpp, const void *srcpp, size_t len)
+void attribute_hidden *__mempcpy (void *dstpp, const void *srcpp, size_t len)
{
memcpy(dstpp, srcpp, len);
return (void *)(((char *)dstpp) + len);
}
-weak_alias (__mempcpy, mempcpy)
+
+strong_alias (__mempcpy, mempcpy)
diff --git a/libc/string/generic/memrchr.c b/libc/string/generic/memrchr.c
index f4d435e09..3f7583919 100644
--- a/libc/string/generic/memrchr.c
+++ b/libc/string/generic/memrchr.c
@@ -33,7 +33,7 @@
#undef memrchr
/* Search no more than N bytes of S for C. */
-void *memrchr (const void * s, int c_in, size_t n)
+void attribute_hidden *__memrchr (const void * s, int c_in, size_t n)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -172,3 +172,5 @@ void *memrchr (const void * s, int c_in, size_t n)
return 0;
}
+
+strong_alias(__memrchr, memrchr)
diff --git a/libc/string/generic/memset.c b/libc/string/generic/memset.c
index 1fedb2c39..0185ad57b 100644
--- a/libc/string/generic/memset.c
+++ b/libc/string/generic/memset.c
@@ -21,11 +21,7 @@
#undef memset
-void *
-memset (dstpp, c, len)
- void *dstpp;
- int c;
- size_t len;
+void attribute_hidden *__memset (void *dstpp, int c, size_t len)
{
long int dstp = (long int) dstpp;
@@ -88,3 +84,5 @@ memset (dstpp, c, len)
return dstpp;
}
+
+strong_alias(__memset, memset)
diff --git a/libc/string/generic/rawmemchr.c b/libc/string/generic/rawmemchr.c
index 0e2ac1c7e..02cb8f629 100644
--- a/libc/string/generic/rawmemchr.c
+++ b/libc/string/generic/rawmemchr.c
@@ -32,7 +32,7 @@
#undef rawmemchr
/* Find the first occurrence of C in S. */
-void *rawmemchr (const void * s, int c_in)
+void attribute_hidden *__rawmemchr (const void * s, int c_in)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -158,3 +158,5 @@ void *rawmemchr (const void * s, int c_in)
}
}
}
+
+strong_alias(__rawmemchr, rawmemchr)
diff --git a/libc/string/generic/strcat.c b/libc/string/generic/strcat.c
index a9ed4a442..0996f9a29 100644
--- a/libc/string/generic/strcat.c
+++ b/libc/string/generic/strcat.c
@@ -22,10 +22,7 @@
#undef strcat
/* Append SRC on the end of DEST. */
-char *
-strcat (dest, src)
- char *dest;
- const char *src;
+char attribute_hidden *__strcat (char *dest, const char *src)
{
char *s1 = dest;
const char *s2 = src;
@@ -49,3 +46,5 @@ strcat (dest, src)
return dest;
}
+
+strong_alias(__strcat, strcat)
diff --git a/libc/string/generic/strchr.c b/libc/string/generic/strchr.c
index d0745060b..c776380e2 100644
--- a/libc/string/generic/strchr.c
+++ b/libc/string/generic/strchr.c
@@ -29,10 +29,7 @@
#undef strchr
/* Find the first occurrence of C in S. */
-char *
-strchr (s, c_in)
- const char *s;
- int c_in;
+char attribute_hidden *__strchr (const char *s, int c_in)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -184,7 +181,6 @@ strchr (s, c_in)
return NULL;
}
-#ifdef weak_alias
-#undef index
-weak_alias (strchr, index)
-#endif
+strong_alias(__strchr, strchr)
+
+weak_alias(strchr, index)
diff --git a/libc/string/generic/strchrnul.c b/libc/string/generic/strchrnul.c
index 908409a4c..faa0f4ff9 100644
--- a/libc/string/generic/strchrnul.c
+++ b/libc/string/generic/strchrnul.c
@@ -26,11 +26,10 @@
#include "memcopy.h"
-#undef __strchrnul
#undef strchrnul
/* Find the first occurrence of C in S or the final NUL byte. */
-char *__strchrnul (const char *s, int c_in)
+char attribute_hidden *__strchrnul (const char *s, int c_in)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -165,4 +164,4 @@ char *__strchrnul (const char *s, int c_in)
return NULL;
}
-weak_alias (__strchrnul, strchrnul)
+strong_alias(__strchrnul, strchrnul)
diff --git a/libc/string/generic/strcmp.c b/libc/string/generic/strcmp.c
index c8212f04b..e42ba9763 100644
--- a/libc/string/generic/strcmp.c
+++ b/libc/string/generic/strcmp.c
@@ -26,10 +26,7 @@
/* Compare S1 and S2, returning less than, equal to or
greater than zero if S1 is lexicographically less than,
equal to or greater than S2. */
-int
-strcmp (p1, p2)
- const char *p1;
- const char *p2;
+int attribute_hidden __strcmp (const char *p1, const char *p2)
{
register const unsigned char *s1 = (const unsigned char *) p1;
register const unsigned char *s2 = (const unsigned char *) p2;
@@ -47,6 +44,9 @@ strcmp (p1, p2)
return c1 - c2;
}
+strong_alias(__strcmp, strcmp)
+
#ifdef __LOCALE_C_ONLY
-weak_alias(strcmp,strcoll);
+weak_alias(__strcmp, __strcoll)
+strong_alias(__strcoll, strcoll)
#endif /* __LOCALE_C_ONLY */
diff --git a/libc/string/generic/strcpy.c b/libc/string/generic/strcpy.c
index 7e40aab3f..08c810f31 100644
--- a/libc/string/generic/strcpy.c
+++ b/libc/string/generic/strcpy.c
@@ -25,10 +25,7 @@
#undef strcpy
/* Copy SRC to DEST. */
-char *
-strcpy (dest, src)
- char *dest;
- const char *src;
+char attribute_hidden *__strcpy (char *dest, const char *src)
{
reg_char c;
char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
@@ -48,3 +45,5 @@ strcpy (dest, src)
return dest;
}
+
+strong_alias(__strcpy, strcpy)
diff --git a/libc/string/generic/strcspn.c b/libc/string/generic/strcspn.c
index c5d2d769d..c41132cf6 100644
--- a/libc/string/generic/strcspn.c
+++ b/libc/string/generic/strcspn.c
@@ -22,10 +22,7 @@
/* Return the length of the maximum initial segment of S
which contains no characters from REJECT. */
-size_t
-strcspn (s, reject)
- const char *s;
- const char *reject;
+size_t attribute_hidden __strcspn (const char *s, const char *reject)
{
size_t count = 0;
@@ -37,3 +34,5 @@ strcspn (s, reject)
return count;
}
+
+strong_alias(__strcspn, strcspn)
diff --git a/libc/string/generic/strlen.c b/libc/string/generic/strlen.c
index 2bbf8203f..aca8c2bd9 100644
--- a/libc/string/generic/strlen.c
+++ b/libc/string/generic/strlen.c
@@ -26,9 +26,7 @@
/* Return the length of the null-terminated string STR. Scan for
the null terminator quickly by testing four bytes at a time. */
-size_t
-strlen (str)
- const char *str;
+size_t attribute_hidden __strlen (const char *str)
{
const char *char_ptr;
const unsigned long int *longword_ptr;
@@ -150,3 +148,5 @@ strlen (str)
}
}
}
+
+strong_alias(__strlen, strlen)
diff --git a/libc/string/generic/strncat.c b/libc/string/generic/strncat.c
index a3d283bf7..f35e0865b 100644
--- a/libc/string/generic/strncat.c
+++ b/libc/string/generic/strncat.c
@@ -22,11 +22,7 @@
#undef strncat
-char *
-strncat (s1, s2, n)
- char *s1;
- const char *s2;
- size_t n;
+char attribute_hidden *__strncat (char *s1, const char *s2, size_t n)
{
reg_char c;
char *s = s1;
@@ -79,3 +75,5 @@ strncat (s1, s2, n)
return s;
}
+
+strong_alias(__strncat, strncat)
diff --git a/libc/string/generic/strncmp.c b/libc/string/generic/strncmp.c
index d9964a883..22aa179b0 100644
--- a/libc/string/generic/strncmp.c
+++ b/libc/string/generic/strncmp.c
@@ -25,11 +25,7 @@
returning less than, equal to or greater than zero
if S1 is lexicographically less than, equal to or
greater than S2. */
-int
-strncmp (s1, s2, n)
- const char *s1;
- const char *s2;
- size_t n;
+int attribute_hidden __strncmp (const char *s1, const char *s2, size_t n)
{
unsigned reg_char c1 = '\0';
unsigned reg_char c2 = '\0';
@@ -70,3 +66,5 @@ strncmp (s1, s2, n)
return c1 - c2;
}
+
+strong_alias(__strncmp, strncmp)
diff --git a/libc/string/generic/strncpy.c b/libc/string/generic/strncpy.c
index 214f38430..a43c48502 100644
--- a/libc/string/generic/strncpy.c
+++ b/libc/string/generic/strncpy.c
@@ -21,11 +21,7 @@
#undef strncpy
-char *
-strncpy (s1, s2, n)
- char *s1;
- const char *s2;
- size_t n;
+char attribute_hidden *__strncpy (char *s1, const char *s2, size_t n)
{
reg_char c;
char *s = s1;
@@ -84,3 +80,5 @@ strncpy (s1, s2, n)
return s;
}
+
+strong_alias(__strncpy, strncpy)
diff --git a/libc/string/generic/strnlen.c b/libc/string/generic/strnlen.c
index bdd3bb475..ff5c13739 100644
--- a/libc/string/generic/strnlen.c
+++ b/libc/string/generic/strnlen.c
@@ -24,9 +24,11 @@
#include <string.h>
#include <stdlib.h>
+#undef strnlen
+
/* Find the length of S, but scan at most MAXLEN characters. If no
'\0' terminator is found in that many characters, return MAXLEN. */
-size_t strnlen (const char *str, size_t maxlen)
+size_t attribute_hidden __strnlen (const char *str, size_t maxlen)
{
const char *char_ptr, *end_ptr = str + maxlen;
const unsigned long int *longword_ptr;
@@ -156,3 +158,5 @@ size_t strnlen (const char *str, size_t maxlen)
char_ptr = end_ptr;
return char_ptr - str;
}
+
+strong_alias(__strnlen, strnlen)
diff --git a/libc/string/generic/strrchr.c b/libc/string/generic/strrchr.c
index 8f815e9ff..bde4d4da0 100644
--- a/libc/string/generic/strrchr.c
+++ b/libc/string/generic/strrchr.c
@@ -21,8 +21,7 @@
#undef strrchr
/* Find the last occurrence of C in S. */
-char *
-strrchr (const char *s, int c)
+char attribute_hidden *__strrchr (const char *s, int c)
{
register const char *found, *p;
@@ -43,7 +42,6 @@ strrchr (const char *s, int c)
return (char *) found;
}
-#ifdef weak_alias
-#undef rindex
+strong_alias(__strrchr, strrchr)
+
weak_alias (strrchr, rindex)
-#endif
diff --git a/libc/string/generic/strsep.c b/libc/string/generic/strsep.c
index 345c722bf..77670607b 100644
--- a/libc/string/generic/strsep.c
+++ b/libc/string/generic/strsep.c
@@ -20,7 +20,7 @@
#undef strsep
-char *strsep (char **stringp, const char *delim)
+char attribute_hidden *__strsep (char **stringp, const char *delim)
{
char *begin, *end;
@@ -63,3 +63,5 @@ char *strsep (char **stringp, const char *delim)
return begin;
}
+
+strong_alias(__strsep, strsep)
diff --git a/libc/string/generic/strspn.c b/libc/string/generic/strspn.c
index dcf8b135d..1923f8afd 100644
--- a/libc/string/generic/strspn.c
+++ b/libc/string/generic/strspn.c
@@ -22,10 +22,7 @@
/* Return the length of the maximum initial segment
of S which contains only characters in ACCEPT. */
-size_t
-strspn (s, accept)
- const char *s;
- const char *accept;
+size_t attribute_hidden __strspn (const char *s, const char *accept)
{
const char *p;
const char *a;
@@ -44,3 +41,5 @@ strspn (s, accept)
return count;
}
+
+strong_alias(__strspn, strspn)
diff --git a/libc/string/generic/strstr.c b/libc/string/generic/strstr.c
index 45a64bb9b..b16261e56 100644
--- a/libc/string/generic/strstr.c
+++ b/libc/string/generic/strstr.c
@@ -32,10 +32,7 @@ typedef unsigned chartype;
#undef strstr
-char *
-strstr (phaystack, pneedle)
- const char *phaystack;
- const char *pneedle;
+char attribute_hidden *__strstr (const char *phaystack, const char *pneedle)
{
const unsigned char *haystack, *needle;
chartype b;
@@ -114,3 +111,5 @@ foundneedle:
ret0:
return 0;
}
+
+strong_alias(__strstr, strstr)
diff --git a/libc/string/generic/strtok_r.c b/libc/string/generic/strtok_r.c
index 15ca8b4ba..40d4e1a78 100644
--- a/libc/string/generic/strtok_r.c
+++ b/libc/string/generic/strtok_r.c
@@ -21,7 +21,6 @@
#include <string.h>
#undef strtok_r
-#undef __strtok_r
/* Parse S into tokens separated by characters in DELIM.
If S is NULL, the saved pointer in SAVE_PTR is used as
@@ -33,8 +32,7 @@
x = strtok_r(NULL, "=", &sp); // x = NULL
// s = "abc\0-def\0"
*/
-char *
-__strtok_r (s, delim, save_ptr)
+char attribute_hidden *__strtok_r (s, delim, save_ptr)
char *s;
const char *delim;
char **save_ptr;
@@ -66,4 +64,5 @@ __strtok_r (s, delim, save_ptr)
}
return token;
}
-weak_alias (__strtok_r, strtok_r)
+
+strong_alias(__strtok_r, strtok_r)
diff --git a/libc/sysdeps/linux/alpha/bits/setjmp.h b/libc/sysdeps/linux/alpha/bits/setjmp.h
index fcd57d61d..441313cba 100644
--- a/libc/sysdeps/linux/alpha/bits/setjmp.h
+++ b/libc/sysdeps/linux/alpha/bits/setjmp.h
@@ -1,5 +1,5 @@
/* Define the machine-dependent type `jmp_buf'. Alpha version.
- Copyright (C) 1992, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1997, 2003 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
@@ -17,7 +17,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -80,3 +83,5 @@ typedef long int __jmp_buf[17];
#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
#endif
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/bfin/bits/setjmp.h b/libc/sysdeps/linux/bfin/bits/setjmp.h
index abb7db6a0..ee3f5e787 100644
--- a/libc/sysdeps/linux/bfin/bits/setjmp.h
+++ b/libc/sysdeps/linux/bfin/bits/setjmp.h
@@ -2,23 +2,25 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. bfin version. Lineo, Inc. 2001*/
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -51,3 +53,5 @@ typedef struct
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)->__pregs[6])
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/common/__syscall_fcntl.c b/libc/sysdeps/linux/common/__syscall_fcntl.c
index e4257b0c8..701877c06 100644
--- a/libc/sysdeps/linux/common/__syscall_fcntl.c
+++ b/libc/sysdeps/linux/common/__syscall_fcntl.c
@@ -2,9 +2,9 @@
/*
* __syscall_fcntl() for uClibc
*
- * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
#include "syscalls.h"
@@ -12,7 +12,7 @@
#include <fcntl.h>
#if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
-extern int __libc_fcntl64(int fd, int cmd, long arg);
+extern int __libc_fcntl64(int fd, int cmd, ...);
#endif
#define __NR___syscall_fcntl __NR_fcntl
@@ -39,7 +39,7 @@ int __libc_fcntl(int fd, int cmd, ...)
return (__syscall_fcntl(fd, cmd, arg));
}
-weak_alias(__libc_fcntl, fcntl);
+weak_alias(__libc_fcntl, fcntl)
#if ! defined __NR_fcntl64 && defined __UCLIBC_HAS_LFS__
-weak_alias(__libc_fcntl, fcntl64);
+weak_alias(__libc_fcntl, fcntl64)
#endif
diff --git a/libc/sysdeps/linux/common/__syscall_fcntl64.c b/libc/sysdeps/linux/common/__syscall_fcntl64.c
index bf7082969..7f9164b52 100644
--- a/libc/sysdeps/linux/common/__syscall_fcntl64.c
+++ b/libc/sysdeps/linux/common/__syscall_fcntl64.c
@@ -2,9 +2,9 @@
/*
* __syscall_fcntl64() for uClibc
*
- * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
#include "syscalls.h"
@@ -26,5 +26,5 @@ int __libc_fcntl64(int fd, int cmd, ...)
return (__syscall_fcntl64(fd, cmd, arg));
}
-weak_alias(__libc_fcntl64, fcntl64);
+weak_alias(__libc_fcntl64, fcntl64)
#endif
diff --git a/libc/sysdeps/linux/common/_exit.c b/libc/sysdeps/linux/common/_exit.c
index 2a1b2c941..d0a4ee1d6 100644
--- a/libc/sysdeps/linux/common/_exit.c
+++ b/libc/sysdeps/linux/common/_exit.c
@@ -32,8 +32,10 @@
static inline _syscall1(void, __syscall_exit, int, status);
#endif
-void _exit(int status)
+void attribute_noreturn _exit(int status)
{
- INLINE_SYSCALL(exit, 1, status);
+ /* The loop is added only to keep gcc happy. */
+ while(1)
+ INLINE_SYSCALL(exit, 1, status);
}
diff --git a/libc/sysdeps/linux/common/bits/byteswap.h b/libc/sysdeps/linux/common/bits/byteswap.h
index 38d854013..949ed0bc9 100644
--- a/libc/sysdeps/linux/common/bits/byteswap.h
+++ b/libc/sysdeps/linux/common/bits/byteswap.h
@@ -1,5 +1,5 @@
/* Macros to swap the order of bytes in integer values.
- Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,2000,2001,2002,2005 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,32 +25,35 @@
#define _BITS_BYTESWAP_H 1
/* Swap bytes in 16 bit value. */
+#define __bswap_constant_16(x) \
+ ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
+
#ifdef __GNUC__
# define __bswap_16(x) \
(__extension__ \
- ({ unsigned short int __bsx = (x); \
- ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); }))
+ ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); }))
#else
static __inline unsigned short int
__bswap_16 (unsigned short int __bsx)
{
- return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
+ return __bswap_constant_16 (__bsx);
}
#endif
/* Swap bytes in 32 bit value. */
+#define __bswap_constant_32(x) \
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+
#ifdef __GNUC__
# define __bswap_32(x) \
- (__extension__ \
- ({ unsigned int __bsx = (x); \
- ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | \
- (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); }))
+ (__extension__ \
+ ({ register unsigned int __bsx = (x); __bswap_constant_32 (__bsx); }))
#else
static __inline unsigned int
__bswap_32 (unsigned int __bsx)
{
- return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
- (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));
+ return __bswap_constant_32 (__bsx);
}
#endif
diff --git a/libc/sysdeps/linux/common/bits/confname.h b/libc/sysdeps/linux/common/bits/confname.h
index ba8868af4..a66f85aac 100644
--- a/libc/sysdeps/linux/common/bits/confname.h
+++ b/libc/sysdeps/linux/common/bits/confname.h
@@ -1,5 +1,6 @@
/* `sysconf', `pathconf', and `confstr' NAME values. Generic version.
- Copyright (C) 1993, 1995-1998, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1993,1995-1998,2000,2001,2003,2004
+ 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
@@ -471,96 +472,96 @@ enum
_CS_PATH, /* The default search path. */
#define _CS_PATH _CS_PATH
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+# define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
+
# if (defined __USE_FILE_OFFSET64 || defined __USE_LARGEFILE64 \
|| defined __USE_LARGEFILE)
_CS_LFS_CFLAGS = 1000,
-# define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
+#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
_CS_LFS_LDFLAGS,
-# define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
+#define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
_CS_LFS_LIBS,
-# define _CS_LFS_LIBS _CS_LFS_LIBS
+#define _CS_LFS_LIBS _CS_LFS_LIBS
_CS_LFS_LINTFLAGS,
-# define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
+#define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
_CS_LFS64_CFLAGS,
-# define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
+#define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
_CS_LFS64_LDFLAGS,
-# define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
+#define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
_CS_LFS64_LIBS,
-# define _CS_LFS64_LIBS _CS_LFS64_LIBS
+#define _CS_LFS64_LIBS _CS_LFS64_LIBS
_CS_LFS64_LINTFLAGS,
-# define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
+#define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
# endif
# ifdef __USE_UNIX98
_CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
-# define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
+#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
_CS_XBS5_ILP32_OFF32_LDFLAGS,
-# define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
+#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
_CS_XBS5_ILP32_OFF32_LIBS,
-# define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
+#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
_CS_XBS5_ILP32_OFF32_LINTFLAGS,
-# define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
+#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
_CS_XBS5_ILP32_OFFBIG_CFLAGS,
-# define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
+#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
_CS_XBS5_ILP32_OFFBIG_LDFLAGS,
-# define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
+#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
_CS_XBS5_ILP32_OFFBIG_LIBS,
-# define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
+#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
_CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
-# define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
_CS_XBS5_LP64_OFF64_CFLAGS,
-# define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
+#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
_CS_XBS5_LP64_OFF64_LDFLAGS,
-# define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
+#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
_CS_XBS5_LP64_OFF64_LIBS,
-# define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
+#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
_CS_XBS5_LP64_OFF64_LINTFLAGS,
-# define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
+#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
_CS_XBS5_LPBIG_OFFBIG_CFLAGS,
-# define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
+#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
-# define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
_CS_XBS5_LPBIG_OFFBIG_LIBS,
-# define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
+#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
-# define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
# endif
# ifdef __USE_XOPEN2K
_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
-# define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
-# define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
_CS_POSIX_V6_ILP32_OFF32_LIBS,
-# define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
-# define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
-# define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
-# define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
-# define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
-# define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
_CS_POSIX_V6_LP64_OFF64_CFLAGS,
-# define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
-# define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
_CS_POSIX_V6_LP64_OFF64_LIBS,
-# define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
+#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
-# define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
-# define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
-# define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
-# define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
- _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
-# define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
# endif
-
- _CS_V6_WIDTH_RESTRICTED_ENVS
-# define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
};
#endif
diff --git a/libc/sysdeps/linux/common/bits/environments.h b/libc/sysdeps/linux/common/bits/environments.h
index c3829927b..4617dc45f 100644
--- a/libc/sysdeps/linux/common/bits/environments.h
+++ b/libc/sysdeps/linux/common/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004 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
@@ -72,4 +72,7 @@
# define _XBS5_LP64_OFF64 -1
# define _XBS5_LPBIG_OFFBIG -1
+/* CFLAGS. */
+#define __ILP32_OFFBIG_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
#endif /* __WORDSIZE == 32 */
diff --git a/libc/sysdeps/linux/common/bits/getopt.h b/libc/sysdeps/linux/common/bits/getopt.h
index fd1cb7b15..a192c039b 100644
--- a/libc/sysdeps/linux/common/bits/getopt.h
+++ b/libc/sysdeps/linux/common/bits/getopt.h
@@ -1,5 +1,6 @@
/* Declarations for getopt.
- Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ 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
@@ -19,6 +20,8 @@
#ifndef _GETOPT_H
+#include <features.h>
+
#ifndef __need_getopt
# define _GETOPT_H 1
#endif
@@ -34,6 +37,17 @@
# include <ctype.h>
#endif
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -133,23 +147,26 @@ struct option
arguments to the option '\0'. This behavior is specific to the GNU
`getopt'. */
+#if defined __GNU_LIBRARY__ || defined __UCLIBC__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
-extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW;
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* __GNU_LIBRARY__ */
#ifndef __need_getopt
-extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
- const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int __argc, char *const *__argv,
+extern int getopt_long (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+extern int getopt_long_only (int ___argc, char *const *___argv,
const char *__shortopts,
- const struct option *__longopts, int *__longind);
+ const struct option *__longopts, int *__longind)
+ __THROW;
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
#endif
#ifdef __cplusplus
diff --git a/libc/sysdeps/linux/common/bits/in.h b/libc/sysdeps/linux/common/bits/in.h
index e6cf57574..14d3db858 100644
--- a/libc/sysdeps/linux/common/bits/in.h
+++ b/libc/sysdeps/linux/common/bits/in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000, 2004 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
@@ -30,8 +30,8 @@
#define IP_HDRINCL 3 /* int; Header is included with data. */
#define IP_OPTIONS 4 /* ip_opts; IP per-packet options. */
#define IP_ROUTER_ALERT 5 /* bool */
-#define IP_RECVOPTS 6 /* bool */
-#define IP_RETOPTS 7 /* bool */
+#define IP_RECVOPTS 6 /* bool; Receive all IP options w/datagram. */
+#define IP_RETOPTS 7 /* bool; Set/get IP per-packet options. */
#define IP_PKTINFO 8 /* bool */
#define IP_PKTOPTIONS 9
#define IP_PMTUDISC 10 /* obsolete name? */
@@ -44,9 +44,24 @@
#define IP_MULTICAST_LOOP 34 /* i_char; set/get IP multicast loopback */
#define IP_ADD_MEMBERSHIP 35 /* ip_mreq; add an IP group membership */
#define IP_DROP_MEMBERSHIP 36 /* ip_mreq; drop an IP group membership */
+#define IP_UNBLOCK_SOURCE 37 /* ip_mreq_source: unblock data from source */
+#define IP_BLOCK_SOURCE 38 /* ip_mreq_source: block data from source */
+#define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */
+#define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */
+#define IP_MSFILTER 41
+#define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
+#define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
+#define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
+#define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
+#define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
+#define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
+#define MCAST_MSFILTER 48
+
+#define MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
/* For BSD compatibility. */
-#define IP_RECVRETOPTS IP_RETOPTS
+#define IP_RECVRETOPTS IP_RETOPTS /* bool; Receive IP options for response. */
/* IP_MTU_DISCOVER arguments. */
#define IP_PMTUDISC_DONT 0 /* Never send DF frames. */
@@ -60,9 +75,9 @@
#define IP_DEFAULT_MULTICAST_LOOP 1
#define IP_MAX_MEMBERSHIPS 20
-/* Structure used to describe IP options for IP_OPTIONS. The `ip_dst'
- field is used for the first-hop gateway when using a source route
- (this gets put into the header proper). */
+/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
+ The `ip_dst' field is used for the first-hop gateway when using a
+ source route (this gets put into the header proper). */
struct ip_opts
{
struct in_addr ip_dst; /* First hop; zero without source route. */
@@ -115,15 +130,19 @@ struct in_pktinfo
#define IPV6_MTU_DISCOVER 23
#define IPV6_MTU 24
#define IPV6_RECVERR 25
+#define IPV6_V6ONLY 26
+#define IPV6_JOIN_ANYCAST 27
+#define IPV6_LEAVE_ANYCAST 28
+#define IPV6_IPSEC_POLICY 34
+#define IPV6_XFRM_POLICY 35
#define SCM_SRCRT IPV6_RXSRCRT
/* Obsolete synonyms for the above. */
-#define IPV6_RXHOPOPTS IPV6_HOPOPTS
-#define IPV6_RXDSTOPTS IPV6_DSTOPTS
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
-
+#define IPV6_RXHOPOPTS IPV6_HOPOPTS
+#define IPV6_RXDSTOPTS IPV6_DSTOPTS
/* IPV6_MTU_DISCOVER values. */
#define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
diff --git a/libc/sysdeps/linux/common/bits/ioctls.h b/libc/sysdeps/linux/common/bits/ioctls.h
index b49ca2076..11bb4c485 100644
--- a/libc/sysdeps/linux/common/bits/ioctls.h
+++ b/libc/sysdeps/linux/common/bits/ioctls.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2003 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
@@ -48,6 +48,7 @@
#define SIOCSIFMEM 0x8920 /* set memory address (BSD) */
#define SIOCGIFMTU 0x8921 /* get MTU size */
#define SIOCSIFMTU 0x8922 /* set MTU size */
+#define SIOCSIFNAME 0x8923 /* set interface name */
#define SIOCSIFHWADDR 0x8924 /* set hardware address */
#define SIOCGIFENCAP 0x8925 /* get/set encapsulations */
#define SIOCSIFENCAP 0x8926
diff --git a/libc/sysdeps/linux/common/bits/kernel_stat.h b/libc/sysdeps/linux/common/bits/kernel_stat.h
index 4bcc0fe3a..571c08fa6 100644
--- a/libc/sysdeps/linux/common/bits/kernel_stat.h
+++ b/libc/sysdeps/linux/common/bits/kernel_stat.h
@@ -1,57 +1,2 @@
-#ifndef _BITS_STAT_STRUCT_H
-#define _BITS_STAT_STRUCT_H
-
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
- * different opinion on the subject... */
-#warning "Please verify struct kernel_stat for your architecture actually matches struct kernel_stat for x86 If it doesn't, then you will need to add a proper kernel_stat.h for your architecture..."
-
-struct kernel_stat {
- unsigned short st_dev;
- unsigned short __pad1;
- unsigned long st_ino;
- unsigned short st_mode;
- unsigned short st_nlink;
- unsigned short st_uid;
- unsigned short st_gid;
- unsigned short st_rdev;
- unsigned short __pad2;
- unsigned long st_size;
- unsigned long st_blksize;
- unsigned long st_blocks;
- unsigned long st_atime;
- unsigned long __unused1;
- unsigned long st_mtime;
- unsigned long __unused2;
- unsigned long st_ctime;
- unsigned long __unused3;
- unsigned long __unused4;
- unsigned long __unused5;
-};
-
-struct kernel_stat64 {
- unsigned short st_dev;
- unsigned char __pad0[10];
-#define _HAVE_STAT64___ST_INO
- unsigned long __st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
- unsigned long st_uid;
- unsigned long st_gid;
- unsigned short st_rdev;
- unsigned char __pad3[10];
- long long st_size;
- unsigned long st_blksize;
- unsigned long st_blocks; /* Number 512-byte blocks allocated. */
- unsigned long __pad4; /* future possible st_blocks high bits */
- unsigned long st_atime;
- unsigned long __pad5;
- unsigned long st_mtime;
- unsigned long __pad6;
- unsigned long st_ctime;
- unsigned long __pad7; /* will be high 32 bits of ctime someday */
- unsigned long long st_ino;
-};
-
-#endif /* _BITS_STAT_STRUCT_H */
-
+/* bits/kernel_stat.h is architecture specific. */
+#error "This file must be supplied by every Linux architecture."
diff --git a/libc/sysdeps/linux/common/bits/local_lim.h b/libc/sysdeps/linux/common/bits/local_lim.h
index 0a7c83706..d4671e4a8 100644
--- a/libc/sysdeps/linux/common/bits/local_lim.h
+++ b/libc/sysdeps/linux/common/bits/local_lim.h
@@ -1,21 +1,21 @@
/* Minimum guaranteed maximum values for system limits. Linux version.
- Copyright (C) 1993, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1993-1998, 2000, 2003, 2004 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* The kernel header pollutes the namespace with the NR_OPEN symbol
and defines LINK_MAX although filesystems have different maxima. A
@@ -66,12 +66,24 @@
/* This is the value this implementation supports. */
#define PTHREAD_THREADS_MAX 1024
+/* Minimum size for a thread. We are free to choose a reasonable value. */
+#define PTHREAD_STACK_MIN 16384
+
/* Maximum amount by which a process can descrease its asynchronous I/O
priority level. */
#define AIO_PRIO_DELTA_MAX 20
-/* Minimum size for a thread. We are free to choose a reasonable value. */
-#define PTHREAD_STACK_MIN 16384
+/* Maximum tty name length. */
+#define TTY_NAME_MAX 32
+
+/* Maximum login name length. This is arbitrary. */
+#define LOGIN_NAME_MAX 256
+
+/* Maximum host name length. */
+#define HOST_NAME_MAX 64
+
+/* Maximum message queue priority level. */
+#define MQ_PRIO_MAX 32768
/* Maximum number of POSIX timers available. */
#define TIMER_MAX 256
diff --git a/libc/sysdeps/linux/common/bits/msq.h b/libc/sysdeps/linux/common/bits/msq.h
index cd4624301..32a49b592 100644
--- a/libc/sysdeps/linux/common/bits/msq.h
+++ b/libc/sysdeps/linux/common/bits/msq.h
@@ -32,6 +32,7 @@
typedef unsigned long int msgqnum_t;
typedef unsigned long int msglen_t;
+
/* Structure of record for one message inside the kernel.
The type `struct msg' is opaque. */
struct msqid_ds
diff --git a/libc/sysdeps/linux/common/bits/posix_opt.h b/libc/sysdeps/linux/common/bits/posix_opt.h
index 9329dfc15..330989128 100644
--- a/libc/sysdeps/linux/common/bits/posix_opt.h
+++ b/libc/sysdeps/linux/common/bits/posix_opt.h
@@ -1,24 +1,28 @@
/* Define POSIX options for Linux.
- Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1999,2000,2002,2003 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
-#ifndef _POSIX_OPT_H
-#define _POSIX_OPT_H 1
+/*
+ * Never include this file directly; use <unistd.h> instead.
+ */
+
+#ifndef _BITS_POSIX_OPT_H
+#define _BITS_POSIX_OPT_H 1
/* Job control is supported. */
#define _POSIX_JOB_CONTROL 1
@@ -27,27 +31,27 @@
#define _POSIX_SAVED_IDS 1
/* Priority scheduling is supported. */
-#define _POSIX_PRIORITY_SCHEDULING 1
+#define _POSIX_PRIORITY_SCHEDULING 200112L
/* Synchronizing file data is supported. */
-#define _POSIX_SYNCHRONIZED_IO 1
+#define _POSIX_SYNCHRONIZED_IO 200112L
/* The fsync function is present. */
-#define _POSIX_FSYNC 1
+#define _POSIX_FSYNC 200112L
/* Mapping of files to memory is supported. */
-#define _POSIX_MAPPED_FILES 1
+#define _POSIX_MAPPED_FILES 200112L
/* Locking of all memory is supported. */
#ifdef __ARCH_HAS_MMU__
-# define _POSIX_MEMLOCK 1
+# define _POSIX_MEMLOCK 200112L
#else
# undef _POSIX_MEMLOCK
#endif
/* Locking of ranges of memory is supported. */
#ifdef __ARCH_HAS_MMU__
-# define _POSIX_MEMLOCK_RANGE 1
+# define _POSIX_MEMLOCK_RANGE 200112L
#else
# define _POSIX_MEMLOCK_RANGE
#endif
@@ -105,7 +109,7 @@
#endif
/* We provide priority scheduling for threads. */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
/* We support user-defined stack sizes. */
#define _POSIX_THREAD_ATTR_STACKSIZE 1
@@ -121,7 +125,7 @@
#endif
/* Real-time signals are supported. */
-#define _POSIX_REALTIME_SIGNALS 1
+#define _POSIX_REALTIME_SIGNALS 200112L
/* We support asynchronous I/O. */
#define _POSIX_ASYNCHRONOUS_IO 1
@@ -147,46 +151,46 @@
# undef _LFS64_STDIO
#endif
-/* POSIX shared memory objects are implemented. */
-#define _POSIX_SHARED_MEMORY_OBJECTS 1
+/* POSIX timers are available. */
+#define _POSIX_TIMERS 200112L
-/* GNU libc provides regular expression handling. */
-#ifdef __UCLIBC_HAS_REGEX__
-# define _POSIX_REGEXP 1
-#else
-# undef _POSIX_REGEXP
-#endif
+/* POSIX shared memory objects are implemented. */
+#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
#if defined(__i386__)
/* CPU-time clocks supported. */
-#define _POSIX_CPUTIME 200912L
+# define _POSIX_CPUTIME 200912L
/* We support the clock also in threads. */
-#define _POSIX_THREAD_CPUTIME 200912L
+# define _POSIX_THREAD_CPUTIME 200912L
#endif
/* Reader/Writer locks are available. */
#define _POSIX_READER_WRITER_LOCKS 200912L
+/* GNU libc provides regular expression handling. */
+#ifdef __UCLIBC_HAS_REGEX__
+# define _POSIX_REGEXP 1
+#else
+# undef _POSIX_REGEXP
+#endif
+
/* We have a POSIX shell. */
#define _POSIX_SHELL 1
+/* The `spawn' function family is supported. */
+#define _POSIX_SPAWN 200912L
+
/* We support the Timeouts option. */
#define _POSIX_TIMEOUTS 200912L
/* We support spinlocks. */
#define _POSIX_SPIN_LOCKS 200912L
-/* The `spawn' function family is supported. */
-#define _POSIX_SPAWN 200912L
-
-/* We have POSIX timers. */
-#define _POSIX_TIMERS 1
-
/* The barrier functions are available. */
#define _POSIX_BARRIERS 200912L
/* POSIX message queues are not yet supported. */
#undef _POSIX_MESSAGE_PASSING
-#endif /* posix_opt.h */
+#endif /* bits/posix_opt.h */
diff --git a/libc/sysdeps/linux/common/bits/resource.h b/libc/sysdeps/linux/common/bits/resource.h
index 30825c2e0..1d438122e 100644
--- a/libc/sysdeps/linux/common/bits/resource.h
+++ b/libc/sysdeps/linux/common/bits/resource.h
@@ -1,5 +1,6 @@
/* Bit values & structures for resource limits. Linux version.
- Copyright (C) 1994,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
+ 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
@@ -55,34 +56,35 @@ enum __rlimit_resource
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
- RLIMIT_RSS = 5,
-#define RLIMIT_RSS RLIMIT_RSS
+ __RLIMIT_RSS = 5,
+#define RLIMIT_RSS __RLIMIT_RSS
/* Number of open files. */
RLIMIT_NOFILE = 7,
- RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
+ __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
-#define RLIMIT_OFILE RLIMIT_OFILE
+#define RLIMIT_OFILE __RLIMIT_OFILE
- /* Address space limit (?) */
+ /* Address space limit. */
RLIMIT_AS = 9,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
- RLIMIT_NPROC = 6,
-#define RLIMIT_NPROC RLIMIT_NPROC
+ __RLIMIT_NPROC = 6,
+#define RLIMIT_NPROC __RLIMIT_NPROC
/* Locked-in-memory address space. */
- RLIMIT_MEMLOCK = 8,
-#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
+ __RLIMIT_MEMLOCK = 8,
+#define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
/* Maximum number of file locks. */
- RLIMIT_LOCKS = 10,
-#define RLIMIT_LOCKS RLIMIT_LOCKS
+ __RLIMIT_LOCKS = 10,
+#define RLIMIT_LOCKS __RLIMIT_LOCKS
- RLIM_NLIMITS = 11
-#define RLIMIT_NLIMITS RLIMIT_NLIMITS
-#define RLIM_NLIMITS RLIM_NLIMITS
+ __RLIMIT_NLIMITS = 11,
+ __RLIM_NLIMITS = __RLIMIT_NLIMITS
+#define RLIMIT_NLIMITS __RLIMIT_NLIMITS
+#define RLIM_NLIMITS __RLIM_NLIMITS
};
/* Value to indicate that there is no limit. */
diff --git a/libc/sysdeps/linux/common/bits/setjmp.h b/libc/sysdeps/linux/common/bits/setjmp.h
index 9150d8d76..ad9f04d71 100644
--- a/libc/sysdeps/linux/common/bits/setjmp.h
+++ b/libc/sysdeps/linux/common/bits/setjmp.h
@@ -1,7 +1,2 @@
-/* Define the machine-dependent type `jmp_buf'. Stub version. */
-
-#ifndef _SETJMP_H
-# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-#endif
-
-typedef int __jmp_buf[1];
+/* bits/setjmp.h is architecture specific. */
+#error "This file must be supplied by every Linux architecture."
diff --git a/libc/sysdeps/linux/common/bits/sigthread.h b/libc/sysdeps/linux/common/bits/sigthread.h
index 0a634ac68..9e6b62e4b 100644
--- a/libc/sysdeps/linux/common/bits/sigthread.h
+++ b/libc/sysdeps/linux/common/bits/sigthread.h
@@ -1,21 +1,21 @@
-/* Signal handling function for threaded programs.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Signal handling function for threaded programs. Generic version.
+ Copyright (C) 2000 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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
#ifndef _BITS_SIGTHREAD_H
#define _BITS_SIGTHREAD_H 1
@@ -24,10 +24,10 @@
# error "Never include this file directly. Use <pthread.h> instead"
#endif
-/* Functions for handling signals. */
-
-/* Modify the signal mask for the calling thread. The arguments have
- the same meaning as for sigprocmask(2). */
+/* Modify the signal mask for the calling thread. The arguments have the
+ same meaning as for sigprocmask; in fact, this and sigprocmask might be
+ the same function. We declare this the same on all platforms, since it
+ doesn't use any thread-related types. */
extern int pthread_sigmask (int __how,
__const __sigset_t *__restrict __newmask,
__sigset_t *__restrict __oldmask)__THROW;
diff --git a/libc/sysdeps/linux/common/bits/socket.h b/libc/sysdeps/linux/common/bits/socket.h
index 61644073b..894cf0da2 100644
--- a/libc/sysdeps/linux/common/bits/socket.h
+++ b/libc/sysdeps/linux/common/bits/socket.h
@@ -1,5 +1,5 @@
/* System-specific socket constants and types. Linux version.
- Copyright (C) 1991,1992,1994-1999,2000,2001 Free Software Foundation, Inc.
+ Copyright (C) 1991,1992,1994-2001, 2004 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
@@ -212,6 +212,9 @@ enum
/* Structure describing messages sent by
`sendmsg' and received by `recvmsg'. */
+/* Note: do not change these members to match glibc; these match the
+ SuSv3 spec already (e.g. msg_iovlen/msg_controllen).
+ http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */
struct msghdr
{
void *msg_name; /* Address to send to/receive from. */
diff --git a/libc/sysdeps/linux/common/bits/statvfs.h b/libc/sysdeps/linux/common/bits/statvfs.h
index 32e03f31e..cca0871ac 100644
--- a/libc/sysdeps/linux/common/bits/statvfs.h
+++ b/libc/sysdeps/linux/common/bits/statvfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2001, 2002 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
@@ -22,6 +22,10 @@
#include <bits/types.h> /* For __fsblkcnt_t and __fsfilcnt_t. */
+#if __WORDSIZE == 32
+#define _STATVFSBUF_F_UNUSED
+#endif
+
struct statvfs
{
unsigned long int f_bsize;
@@ -42,12 +46,13 @@ struct statvfs
__fsfilcnt64_t f_favail;
#endif
unsigned long int f_fsid;
+#ifdef _STATVFSBUF_F_UNUSED
int __f_unused;
+#endif
unsigned long int f_flag;
unsigned long int f_namemax;
int __f_spare[6];
};
-#define _STATVFSBUF_F_UNUSED
#ifdef __USE_LARGEFILE64
struct statvfs64
@@ -61,7 +66,9 @@ struct statvfs64
__fsfilcnt64_t f_ffree;
__fsfilcnt64_t f_favail;
unsigned long int f_fsid;
+#ifdef _STATVFSBUF_F_UNUSED
int __f_unused;
+#endif
unsigned long int f_flag;
unsigned long int f_namemax;
int __f_spare[6];
@@ -69,14 +76,15 @@ struct statvfs64
#endif
/* Definitions for the flag in `f_flag'. These definitions should be
- kept in sync which the definitions in <sys/mount.h>. */
+ kept in sync with the definitions in <sys/mount.h>. */
enum
{
ST_RDONLY = 1, /* Mount read-only. */
#define ST_RDONLY ST_RDONLY
- ST_NOSUID = 2, /* Ignore suid and sgid bits. */
+ ST_NOSUID = 2 /* Ignore suid and sgid bits. */
#define ST_NOSUID ST_NOSUID
#ifdef __USE_GNU
+ ,
ST_NODEV = 4, /* Disallow access to device special files. */
# define ST_NODEV ST_NODEV
ST_NOEXEC = 8, /* Disallow program execution. */
@@ -93,7 +101,7 @@ enum
# define ST_IMMUTABLE ST_IMMUTABLE
ST_NOATIME = 1024, /* Do not update access times. */
# define ST_NOATIME ST_NOATIME
- ST_NODIRATIME /* Do not update directory access times. */
+ ST_NODIRATIME = 2048 /* Do not update directory access times. */
# define ST_NODIRATIME ST_NODIRATIME
#endif /* Use GNU. */
};
diff --git a/libc/sysdeps/linux/common/bits/termios.h b/libc/sysdeps/linux/common/bits/termios.h
index 887b309ad..c71e4ad1f 100644
--- a/libc/sysdeps/linux/common/bits/termios.h
+++ b/libc/sysdeps/linux/common/bits/termios.h
@@ -1,5 +1,6 @@
/* termios type and macro definitions. Linux version.
- Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005
+ 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
@@ -36,6 +37,8 @@ struct termios
cc_t c_cc[NCCS]; /* control characters */
speed_t c_ispeed; /* input speed */
speed_t c_ospeed; /* output speed */
+#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
+#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
};
/* c_cc characters */
@@ -72,6 +75,7 @@ struct termios
#define IXANY 0004000
#define IXOFF 0010000
#define IMAXBEL 0020000
+#define IUTF8 0040000
/* c_oflag bits */
#define OPOST 0000001
@@ -168,6 +172,7 @@ struct termios
#define __MAX_BAUD B4000000
#ifdef __USE_MISC
# define CIBAUD 002003600000 /* input baud rate (not used) */
+# define CMSPAR 010000000000 /* mark or space (stick) parity */
# define CRTSCTS 020000000000 /* flow control */
#endif
diff --git a/libc/sysdeps/linux/common/bits/types.h b/libc/sysdeps/linux/common/bits/types.h
index aebd8b8c5..6068f6fd2 100644
--- a/libc/sysdeps/linux/common/bits/types.h
+++ b/libc/sysdeps/linux/common/bits/types.h
@@ -37,22 +37,7 @@ typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
-#if __WORDSIZE == 64
-typedef long int __quad_t;
-typedef unsigned long int __u_quad_t;
-#elif defined(__GNUC__)
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-#else
-typedef struct
- {
- long int __val[2];
- } __quad_t;
-typedef struct
- {
- __u_long __val[2];
- } __u_quad_t;
-#endif
+/* Fixed-size types, underlying types depend on word size and compiler. */
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
@@ -66,7 +51,24 @@ typedef unsigned long int __uint64_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
#endif
-typedef __quad_t *__qaddr_t;
+
+/* quad_t is also 64 bits. */
+#if __WORDSIZE == 64
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+#elif defined(__GNUC__)
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+#else
+typedef struct
+{
+ long __val[2];
+} __quad_t;
+typedef struct
+{
+ __u_long __val[2];
+} __u_quad_t;
+#endif
#if __WORDSIZE == 32
# define __SWORD_TYPE int
@@ -97,6 +99,7 @@ typedef struct
/* Everythin' else. */
typedef int __daddr_t; /* The type of a disk address. */
+typedef __quad_t *__rqaddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
@@ -150,7 +153,7 @@ typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;
/* Duplicates info from stdint.h but this is used in unistd.h. */
-typedef int __intptr_t;
+typedef __SWORD_TYPE __intptr_t;
/* Duplicate info from sys/socket.h. */
typedef unsigned int __socklen_t;
diff --git a/libc/sysdeps/linux/common/bits/uClibc_ctype.h b/libc/sysdeps/linux/common/bits/uClibc_ctype.h
index f682d9762..7c2d412cf 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_ctype.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_ctype.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2002 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
diff --git a/libc/sysdeps/linux/common/bits/uClibc_fpmax.h b/libc/sysdeps/linux/common/bits/uClibc_fpmax.h
index 08d47129c..690f7b23b 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_fpmax.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_fpmax.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* Define a maximal floating point type, and the associated constants
diff --git a/libc/sysdeps/linux/common/bits/uClibc_locale.h b/libc/sysdeps/linux/common/bits/uClibc_locale.h
index 9287e557e..a6191a32d 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_locale.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_locale.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2002, 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
diff --git a/libc/sysdeps/linux/common/bits/uClibc_page.h b/libc/sysdeps/linux/common/bits/uClibc_page.h
index e91be2d13..134094536 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_page.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_page.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2004 Erik Andersen
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* Supply an architecture specific value for PAGE_SIZE and friends. */
diff --git a/libc/sysdeps/linux/common/bits/uClibc_pthread.h b/libc/sysdeps/linux/common/bits/uClibc_pthread.h
index 348fd9d7d..b757ef439 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_pthread.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_pthread.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* Supply prototypes for the (weak) thread functions used by the
diff --git a/libc/sysdeps/linux/common/bits/uClibc_stdio.h b/libc/sysdeps/linux/common/bits/uClibc_stdio.h
index 18ec2beca..1b3f839a4 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_stdio.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_stdio.h
@@ -1,8 +1,21 @@
/* Copyright (C) 2002-2004 Manuel Novoa III <mjn3@codepoet.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
- *
* Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
+ *
+ * This 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, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
#ifndef _STDIO_H
@@ -399,7 +412,9 @@ extern pthread_mutex_t _stdio_openlist_lock;
#endif
extern int _stdio_openlist_delflag;
extern int _stdio_user_locking;
-extern void __stdio_init_mutex(pthread_mutex_t *m);
+#ifdef _LIBC
+extern void __stdio_init_mutex(pthread_mutex_t *m) attribute_hidden;
+#endif
#endif
#endif
diff --git a/libc/sysdeps/linux/common/bits/uClibc_touplow.h b/libc/sysdeps/linux/common/bits/uClibc_touplow.h
index d79d3cde7..28d4e2f48 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_touplow.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_touplow.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
diff --git a/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h b/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h
index 9b98054a6..726558ad8 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
diff --git a/libc/sysdeps/linux/common/bits/uClibc_uwchar.h b/libc/sysdeps/linux/common/bits/uClibc_uwchar.h
index 206191276..ba2c42db7 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_uwchar.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_uwchar.h
@@ -1,18 +1,19 @@
/* Copyright (C) 2003 Manuel Novoa III
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This library is distributed in the hope that it will be useful,
+ * 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
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
/* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
diff --git a/libc/sysdeps/linux/common/bits/uClibc_va_copy.h b/libc/sysdeps/linux/common/bits/uClibc_va_copy.h
index cc41b6029..98663fc0e 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_va_copy.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_va_copy.h
@@ -1,8 +1,21 @@
/* Copyright (C) 2005 Manuel Novoa III <mjn3@codepoet.org>
*
- * GNU Library General Public License (LGPL) version 2 or later.
- *
* Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
+ *
+ * This 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, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
*/
#ifndef _UCLIBC_VA_COPY_H
diff --git a/libc/sysdeps/linux/common/bits/waitflags.h b/libc/sysdeps/linux/common/bits/waitflags.h
index 1303c6c36..464cedb1f 100644
--- a/libc/sysdeps/linux/common/bits/waitflags.h
+++ b/libc/sysdeps/linux/common/bits/waitflags.h
@@ -1,5 +1,5 @@
/* Definitions of flag bits for `waitpid' et al.
- Copyright (C) 1992, 1996, 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1992,1996,1997,2000,2004,2005 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
@@ -26,5 +26,13 @@
#define WNOHANG 1 /* Don't block waiting. */
#define WUNTRACED 2 /* Report status of stopped children. */
+/* Bits in the fourth argument to `waitid'. */
+#define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */
+#define WEXITED 4 /* Report dead child. */
+#define WCONTINUED 8 /* Report continued child. */
+#define WNOWAIT 0x01000000 /* Don't reap, just poll status. */
+
+#define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads
+ in this group */
#define __WALL 0x40000000 /* Wait for any child. */
#define __WCLONE 0x80000000 /* Wait for cloned process. */
diff --git a/libc/sysdeps/linux/common/dl-osinfo.h b/libc/sysdeps/linux/common/dl-osinfo.h
index ee3e2ce99..4976b2b46 100644
--- a/libc/sysdeps/linux/common/dl-osinfo.h
+++ b/libc/sysdeps/linux/common/dl-osinfo.h
@@ -24,6 +24,9 @@
#define GETTIMEOFDAY gettimeofday
#endif
#else
+#ifdef __SSP__
+#error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
+#endif
#ifndef __SSP_QUICK_CANARY__
#define OPEN _dl_open
#define READ _dl_read
diff --git a/libc/sysdeps/linux/common/fork.c b/libc/sysdeps/linux/common/fork.c
index 9f87ea4e2..e766799c0 100644
--- a/libc/sysdeps/linux/common/fork.c
+++ b/libc/sysdeps/linux/common/fork.c
@@ -11,7 +11,9 @@
#include <unistd.h>
#ifdef __ARCH_HAS_MMU__
+#ifdef __NR_fork
#define __NR___libc_fork __NR_fork
_syscall0(pid_t, __libc_fork);
weak_alias(__libc_fork, fork);
#endif
+#endif
diff --git a/libc/sysdeps/linux/common/getcwd.c b/libc/sysdeps/linux/common/getcwd.c
index a1de4510c..c6a2fc005 100644
--- a/libc/sysdeps/linux/common/getcwd.c
+++ b/libc/sysdeps/linux/common/getcwd.c
@@ -153,7 +153,7 @@ int __syscall_getcwd(char * buf, unsigned long size)
#endif
-char *getcwd(char *buf, int size)
+char *getcwd(char *buf, size_t size)
{
int ret;
char *path;
diff --git a/libc/sysdeps/linux/common/getdents.c b/libc/sysdeps/linux/common/getdents.c
index 416ced4ea..623041866 100644
--- a/libc/sysdeps/linux/common/getdents.c
+++ b/libc/sysdeps/linux/common/getdents.c
@@ -44,7 +44,7 @@ struct kernel_dirent
static inline _syscall3(int, __syscall_getdents, int, fd, unsigned char *, kdirp, size_t, count);
-ssize_t __getdents (int fd, char *buf, size_t nbytes)
+ssize_t attribute_hidden __getdents (int fd, char *buf, size_t nbytes)
{
struct dirent *dp;
off_t last_offset = -1;
diff --git a/libc/sysdeps/linux/common/getdents64.c b/libc/sysdeps/linux/common/getdents64.c
index 1b4b0c368..7b4c0d4ce 100644
--- a/libc/sysdeps/linux/common/getdents64.c
+++ b/libc/sysdeps/linux/common/getdents64.c
@@ -49,7 +49,7 @@ struct kernel_dirent64
static inline _syscall3(int, __syscall_getdents64, int, fd, unsigned char *, dirp, size_t, count);
-ssize_t __getdents64 (int fd, char *buf, size_t nbytes)
+ssize_t attribute_hidden __getdents64 (int fd, char *buf, size_t nbytes)
{
struct dirent64 *dp;
off64_t last_offset = -1;
@@ -104,8 +104,8 @@ ssize_t __getdents64 (int fd, char *buf, size_t nbytes)
return (char *) dp - buf;
}
#else
-ssize_t __getdents (int fd, char *buf, size_t nbytes);
-ssize_t __getdents64 (int fd, char *buf, size_t nbytes)
+extern ssize_t __getdents (int fd, char *buf, size_t nbytes) attribute_hidden;
+ssize_t attribute_hidden __getdents64 (int fd, char *buf, size_t nbytes)
{
return(__getdents(fd, buf, nbytes));
}
diff --git a/libc/sysdeps/linux/common/getpgrp.c b/libc/sysdeps/linux/common/getpgrp.c
index b8b599eae..a910cb0cc 100644
--- a/libc/sysdeps/linux/common/getpgrp.c
+++ b/libc/sysdeps/linux/common/getpgrp.c
@@ -9,4 +9,7 @@
#include "syscalls.h"
#include <unistd.h>
+
+#ifdef __NR_getpgrp
_syscall0(pid_t, getpgrp);
+#endif
diff --git a/libc/sysdeps/linux/common/open64.c b/libc/sysdeps/linux/common/open64.c
index 543aa138f..d9a27a7bc 100644
--- a/libc/sysdeps/linux/common/open64.c
+++ b/libc/sysdeps/linux/common/open64.c
@@ -26,7 +26,7 @@
#endif
#ifdef __UCLIBC_HAS_LFS__
-extern int __libc_open (__const char *file, int oflag, mode_t mode);
+extern int __libc_open (__const char *file, int oflag, ...);
/* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
a third argument is the file protection. */
diff --git a/libc/sysdeps/linux/common/ssp-local.c b/libc/sysdeps/linux/common/ssp-local.c
index a835ced0e..091c34c5d 100644
--- a/libc/sysdeps/linux/common/ssp-local.c
+++ b/libc/sysdeps/linux/common/ssp-local.c
@@ -23,12 +23,12 @@
#include <features.h>
-extern void __stack_chk_fail (void) __attribute__ ((noreturn));
+extern void __stack_chk_fail (void) attribute_noreturn;
/* On some architectures, this helps needless PIC pointer setup
that would be needed just for the __stack_chk_fail call. */
-void __attribute__ ((noreturn)) attribute_hidden
+void attribute_noreturn attribute_hidden
__stack_chk_fail_local (void)
{
__stack_chk_fail ();
diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c
index 2f3a28ba4..43708fe61 100644
--- a/libc/sysdeps/linux/common/ssp.c
+++ b/libc/sysdeps/linux/common/ssp.c
@@ -57,8 +57,8 @@ static __always_inline void terminate(void)
EXIT(127);
}
-void __attribute__ ((noreturn)) __stack_smash_handler(char func[], int damaged __attribute__ ((unused)));
-void __attribute__ ((noreturn)) __stack_smash_handler(char func[], int damaged)
+void attribute_noreturn __stack_smash_handler(char func[], int damaged __attribute__ ((unused)));
+void attribute_noreturn __stack_smash_handler(char func[], int damaged)
{
extern char *__progname;
static const char message[] = ": stack smashing attack in function ";
@@ -72,7 +72,7 @@ void __attribute__ ((noreturn)) __stack_smash_handler(char func[], int damaged)
terminate();
}
-void __attribute__ ((noreturn)) __stack_chk_fail(void)
+void attribute_noreturn __stack_chk_fail(void)
{
extern char *__progname;
static const char msg1[] = "stack smashing detected: ";
@@ -88,7 +88,7 @@ void __attribute__ ((noreturn)) __stack_chk_fail(void)
}
#if 0
-void __attribute__ ((noreturn)) __chk_fail(void)
+void attribute_noreturn __chk_fail(void)
{
extern char *__progname;
static const char msg1[] = "buffer overflow detected: ";
diff --git a/libc/sysdeps/linux/common/wait4.c b/libc/sysdeps/linux/common/wait4.c
index db60e167d..5434a009e 100644
--- a/libc/sysdeps/linux/common/wait4.c
+++ b/libc/sysdeps/linux/common/wait4.c
@@ -8,12 +8,13 @@
*/
#include "syscalls.h"
+#include <sys/resource.h>
#define __NR___syscall_wait4 __NR_wait4
static inline _syscall4(int, __syscall_wait4, __kernel_pid_t, pid,
- int *, status, int, opts, void *, rusage);
+ int *, status, int, opts, struct rusage *, rusage);
-int wait4(pid_t pid, int *status, int opts, void *rusage)
+pid_t wait4(pid_t pid, int *status, int opts, struct rusage *rusage)
{
return (__syscall_wait4(pid, status, opts, rusage));
}
diff --git a/libc/sysdeps/linux/cris/bits/setjmp.h b/libc/sysdeps/linux/cris/bits/setjmp.h
index ba9cbc93c..2a29c8ca9 100644
--- a/libc/sysdeps/linux/cris/bits/setjmp.h
+++ b/libc/sysdeps/linux/cris/bits/setjmp.h
@@ -2,23 +2,25 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. CRIS version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -61,4 +63,4 @@ typedef int __jmp_buf[_JBLEN];
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)[JB_SP])
-
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/e1/bits/setjmp.h b/libc/sysdeps/linux/e1/bits/setjmp.h
index 88ded3837..88fa76fdf 100644
--- a/libc/sysdeps/linux/e1/bits/setjmp.h
+++ b/libc/sysdeps/linux/e1/bits/setjmp.h
@@ -3,7 +3,10 @@
* Yannis Mitsos <yannis.mitsos@gdt.gr>
*/
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -16,3 +19,4 @@ typedef struct {
unsigned long ReturnValue;
} __jmp_buf[1];
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/frv/bits/setjmp.h b/libc/sysdeps/linux/frv/bits/setjmp.h
index 5c20c4f54..d49ad7b71 100644
--- a/libc/sysdeps/linux/frv/bits/setjmp.h
+++ b/libc/sysdeps/linux/frv/bits/setjmp.h
@@ -2,23 +2,26 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. FRV version. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -50,4 +53,6 @@ __attribute__((__aligned__(8)))
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((unsigned long) (address) < (jmpbuf)->__sp)
+ ((void *) (address) < (void *) (jmpbuf)->__sp)
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/h8300/bits/setjmp.h b/libc/sysdeps/linux/h8300/bits/setjmp.h
index 024861440..15f8d8445 100644
--- a/libc/sysdeps/linux/h8300/bits/setjmp.h
+++ b/libc/sysdeps/linux/h8300/bits/setjmp.h
@@ -2,7 +2,10 @@
/* Copyright (C) 2004, Yoshinori Sato <ysato@users.sourceforge.jp> */
/* Define the machine-dependent type `jmp_buf'. H8/300 version. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -25,3 +28,5 @@ typedef struct
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)->__regs[3])
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/i386/bits/setjmp.h b/libc/sysdeps/linux/i386/bits/setjmp.h
index e5e493bca..107fe58b3 100644
--- a/libc/sysdeps/linux/i386/bits/setjmp.h
+++ b/libc/sysdeps/linux/i386/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2001, 2003 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
@@ -17,8 +17,10 @@
02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. Intel 386 version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -40,3 +42,5 @@ typedef int __jmp_buf[6];
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)[JB_SP])
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/i960/bits/setjmp.h b/libc/sysdeps/linux/i960/bits/setjmp.h
index 29fe2439f..f90e4cec7 100644
--- a/libc/sysdeps/linux/i960/bits/setjmp.h
+++ b/libc/sysdeps/linux/i960/bits/setjmp.h
@@ -1,6 +1,9 @@
/* Define the machine-dependent type `jmp_buf'. i960 version. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -29,5 +32,7 @@ typedef struct __jmp_buf__ {
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (jmpbuf)[0].__sp)
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
#endif
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/m68k/bits/setjmp.h b/libc/sysdeps/linux/m68k/bits/setjmp.h
index 9969aba02..efad14c13 100644
--- a/libc/sysdeps/linux/m68k/bits/setjmp.h
+++ b/libc/sysdeps/linux/m68k/bits/setjmp.h
@@ -1,8 +1,27 @@
-
/* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
-/* This file is released under the LGPL, any version you like */
+/* Copyright (C) 1997, 1998 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.
-#ifndef _SETJMP_H
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Define the machine-dependent type `jmp_buf'. m68k version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -41,3 +60,5 @@ typedef struct
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)->__aregs[5])
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/microblaze/bits/setjmp.h b/libc/sysdeps/linux/microblaze/bits/setjmp.h
index 80cddb05d..c3e218955 100644
--- a/libc/sysdeps/linux/microblaze/bits/setjmp.h
+++ b/libc/sysdeps/linux/microblaze/bits/setjmp.h
@@ -12,7 +12,10 @@
* Written by Miles Bader <miles@gnu.org>
*/
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -35,4 +38,6 @@ typedef struct
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((__ptr_t) (address) < &(jmpbuf)[0].__sp)
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/mips/bits/setjmp.h b/libc/sysdeps/linux/mips/bits/setjmp.h
index 8cb53ee29..4eb8e9f2a 100644
--- a/libc/sysdeps/linux/mips/bits/setjmp.h
+++ b/libc/sysdeps/linux/mips/bits/setjmp.h
@@ -17,7 +17,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -54,4 +57,6 @@ typedef struct
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (jmpbuf)[0].__sp)
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/nios/bits/setjmp.h b/libc/sysdeps/linux/nios/bits/setjmp.h
index 33467f7d7..807ebea02 100644
--- a/libc/sysdeps/linux/nios/bits/setjmp.h
+++ b/libc/sysdeps/linux/nios/bits/setjmp.h
@@ -2,23 +2,25 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. Nios version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -71,4 +73,4 @@ typedef struct
#endif /* _ASM */
-
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/nios2/bits/setjmp.h b/libc/sysdeps/linux/nios2/bits/setjmp.h
index ea7699d09..5d33caa98 100644
--- a/libc/sysdeps/linux/nios2/bits/setjmp.h
+++ b/libc/sysdeps/linux/nios2/bits/setjmp.h
@@ -17,7 +17,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -65,3 +68,5 @@ typedef struct
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void*)(jmpbuf)->__sp)
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/powerpc/bits/setjmp.h b/libc/sysdeps/linux/powerpc/bits/setjmp.h
index b53cdea3b..dad90c74c 100644
--- a/libc/sysdeps/linux/powerpc/bits/setjmp.h
+++ b/libc/sysdeps/linux/powerpc/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2003, 2004 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
@@ -17,8 +17,10 @@
02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -27,21 +29,52 @@
assembler easier. Naturally, user code should not depend on
either representation. */
+#include <bits/wordsize.h>
+
#if defined __USE_MISC || defined _ASM
# define JB_GPR1 0 /* Also known as the stack pointer */
# define JB_GPR2 1
# define JB_LR 2 /* The address we will return to */
-# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
-# define JB_CR 21 /* Condition code registers. */
-# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
-# define JB_SIZE (58*4)
+# if __WORDSIZE == 64
+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_CR 21 /* Condition code registers with the VRSAVE at */
+ /* offset 172 (low half of the double word. */
+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
+# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
+ /* 168 (high half of the double word). */
+# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
+# else
+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
+# define JB_CR 21 /* Condition code registers. */
+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_SIZE ((64 + (12 * 4)) * 4)
+# define JB_VRSAVE 62
+# define JB_VRS 64
+# endif
#endif
+
+/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
+ the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
+ correctly on 32 bit. It also insists that vecregs are only gauranteed
+ 4 byte alignment so we need to use vperm in the setjmp/longjmp routines.
+ We have to version the code because members like int __mask_was_saved
+ in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
+ cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
#ifndef _ASM
-typedef long int __jmp_buf[58];
+# if __WORDSIZE == 64
+typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
+# else
+/* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
+ aligned buffer as per the ABI it is just added for performance reasons. */
+typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
+# endif
#endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/sh/bits/setjmp.h b/libc/sysdeps/linux/sh/bits/setjmp.h
index c9d7d8fcd..6458dfefd 100644
--- a/libc/sysdeps/linux/sh/bits/setjmp.h
+++ b/libc/sysdeps/linux/sh/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2003, 2005 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
@@ -51,6 +51,6 @@ typedef struct
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (void *) &(jmpbuf)[0].__regs[7])
+ ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/sh64/bits/setjmp.h b/libc/sysdeps/linux/sh64/bits/setjmp.h
index 08ffbc78c..ad1ec9d4b 100644
--- a/libc/sysdeps/linux/sh64/bits/setjmp.h
+++ b/libc/sysdeps/linux/sh64/bits/setjmp.h
@@ -2,23 +2,25 @@
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 Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ 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
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. SH-5 version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -45,4 +47,4 @@ typedef struct
} __jmp_buf[1];
#endif
-
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/sparc/bits/setjmp.h b/libc/sysdeps/linux/sparc/bits/setjmp.h
index 664a06f60..574085664 100644
--- a/libc/sysdeps/linux/sparc/bits/setjmp.h
+++ b/libc/sysdeps/linux/sparc/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1999,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1999,2000,2003 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
@@ -16,8 +16,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -75,6 +77,8 @@ typedef int __jmp_buf[3];
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((int) (address) < (jmpbuf)[JB_SP])
+ ((void *) (address) < (void *) (jmpbuf)[JB_SP])
#endif
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/v850/bits/setjmp.h b/libc/sysdeps/linux/v850/bits/setjmp.h
index 3e4214a27..93395ade4 100644
--- a/libc/sysdeps/linux/v850/bits/setjmp.h
+++ b/libc/sysdeps/linux/v850/bits/setjmp.h
@@ -11,7 +11,10 @@
* Written by Miles Bader <miles@gnu.org>
*/
-#ifndef _SETJMP_H
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
@@ -34,4 +37,6 @@ typedef struct
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((__ptr_t) (address) < &(jmpbuf)[0].__sp)
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
+
+#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/linux/x86_64/bits/setjmp.h b/libc/sysdeps/linux/x86_64/bits/setjmp.h
index 96646efdd..515d769be 100644
--- a/libc/sysdeps/linux/x86_64/bits/setjmp.h
+++ b/libc/sysdeps/linux/x86_64/bits/setjmp.h
@@ -18,7 +18,7 @@
/* Define the machine-dependent type `jmp_buf'. x86-64 version. */
#ifndef _BITS_SETJMP_H
-#define _BITS_SETJMP_H 1
+#define _BITS_SETJMP_H 1
#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
@@ -75,4 +75,4 @@ typedef int __jmp_buf[6];
# endif
#endif
-#endif /* bits/setjmp.h */
+#endif /* bits/setjmp.h */