summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-09-07 22:33:37 +0000
committerUlrich Drepper <drepper@redhat.com>2004-09-07 22:33:37 +0000
commitf377d02227448a6f0d97eaf48ba60483c2f27e98 (patch)
treedc3fa6ae400c4a26e8757fc1bfadce3ab5f4d018
parent36ccb375a7f4db3ef66a0115961cfef23befa0e6 (diff)
downloadglibc-f377d02227448a6f0d97eaf48ba60483c2f27e98.tar.gz
Update.
* include/atomic.h: Define atomic_increment_val, atomic_decrement_val, and atomic_dealy is not already defined. * sysdeps/i386/i486/bits/atomic.h: Define atomic_delay. * sysdeps/x86_64/bits/atomic.h: Likewise. * miscd/sys/cdefs.h (__NTH): New macro. (__THROW): Define using nothrow attribute for C code and gcc >= 3.2. (__REDIRECT_NTH): New macro. * argp/argp.h: Use __NTH and __REDIRECT_NTH where necessary. * ctype/ctype.h: Likewise. * dirent/dirent.h: Likewise. * io/fcntl.h: Likewise. * io/sys/sendfile.h: Likewise. * io/sys/stat.h: Likewise. * io/sys/statfs.h: Likewise. * io/sys/statvfs.h: Likewise. * libio/bits/stdio.h: Likewise. * misc/sys/mman.h: Likewise. * posix/unistd.h: Likewise. * resource/sys/resource.h: Likewise. * rt/aio.h: Likewise. * signal/signal.h: Likewise. * stdlib/stdlib.h: Likewise. * string/argz.h: Likewise. * string/string.h: Likewise. * sysdeps/generic/inttypes.h: Likewise. * sysdeps/i386/fpu/bits/mathinline.h: Likewise. * sysdeps/powerpc/fpu/bits/mathinline.h: Likewise. * sysdeps/s390/fpu/bits/mathinline.h: Likewise. * sysdeps/x86_64/fpu/bits/mathinline.h: Likewise. * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. * sysdeps/unix/sysv/linux/bits/sys/sysmacros.h: Likewise. * wcsmbs/wchar.h: Likewise. * sysdeps/generic/glob.c: Use __PMT isntead of __P where appropriate. * resolv/gethnamaddr.c (getanswer): Remove __P use in variable definition. * io/sys/poll.h: Remove __THROW from poll prototype, it's a cancellation point.
-rw-r--r--ChangeLog42
-rw-r--r--argp/argp.h11
-rw-r--r--ctype/ctype.h6
-rw-r--r--dirent/dirent.h24
-rw-r--r--include/atomic.h17
-rw-r--r--io/fcntl.h10
-rw-r--r--io/sys/sendfile.h11
-rw-r--r--io/sys/stat.h63
-rw-r--r--io/sys/statfs.h16
-rw-r--r--io/sys/statvfs.h17
-rw-r--r--libio/bits/stdio.h4
-rw-r--r--misc/sys/cdefs.h22
-rw-r--r--misc/sys/mman.h12
-rw-r--r--posix/unistd.h32
-rw-r--r--resource/sys/resource.h17
-rw-r--r--rt/aio.h58
-rw-r--r--signal/signal.h9
-rw-r--r--stdlib/stdlib.h40
-rw-r--r--string/argz.h10
-rw-r--r--string/string.h10
-rw-r--r--sysdeps/generic/inttypes.h32
-rw-r--r--sysdeps/i386/fpu/bits/mathinline.h42
-rw-r--r--sysdeps/i386/i486/bits/atomic.h3
-rw-r--r--sysdeps/powerpc/fpu/bits/mathinline.h28
-rw-r--r--sysdeps/s390/fpu/bits/mathinline.h14
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/sysmacros.h8
-rw-r--r--sysdeps/x86_64/bits/atomic.h5
-rw-r--r--sysdeps/x86_64/fpu/bits/mathinline.h8
-rw-r--r--wcsmbs/wchar.h47
30 files changed, 347 insertions, 275 deletions
diff --git a/ChangeLog b/ChangeLog
index 944416412f..968756a24d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,47 @@
2004-09-07 Ulrich Drepper <drepper@redhat.com>
+ * include/atomic.h: Define atomic_increment_val, atomic_decrement_val,
+ and atomic_dealy is not already defined.
+ * sysdeps/i386/i486/bits/atomic.h: Define atomic_delay.
+ * sysdeps/x86_64/bits/atomic.h: Likewise.
+
+ * miscd/sys/cdefs.h (__NTH): New macro.
+ (__THROW): Define using nothrow attribute for C code and gcc >= 3.2.
+ (__REDIRECT_NTH): New macro.
+ * argp/argp.h: Use __NTH and __REDIRECT_NTH where necessary.
+ * ctype/ctype.h: Likewise.
+ * dirent/dirent.h: Likewise.
+ * io/fcntl.h: Likewise.
+ * io/sys/sendfile.h: Likewise.
+ * io/sys/stat.h: Likewise.
+ * io/sys/statfs.h: Likewise.
+ * io/sys/statvfs.h: Likewise.
+ * libio/bits/stdio.h: Likewise.
+ * misc/sys/mman.h: Likewise.
+ * posix/unistd.h: Likewise.
+ * resource/sys/resource.h: Likewise.
+ * rt/aio.h: Likewise.
+ * signal/signal.h: Likewise.
+ * stdlib/stdlib.h: Likewise.
+ * string/argz.h: Likewise.
+ * string/string.h: Likewise.
+ * sysdeps/generic/inttypes.h: Likewise.
+ * sysdeps/i386/fpu/bits/mathinline.h: Likewise.
+ * sysdeps/powerpc/fpu/bits/mathinline.h: Likewise.
+ * sysdeps/s390/fpu/bits/mathinline.h: Likewise.
+ * sysdeps/x86_64/fpu/bits/mathinline.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/sys/sysmacros.h: Likewise.
+ * wcsmbs/wchar.h: Likewise.
+
+ * sysdeps/generic/glob.c: Use __PMT isntead of __P where appropriate.
+
+ * resolv/gethnamaddr.c (getanswer): Remove __P use in variable
+ definition.
+
+ * io/sys/poll.h: Remove __THROW from poll prototype, it's a
+ cancellation point.
+
* io/fts.c (fts_open): Remove uses of __P.
* include/stdlib.h: No need to use __THROW in this header.
diff --git a/argp/argp.h b/argp/argp.h
index 78a9d1bb3c..008e039f9e 100644
--- a/argp/argp.h
+++ b/argp/argp.h
@@ -1,5 +1,5 @@
/* Hierarchial argument parsing, layered over getopt.
- Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999,2003,2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>.
@@ -35,6 +35,9 @@
#ifndef __THROW
# define __THROW
#endif
+#ifndef __NTH
+# define __NTH(fct) fct __THROW
+#endif
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
@@ -558,13 +561,13 @@ extern void *__argp_input (__const struct argp *__restrict __argp,
# endif
ARGP_EI void
-__argp_usage (__const struct argp_state *__state) __THROW
+__NTH (__argp_usage (__const struct argp_state *__state))
{
__argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);
}
ARGP_EI int
-__option_is_short (__const struct argp_option *__opt) __THROW
+__NTH (__option_is_short (__const struct argp_option *__opt))
{
if (__opt->flags & OPTION_DOC)
return 0;
@@ -576,7 +579,7 @@ __option_is_short (__const struct argp_option *__opt) __THROW
}
ARGP_EI int
-__option_is_end (__const struct argp_option *__opt) __THROW
+__NTH (__option_is_end (__const struct argp_option *__opt))
{
return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
}
diff --git a/ctype/ctype.h b/ctype/ctype.h
index c7290ed731..e08545359d 100644
--- a/ctype/ctype.h
+++ b/ctype/ctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,02
+/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -188,13 +188,13 @@ __exctype (_tolower);
# ifdef __USE_EXTERN_INLINES
extern __inline int
-tolower (int __c) __THROW
+__NTH (tolower (int __c))
{
return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
}
extern __inline int
-toupper (int __c) __THROW
+__NTH (toupper (int __c))
{
return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
}
diff --git a/dirent/dirent.h b/dirent/dirent.h
index 319fb745a1..173d0eba97 100644
--- a/dirent/dirent.h
+++ b/dirent/dirent.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991-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
@@ -268,9 +268,9 @@ extern int alphasort (__const void *__e1, __const void *__e2)
__THROW __attribute_pure__;
# else
# ifdef __REDIRECT
-extern int __REDIRECT (alphasort,
- (__const void *__e1, __const void *__e2) __THROW,
- alphasort64) __attribute_pure__;
+extern int __REDIRECT_NTH (alphasort,
+ (__const void *__e1, __const void *__e2),
+ alphasort64) __attribute_pure__;
# else
# define alphasort alphasort64
# endif
@@ -288,9 +288,9 @@ extern int versionsort (__const void *__e1, __const void *__e2)
__THROW __attribute_pure__;
# else
# ifdef __REDIRECT
-extern int __REDIRECT (versionsort,
- (__const void *__e1, __const void *__e2) __THROW,
- versionsort64) __attribute_pure__;
+extern int __REDIRECT_NTH (versionsort,
+ (__const void *__e1, __const void *__e2),
+ versionsort64) __attribute_pure__;
# else
# define versionsort versionsort64
# endif
@@ -312,11 +312,11 @@ extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
__off_t *__restrict __basep) __THROW;
# else
# ifdef __REDIRECT
-extern __ssize_t __REDIRECT (getdirentries,
- (int __fd, char *__restrict __buf,
- size_t __nbytes,
- __off64_t *__restrict __basep) __THROW,
- getdirentries64);
+extern __ssize_t __REDIRECT_NTH (getdirentries,
+ (int __fd, char *__restrict __buf,
+ size_t __nbytes,
+ __off64_t *__restrict __basep),
+ getdirentries64);
# else
# define getdirentries getdirentries64
# endif
diff --git a/include/atomic.h b/include/atomic.h
index 092b6e00a3..8a23f6ee9e 100644
--- a/include/atomic.h
+++ b/include/atomic.h
@@ -1,5 +1,5 @@
/* Internal macros for atomic operations for GNU C Library.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -151,6 +151,11 @@
#endif
+#ifndef atomic_increment_val
+# define atomic_increment_val(mem) (atomic_exchange_and_add ((mem), 1) + 1)
+#endif
+
+
/* Add one to *MEM and return true iff it's now zero. */
#ifndef atomic_increment_and_test
# define atomic_increment_and_test(mem) \
@@ -163,6 +168,11 @@
#endif
+#ifndef atomic_decrement_val
+# define atomic_decrement_val(mem) (atomic_exchange_and_add ((mem), -1) - 1)
+#endif
+
+
/* Subtract 1 from *MEM and return true iff it's now zero. */
#ifndef atomic_decrement_and_test
# define atomic_decrement_and_test(mem) \
@@ -243,4 +253,9 @@
# define atomic_write_barrier() atomic_full_barrier ()
#endif
+
+#ifndef atomic_delay
+# define atomic_delay() do { /* nothing */ } while (0)
+#endif
+
#endif /* atomic.h */
diff --git a/io/fcntl.h b/io/fcntl.h
index b81a5b7230..b1a9f65387 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1994-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
@@ -136,10 +136,10 @@ extern int lockf64 (int __fd, int __cmd, __off64_t __len);
extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
int __advise) __THROW;
# else
-# ifdef __REDIRECT
-extern int __REDIRECT (posix_fadvise, (int __fd, __off64_t __offset,
- __off64_t __len, int __advise) __THROW,
- posix_fadvise64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (posix_fadvise, (int __fd, __off64_t __offset,
+ __off64_t __len, int __advise),
+ posix_fadvise64);
# else
# define posix_fadvise posix_fadvise64
# endif
diff --git a/io/sys/sendfile.h b/io/sys/sendfile.h
index 797822b9fe..4c1367b6be 100644
--- a/io/sys/sendfile.h
+++ b/io/sys/sendfile.h
@@ -1,5 +1,5 @@
/* sendfile -- copy data directly from one file descriptor to another
- Copyright (C) 1998,99,01,2002 Free Software Foundation, Inc.
+ Copyright (C) 1998,99,01,2002,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
@@ -34,11 +34,10 @@ __BEGIN_DECLS
extern ssize_t sendfile (int __out_fd, int __in_fd, off_t *__offset,
size_t __count) __THROW;
#else
-# ifdef __REDIRECT
-extern ssize_t __REDIRECT (sendfile,
- (int __out_fd, int __in_fd, __off64_t *__offset,
- size_t __count) __THROW,
- sendfile64);
+# ifdef __REDIRECT_NTH
+extern ssize_t __REDIRECT_NTH (sendfile,
+ (int __out_fd, int __in_fd, __off64_t *__offset,
+ size_t __count), sendfile64);
# else
# define sendfile sendfile64
# endif
diff --git a/io/sys/stat.h b/io/sys/stat.h
index e71006a43d..abe68860cb 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -211,12 +211,10 @@ extern int stat (__const char *__restrict __file,
that file descriptor FD is open on and put them in BUF. */
extern int fstat (int __fd, struct stat *__buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (stat,
- (__const char *__restrict __file,
- struct stat *__restrict __buf) __THROW,
- stat64);
-extern int __REDIRECT (fstat, (int __fd, struct stat *__buf) __THROW, fstat64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (__const char *__restrict __file,
+ struct stat *__restrict __buf), stat64);
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64);
# else
# define stat stat64
# define fstat fstat64
@@ -235,11 +233,10 @@ extern int fstat64 (int __fd, struct stat64 *__buf) __THROW;
extern int lstat (__const char *__restrict __file,
struct stat *__restrict __buf) __THROW;
# else
-# ifdef __REDIRECT
-extern int __REDIRECT (lstat,
- (__const char *__restrict __file,
- struct stat *__restrict __buf) __THROW,
- lstat64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+ (__const char *__restrict __file,
+ struct stat *__restrict __buf), lstat64);
# else
# define lstat lstat64
# endif
@@ -322,15 +319,13 @@ extern int __xstat (int __ver, __const char *__filename,
extern int __lxstat (int __ver, __const char *__filename,
struct stat *__stat_buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (__fxstat, (int __ver, int __fildes,
- struct stat *__stat_buf) __THROW,
- __fxstat64);
-extern int __REDIRECT (__xstat, (int __ver, __const char *__filename,
- struct stat *__stat_buf) __THROW, __xstat64);
-extern int __REDIRECT (__lxstat, (int __ver, __const char *__filename,
- struct stat *__stat_buf) __THROW,
- __lxstat64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (__fxstat, (int __ver, int __fildes,
+ struct stat *__stat_buf), __fxstat64);
+extern int __REDIRECT_NTH (__xstat, (int __ver, __const char *__filename,
+ struct stat *__stat_buf), __xstat64);
+extern int __REDIRECT_NTH (__lxstat, (int __ver, __const char *__filename,
+ struct stat *__stat_buf), __lxstat64);
# else
# define __fxstat __fxstat64
@@ -353,28 +348,29 @@ extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
#if defined __GNUC__ && __GNUC__ >= 2
/* Inlined versions of the real stat and mknod functions. */
-extern __inline__ int stat (__const char *__path,
- struct stat *__statbuf) __THROW
+extern __inline__ int
+__NTH (stat (__const char *__path, struct stat *__statbuf))
{
return __xstat (_STAT_VER, __path, __statbuf);
}
# if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-extern __inline__ int lstat (__const char *__path,
- struct stat *__statbuf) __THROW
+extern __inline__ int
+__NTH (lstat (__const char *__path, struct stat *__statbuf))
{
return __lxstat (_STAT_VER, __path, __statbuf);
}
# endif
-extern __inline__ int fstat (int __fd, struct stat *__statbuf) __THROW
+extern __inline__ int
+__NTH (fstat (int __fd, struct stat *__statbuf))
{
return __fxstat (_STAT_VER, __fd, __statbuf);
}
# if defined __USE_MISC || defined __USE_BSD
-extern __inline__ int mknod (__const char *__path, __mode_t __mode,
- __dev_t __dev) __THROW
+extern __inline__ int
+__NTH (mknod (__const char *__path, __mode_t __mode, __dev_t __dev))
{
return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
}
@@ -382,22 +378,23 @@ extern __inline__ int mknod (__const char *__path, __mode_t __mode,
# if defined __USE_LARGEFILE64 \
&& (! defined __USE_FILE_OFFSET64 \
- || (defined __REDIRECT && defined __OPTIMIZE__))
-extern __inline__ int stat64 (__const char *__path,
- struct stat64 *__statbuf) __THROW
+ || (defined __REDIRECT_NTH && defined __OPTIMIZE__))
+extern __inline__ int
+__NTH (stat64 (__const char *__path, struct stat64 *__statbuf))
{
return __xstat64 (_STAT_VER, __path, __statbuf);
}
# if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-extern __inline__ int lstat64 (__const char *__path,
- struct stat64 *__statbuf) __THROW
+extern __inline__ int
+__NTH (lstat64 (__const char *__path, struct stat64 *__statbuf))
{
return __lxstat64 (_STAT_VER, __path, __statbuf);
}
# endif
-extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) __THROW
+extern __inline__ int
+__NTH (fstat64 (int __fd, struct stat64 *__statbuf))
{
return __fxstat64 (_STAT_VER, __fd, __statbuf);
}
diff --git a/io/sys/statfs.h b/io/sys/statfs.h
index 969d9d0e58..c93d8f1d44 100644
--- a/io/sys/statfs.h
+++ b/io/sys/statfs.h
@@ -1,5 +1,5 @@
/* Definitions for getting information about a filesystem.
- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999, 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
@@ -31,10 +31,10 @@ __BEGIN_DECLS
#ifndef __USE_FILE_OFFSET64
extern int statfs (__const char *__file, struct statfs *__buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (statfs,
- (__const char *__file, struct statfs *__buf) __THROW,
- statfs64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (statfs,
+ (__const char *__file, struct statfs *__buf),
+ statfs64);
# else
# define statfs statfs64
# endif
@@ -48,9 +48,9 @@ extern int statfs64 (__const char *__file, struct statfs64 *__buf) __THROW;
#ifndef __USE_FILE_OFFSET64
extern int fstatfs (int __fildes, struct statfs *__buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (fstatfs, (int __fildes, struct statfs *__buf) __THROW,
- fstatfs64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatfs, (int __fildes, struct statfs *__buf),
+ fstatfs64);
# else
# define fstatfs fstatfs64
# endif
diff --git a/io/sys/statvfs.h b/io/sys/statvfs.h
index f34f8d318e..7c6c90fae0 100644
--- a/io/sys/statvfs.h
+++ b/io/sys/statvfs.h
@@ -1,5 +1,5 @@
/* Definitions for getting information about a filesystem.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 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
@@ -52,11 +52,10 @@ __BEGIN_DECLS
extern int statvfs (__const char *__restrict __file,
struct statvfs *__restrict __buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (statvfs,
- (__const char *__restrict __file,
- struct statvfs *__restrict __buf) __THROW,
- statvfs64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (statvfs,
+ (__const char *__restrict __file,
+ struct statvfs *__restrict __buf), statvfs64);
# else
# define statvfs statvfs64
# endif
@@ -71,9 +70,9 @@ extern int statvfs64 (__const char *__restrict __file,
#ifndef __USE_FILE_OFFSET64
extern int fstatvfs (int __fildes, struct statvfs *__buf) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (fstatvfs, (int __fildes, struct statvfs *__buf) __THROW,
- fstatvfs64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatvfs, (int __fildes, struct statvfs *__buf),
+ fstatvfs64);
# else
# define fstatvfs fstatvfs64
# endif
diff --git a/libio/bits/stdio.h b/libio/bits/stdio.h
index 60c937f072..9e951ad8e4 100644
--- a/libio/bits/stdio.h
+++ b/libio/bits/stdio.h
@@ -109,14 +109,14 @@ getline (char **__lineptr, size_t *__n, FILE *__stream)
# ifdef __USE_MISC
/* Faster versions when locking is not required. */
__STDIO_INLINE int
-feof_unlocked (FILE *__stream) __THROW
+__NTH (feof_unlocked (FILE *__stream))
{
return _IO_feof_unlocked (__stream);
}
/* Faster versions when locking is not required. */
__STDIO_INLINE int
-ferror_unlocked (FILE *__stream) __THROW
+__NTH (ferror_unlocked (FILE *__stream))
{
return _IO_ferror_unlocked (__stream);
}
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 18143058fa..3c53ca707d 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2001, 2002, 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
@@ -39,11 +39,20 @@
/* GCC can always grok prototypes. For C++ programs we add throw()
to help it optimize the function calls. But this works only with
- gcc 2.8.x and egcs. */
-# if defined __cplusplus && __GNUC_PREREQ (2,8)
-# define __THROW throw ()
+ gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
+ as non-throwing using a function attribute since programs can use
+ the -fexceptions options for C code as well. */
+# if !defined __cplusplus && __GNUC_PREREQ (3, 2)
+# define __THROW __attribute__ ((__nothrow__))
+# define __NTH(fct) __attribute__ ((__nothrow__)) fct
# else
-# define __THROW
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# define __NTH(fct) fct throw ()
+# else
+# define __THROW
+# define __NTH(fct) fct
+# endif
# endif
# define __P(args) args __THROW
/* This macro will be used for functions which might take C++ callback
@@ -55,6 +64,7 @@
# define __inline /* No inline functions. */
# define __THROW
+# define __NTH(fct) fct
# define __P(args) args
# define __PMT(args) args
@@ -149,6 +159,8 @@
#if defined __GNUC__ && __GNUC__ >= 2
# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
+# define __REDIRECT_NTH(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROW
# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
diff --git a/misc/sys/mman.h b/misc/sys/mman.h
index 5e37278df3..ae4dd64fc6 100644
--- a/misc/sys/mman.h
+++ b/misc/sys/mman.h
@@ -1,5 +1,5 @@
/* Definitions for BSD-style memory management.
- Copyright (C) 1994-1999, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1994-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
@@ -58,11 +58,11 @@ __BEGIN_DECLS
extern void *mmap (void *__addr, size_t __len, int __prot,
int __flags, int __fd, __off_t __offset) __THROW;
#else
-# ifdef __REDIRECT
-extern void * __REDIRECT (mmap,
- (void *__addr, size_t __len, int __prot,
- int __flags, int __fd, __off64_t __offset) __THROW,
- mmap64);
+# ifdef __REDIRECT_NTH
+extern void * __REDIRECT_NTH (mmap,
+ (void *__addr, size_t __len, int __prot,
+ int __flags, int __fd, __off64_t __offset),
+ mmap64);
# else
# define mmap mmap64
# endif
diff --git a/posix/unistd.h b/posix/unistd.h
index 72167483d7..52a0185115 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -285,11 +285,10 @@ extern int euidaccess (__const char *__name, int __type) __THROW;
#ifndef __USE_FILE_OFFSET64
extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
#else
-# ifdef __REDIRECT
-extern __off64_t __REDIRECT (lseek,
- (int __fd, __off64_t __offset, int __whence)
- __THROW,
- lseek64);
+# ifdef __REDIRECT_NTH
+extern __off64_t __REDIRECT_NTH (lseek,
+ (int __fd, __off64_t __offset, int __whence),
+ lseek64);
# else
# define lseek lseek64
# endif
@@ -550,8 +549,8 @@ extern __pid_t getppid (void) __THROW;
#ifndef __FAVOR_BSD
extern __pid_t getpgrp (void) __THROW;
#else
-# ifdef __REDIRECT
-extern __pid_t __REDIRECT (getpgrp, (__pid_t __pid) __THROW, __getpgid);
+# ifdef __REDIRECT_NTH
+extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
# else
# define getpgrp __getpgid
# endif
@@ -589,9 +588,8 @@ extern int setpgrp (void) __THROW;
# else
/* Another name for `setpgid' (above). */
-# ifdef __REDIRECT
-extern int __REDIRECT (setpgrp, (__pid_t __pid, __pid_t __pgrp) __THROW,
- setpgid);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
# else
# define setpgrp setpgid
# endif
@@ -876,10 +874,10 @@ extern int getpagesize (void) __THROW __attribute__ ((__const__));
# ifndef __USE_FILE_OFFSET64
extern int truncate (__const char *__file, __off_t __length) __THROW;
# else
-# ifdef __REDIRECT
-extern int __REDIRECT (truncate,
- (__const char *__file, __off64_t __length) __THROW,
- truncate64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (truncate,
+ (__const char *__file, __off64_t __length),
+ truncate64);
# else
# define truncate truncate64
# endif
@@ -892,9 +890,9 @@ extern int truncate64 (__const char *__file, __off64_t __length) __THROW;
# ifndef __USE_FILE_OFFSET64
extern int ftruncate (int __fd, __off_t __length) __THROW;
# else
-# ifdef __REDIRECT
-extern int __REDIRECT (ftruncate, (int __fd, __off64_t __length) __THROW,
- ftruncate64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length),
+ ftruncate64);
# else
# define ftruncate ftruncate64
# endif
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index 3dd2da9291..3912741376 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992,94,96,97,98,99,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992,94,1996-2000,2002,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
@@ -51,10 +51,9 @@ typedef int __priority_which_t;
extern int getrlimit (__rlimit_resource_t __resource,
struct rlimit *__rlimits) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (getrlimit, (__rlimit_resource_t __resource,
- struct rlimit *__rlimits) __THROW,
- getrlimit64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getrlimit, (__rlimit_resource_t __resource,
+ struct rlimit *__rlimits), getrlimit64);
# else
# define getrlimit getrlimit64
# endif
@@ -71,10 +70,10 @@ extern int getrlimit64 (__rlimit_resource_t __resource,
extern int setrlimit (__rlimit_resource_t __resource,
__const struct rlimit *__rlimits) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (setrlimit, (__rlimit_resource_t __resource,
- __const struct rlimit *__rlimits) __THROW,
- setrlimit64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (setrlimit, (__rlimit_resource_t __resource,
+ __const struct rlimit *__rlimits),
+ setrlimit64);
# else
# define setrlimit setrlimit64
# endif
diff --git a/rt/aio.h b/rt/aio.h
index 12c8eeaf04..35dc196426 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-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
@@ -172,35 +172,33 @@ extern int aio_suspend (__const struct aiocb *__const __list[], int __nent,
`aio_fildes' member of AIOCBP. */
extern int aio_fsync (int __operation, struct aiocb *__aiocbp) __THROW;
#else
-# ifdef __REDIRECT
-extern int __REDIRECT (aio_read, (struct aiocb *__aiocbp) __THROW, aio_read64);
-extern int __REDIRECT (aio_write, (struct aiocb *__aiocbp) __THROW,
- aio_write64);
-
-extern int __REDIRECT (lio_listio,
- (int __mode,
- struct aiocb *__const __list[__restrict_arr],
- int __nent, struct sigevent *__restrict __sig) __THROW,
- lio_listio64);
-
-extern int __REDIRECT (aio_error, (__const struct aiocb *__aiocbp) __THROW,
- aio_error64);
-extern __ssize_t __REDIRECT (aio_return, (struct aiocb *__aiocbp) __THROW,
- aio_return64);
-
-extern int __REDIRECT (aio_cancel,
- (int __fildes, struct aiocb *__aiocbp) __THROW,
- aio_cancel64);
-
-extern int __REDIRECT (aio_suspend,
- (__const struct aiocb *__const __list[],
- int __nent,
- __const struct timespec *__restrict __timeout) __THROW,
- aio_suspend64);
-
-extern int __REDIRECT (aio_fsync,
- (int __operation, struct aiocb *__aiocbp) __THROW,
- aio_fsync64);
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (aio_read, (struct aiocb *__aiocbp), aio_read64);
+extern int __REDIRECT_NTH (aio_write, (struct aiocb *__aiocbp), aio_write64);
+
+extern int __REDIRECT_NTH (lio_listio,
+ (int __mode,
+ struct aiocb *__const __list[__restrict_arr],
+ int __nent, struct sigevent *__restrict __sig),
+ lio_listio64);
+
+extern int __REDIRECT_NTH (aio_error, (__const struct aiocb *__aiocbp),
+ aio_error64);
+extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
+ aio_return64);
+
+extern int __REDIRECT_NTH (aio_cancel,
+ (int __fildes, struct aiocb *__aiocbp),
+ aio_cancel64);
+
+extern int __REDIRECT_NTH (aio_suspend,
+ (__const struct aiocb *__const __list[], int __nent,
+ __const struct timespec *__restrict __timeout),
+ aio_suspend64);
+
+extern int __REDIRECT_NTH (aio_fsync,
+ (int __operation, struct aiocb *__aiocbp),
+ aio_fsync64);
# else
# define aio_read aio_read64
diff --git a/signal/signal.h b/signal/signal.h
index 4df5603e2c..e99ef28d96 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -92,11 +92,10 @@ __BEGIN_NAMESPACE_STD
extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW;
#else
/* Make sure the used `signal' implementation is the SVID version. */
-# ifdef __REDIRECT
-extern __sighandler_t __REDIRECT (signal,
- (int __sig,
- __sighandler_t __handler) __THROW,
- __sysv_signal);
+# ifdef __REDIRECT_NTH
+extern __sighandler_t __REDIRECT_NTH (signal,
+ (int __sig, __sighandler_t __handler),
+ __sysv_signal);
# else
# define signal __sysv_signal
# endif
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 1349753b78..e178568dd3 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991-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
@@ -306,19 +306,19 @@ extern unsigned long long int __strtoull_internal (__const char *
__BEGIN_NAMESPACE_STD
extern __inline double
-strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
+__NTH (strtod (__const char *__restrict __nptr, char **__restrict __endptr))
{
return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
-strtol (__const char *__restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtol (__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
-strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
@@ -327,12 +327,12 @@ __END_NAMESPACE_STD
# ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
extern __inline float
-strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
+__NTH (strtof (__const char *__restrict __nptr, char **__restrict __endptr))
{
return __strtof_internal (__nptr, __endptr, 0);
}
extern __inline long double
-strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
+__NTH (strtold (__const char *__restrict __nptr, char **__restrict __endptr))
{
return __strtold_internal (__nptr, __endptr, 0);
}
@@ -341,14 +341,14 @@ __END_NAMESPACE_C99
# ifdef __USE_BSD
__extension__ extern __inline long long int
-strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
-strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
@@ -357,14 +357,14 @@ strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
# if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern __inline long long int
-strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
-strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
- int __base) __THROW
+__NTH (strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
+ int __base))
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
@@ -373,17 +373,17 @@ __END_NAMESPACE_C99
__BEGIN_NAMESPACE_STD
extern __inline double
-atof (__const char *__nptr) __THROW
+__NTH (atof (__const char *__nptr))
{
return strtod (__nptr, (char **) NULL);
}
extern __inline int
-atoi (__const char *__nptr) __THROW
+__NTH (atoi (__const char *__nptr))
{
return (int) strtol (__nptr, (char **) NULL, 10);
}
extern __inline long int
-atol (__const char *__nptr) __THROW
+__NTH (atol (__const char *__nptr))
{
return strtol (__nptr, (char **) NULL, 10);
}
@@ -392,7 +392,7 @@ __END_NAMESPACE_STD
# if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern __inline long long int
-atoll (__const char *__nptr) __THROW
+__NTH (atoll (__const char *__nptr))
{
return strtoll (__nptr, (char **) NULL, 10);
}
diff --git a/string/argz.h b/string/argz.h
index b083d8e1a9..dd7e4706c7 100644
--- a/string/argz.h
+++ b/string/argz.h
@@ -1,5 +1,5 @@
/* Routines for dealing with '\0' separated arg vectors.
- Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995,96,97,98,99,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
@@ -161,8 +161,8 @@ extern char *argz_next (__const char *__restrict __argz, size_t __argz_len,
#ifdef __USE_EXTERN_INLINES
extern inline char *
-__argz_next (__const char *__argz, size_t __argz_len,
- __const char *__entry) __THROW
+__NTH (__argz_next (__const char *__argz, size_t __argz_len,
+ __const char *__entry))
{
if (__entry)
{
@@ -175,8 +175,8 @@ __argz_next (__const char *__argz, size_t __argz_len,
return __argz_len > 0 ? (char *) __argz : 0;
}
extern inline char *
-argz_next (__const char *__argz, size_t __argz_len,
- __const char *__entry) __THROW
+__NTH (argz_next (__const char *__argz, size_t __argz_len,
+ __const char *__entry))
{
return __argz_next (__argz, __argz_len, __entry);
}
diff --git a/string/string.h b/string/string.h
index 19dd9c3188..d62594bc4c 100644
--- a/string/string.h
+++ b/string/string.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1993, 1995-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993, 1995-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
@@ -253,10 +253,10 @@ __END_NAMESPACE_STD
# if defined __USE_XOPEN2K && !defined __USE_GNU
/* Fill BUF with a string describing the meaning of the `errno' code in
ERRNUM. */
-# ifdef __REDIRECT
-extern int __REDIRECT (strerror_r,
- (int __errnum, char *__buf, size_t __buflen),
- __xpg_strerror_r) __THROW;
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (strerror_r,
+ (int __errnum, char *__buf, size_t __buflen),
+ __xpg_strerror_r);
# else
extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen)
__THROW;
diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h
index 4ac6815623..87f532f1d4 100644
--- a/sysdeps/generic/inttypes.h
+++ b/sysdeps/generic/inttypes.h
@@ -331,8 +331,8 @@ extern long int __strtol_internal (__const char *__restrict __nptr,
# define __strtol_internal_defined 1
# endif
extern __inline intmax_t
-strtoimax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
+__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
+ int base))
{
return __strtol_internal (nptr, endptr, base, 0);
}
@@ -346,8 +346,8 @@ extern unsigned long int __strtoul_internal (__const char *
# define __strtoul_internal_defined 1
# endif
extern __inline uintmax_t
-strtoumax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
+__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
+ int base))
{
return __strtoul_internal (nptr, endptr, base, 0);
}
@@ -360,8 +360,8 @@ extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
# define __wcstol_internal_defined 1
# endif
extern __inline intmax_t
-wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
+__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
+ __gwchar_t **__restrict endptr, int base))
{
return __wcstol_internal (nptr, endptr, base, 0);
}
@@ -377,8 +377,8 @@ extern unsigned long int __wcstoul_internal (__const __gwchar_t *
# define __wcstoul_internal_defined 1
# endif
extern __inline uintmax_t
-wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
+__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
+ __gwchar_t **__restrict endptr, int base))
{
return __wcstoul_internal (nptr, endptr, base, 0);
}
@@ -394,8 +394,8 @@ extern long long int __strtoll_internal (__const char *__restrict __nptr,
# define __strtoll_internal_defined 1
# endif
extern __inline intmax_t
-strtoimax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
+__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
+ int base))
{
return __strtoll_internal (nptr, endptr, base, 0);
}
@@ -412,8 +412,8 @@ extern unsigned long long int __strtoull_internal (__const char *
# define __strtoull_internal_defined 1
# endif
extern __inline uintmax_t
-strtoumax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
+__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
+ int base))
{
return __strtoull_internal (nptr, endptr, base, 0);
}
@@ -428,8 +428,8 @@ extern long long int __wcstoll_internal (__const __gwchar_t *
# define __wcstoll_internal_defined 1
# endif
extern __inline intmax_t
-wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
+__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
+ __gwchar_t **__restrict endptr, int base))
{
return __wcstoll_internal (nptr, endptr, base, 0);
}
@@ -447,8 +447,8 @@ extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
# define __wcstoull_internal_defined 1
# endif
extern __inline uintmax_t
-wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
+__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
+ __gwchar_t **__restrict endptr, int base))
{
return __wcstoull_internal (nptr, endptr, base, 0);
}
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h
index 4256777db3..e04ce95099 100644
--- a/sysdeps/i386/fpu/bits/mathinline.h
+++ b/sysdeps/i386/fpu/bits/mathinline.h
@@ -125,19 +125,19 @@
# if __GNUC_PREREQ (2, 8)
/* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int
-__signbitf (float __x) __THROW
+__NTH (__signbitf (float __x))
{
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
}
__MATH_INLINE int
-__signbit (double __x) __THROW
+__NTH (__signbit (double __x))
{
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[1] < 0;
}
__MATH_INLINE int
-__signbitl (long double __x) __THROW
+__NTH (__signbitl (long double __x))
{
__extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
return (__u.__i[2] & 0x8000) != 0;
@@ -203,7 +203,7 @@ __signbitl (long double __x) __THROW
__inline_mathop_declNP_ (float_type, func, op, params)
#define __inline_mathop_declNP_(float_type, func, op, params...) \
- __MATH_INLINE float_type func (float_type __x) __THROW \
+ __MATH_INLINE float_type __NTH (func (float_type __x)) \
{ \
register float_type __result; \
__asm __volatile__ (op : "=t" (__result) : params); \
@@ -256,7 +256,7 @@ __signbitl (long double __x) __THROW
__inline_mathcodeNP_(float_type, func, arg, code)
#define __inline_mathcodeNP_(float_type, func, arg, code) \
- __MATH_INLINE float_type func (float_type arg) __THROW \
+ __MATH_INLINE float_type __NTH (func (float_type arg)) \
{ \
code; \
}
@@ -267,7 +267,7 @@ __signbitl (long double __x) __THROW
__inline_mathcodeNP2_ (float_type, func, arg1, arg2, code)
#define __inline_mathcodeNP2_(float_type, func, arg1, arg2, code) \
- __MATH_INLINE float_type func (float_type arg1, float_type arg2) __THROW \
+ __MATH_INLINE float_type __NTH (func (float_type arg1, float_type arg2)) \
{ \
code; \
}
@@ -277,8 +277,8 @@ __signbitl (long double __x) __THROW
__inline_mathcodeNP3_(float_type, func, arg1, arg2, arg3, code)
#define __inline_mathcodeNP3_(float_type, func, arg1, arg2, arg3, code) \
- __MATH_INLINE float_type func (float_type arg1, float_type arg2, \
- float_type arg3) __THROW \
+ __MATH_INLINE float_type __NTH (func (float_type arg1, float_type arg2, \
+ float_type arg3)) \
{ \
code; \
}
@@ -341,19 +341,19 @@ __inline_mathcode (__pow2, __x, \
*__cosx = __cosr
__MATH_INLINE void
-__sincos (double __x, double *__sinx, double *__cosx) __THROW
+__NTH (__sincos (double __x, double *__sinx, double *__cosx))
{
__sincos_code;
}
__MATH_INLINE void
-__sincosf (float __x, float *__sinx, float *__cosx) __THROW
+__NTH (__sincosf (float __x, float *__sinx, float *__cosx))
{
__sincos_code;
}
__MATH_INLINE void
-__sincosl (long double __x, long double *__sinx, long double *__cosx) __THROW
+__NTH (__sincosl (long double __x, long double *__sinx, long double *__cosx))
{
__sincos_code;
}
@@ -558,7 +558,7 @@ __inline_mathcodeNP (ceil, __x, \
return __value
__MATH_INLINE double
-ldexp (double __x, int __y) __THROW
+__NTH (ldexp (double __x, int __y))
{
__ldexp_code;
}
@@ -628,13 +628,13 @@ __inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)")
# endif
__MATH_INLINE float
-ldexpf (float __x, int __y) __THROW
+__NTH (ldexpf (float __x, int __y))
{
__ldexp_code;
}
__MATH_INLINE long double
-ldexpl (long double __x, int __y) __THROW
+__NTH (ldexpl (long double __x, int __y))
{
__ldexp_code;
}
@@ -651,17 +651,17 @@ __inline_mathopNP (rint, "frndint")
: "=m" (__lrintres) : "t" (__x) : "st"); \
return __lrintres
__MATH_INLINE long int
-lrintf (float __x) __THROW
+__NTH (lrintf (float __x))
{
__lrint_code;
}
__MATH_INLINE long int
-lrint (double __x) __THROW
+__NTH (lrint (double __x))
{
__lrint_code;
}
__MATH_INLINE long int
-lrintl (long double __x) __THROW
+__NTH (lrintl (long double __x))
{
__lrint_code;
}
@@ -674,17 +674,17 @@ lrintl (long double __x) __THROW
: "=m" (__llrintres) : "t" (__x) : "st"); \
return __llrintres
__MATH_INLINE long long int
-llrintf (float __x) __THROW
+__NTH (llrintf (float __x))
{
__llrint_code;
}
__MATH_INLINE long long int
-llrint (double __x) __THROW
+__NTH (llrint (double __x))
{
__llrint_code;
}
__MATH_INLINE long long int
-llrintl (long double __x) __THROW
+__NTH (llrintl (long double __x))
{
__llrint_code;
}
@@ -711,7 +711,7 @@ __inline_mathcodeNP2 (drem, __x, __y, \
/* This function is used in the `isfinite' macro. */
__MATH_INLINE int
-__finite (double __x) __THROW
+__NTH (__finite (double __x))
{
return (__extension__
(((((union { double __d; int __i[2]; }) {__d: __x}).__i[1]
diff --git a/sysdeps/i386/i486/bits/atomic.h b/sysdeps/i386/i486/bits/atomic.h
index 7f3d534483..c748761758 100644
--- a/sysdeps/i386/i486/bits/atomic.h
+++ b/sysdeps/i386/i486/bits/atomic.h
@@ -361,3 +361,6 @@ typedef uintmax_t uatomic_max_t;
else \
abort (); \
__result; })
+
+
+#define atomic_delay() asm ("rep; nop")
diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h
index d9206d4fac..491d529091 100644
--- a/sysdeps/powerpc/fpu/bits/mathinline.h
+++ b/sysdeps/powerpc/fpu/bits/mathinline.h
@@ -61,13 +61,13 @@
# if __GNUC_PREREQ (2, 8)
/* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int
-__signbitf (float __x) __THROW
+__NTH (__signbitf (float __x))
{
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
}
__MATH_INLINE int
-__signbit (double __x) __THROW
+__NTH (__signbit (double __x))
{
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[0] < 0;
@@ -82,7 +82,7 @@ __signbit (double __x) __THROW
# ifndef __powerpc64__
__MATH_INLINE long int lrint (double __x) __THROW;
__MATH_INLINE long int
-lrint (double __x) __THROW
+__NTH (lrint (double __x))
{
union {
double __d;
@@ -94,7 +94,7 @@ lrint (double __x) __THROW
__MATH_INLINE long int lrintf (float __x) __THROW;
__MATH_INLINE long int
-lrintf (float __x) __THROW
+__NTH (lrintf (float __x))
{
union {
double __d;
@@ -107,14 +107,14 @@ lrintf (float __x) __THROW
__MATH_INLINE double fdim (double __x, double __y) __THROW;
__MATH_INLINE double
-fdim (double __x, double __y) __THROW
+__NTH (fdim (double __x, double __y))
{
return __x < __y ? 0 : __x - __y;
}
__MATH_INLINE float fdimf (float __x, float __y) __THROW;
__MATH_INLINE float
-fdimf (float __x, float __y) __THROW
+__NTH (fdimf (float __x, float __y))
{
return __x < __y ? 0 : __x - __y;
}
@@ -131,14 +131,14 @@ fdimf (float __x, float __y) __THROW
extern double __slow_ieee754_sqrt (double);
__MATH_INLINE double
-__ieee754_sqrt (double __x)
+__NTH (__ieee754_sqrt (double __x))
{
double __z;
-
+
/* If the CPU is 64-bit we can use the optional FP instructions we. */
if ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
{
- /* Volatile is required to prevent the compiler from moving the
+ /* Volatile is required to prevent the compiler from moving the
fsqrt instruction above the branch. */
__asm __volatile (
" fsqrt %0,%1\n"
@@ -147,20 +147,20 @@ __ieee754_sqrt (double __x)
}
else
__z = __slow_ieee754_sqrt(__x);
-
+
return __z;
}
extern float __slow_ieee754_sqrtf (float);
__MATH_INLINE float
-__ieee754_sqrtf (float __x)
+__NTH (__ieee754_sqrtf (float __x))
{
float __z;
-
+
/* If the CPU is 64-bit we can use the optional FP instructions we. */
if ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
{
- /* Volatile is required to prevent the compiler from moving the
+ /* Volatile is required to prevent the compiler from moving the
fsqrts instruction above the branch. */
__asm __volatile (
" fsqrts %0,%1\n"
@@ -169,7 +169,7 @@ __ieee754_sqrtf (float __x)
}
else
__z = __slow_ieee754_sqrtf(__x);
-
+
return __z;
}
# endif /* __LIBC_INTERNAL_MATH_INLINES */
diff --git a/sysdeps/s390/fpu/bits/mathinline.h b/sysdeps/s390/fpu/bits/mathinline.h
index d83d9ca8b8..4d22922f8d 100644
--- a/sysdeps/s390/fpu/bits/mathinline.h
+++ b/sysdeps/s390/fpu/bits/mathinline.h
@@ -33,13 +33,15 @@
#ifdef __USE_ISOC99
/* Test for negative number. Used in the signbit() macro. */
-__MATH_INLINE int __signbitf (float __x) __THROW
+__MATH_INLINE int
+__NTH (__signbitf (float __x))
{
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
}
-__MATH_INLINE int __signbit (double __x) __THROW
+__MATH_INLINE int
+__NTH (__signbit (double __x))
{
__extension__ union { double __d; long __i; } __u = { __d: __x };
return __u.__i < 0;
@@ -55,19 +57,19 @@ __MATH_INLINE int __signbit (double __x) __THROW
#include <dl-procinfo.h>
__MATH_INLINE double
-__ieee754_sqrt (double x)
+__NTH (__ieee754_sqrt (double x))
{
double res;
-
+
asm ( "sqdbr %0,%1" : "=f" (res) : "f" (x) );
return res;
}
__MATH_INLINE float
-__ieee754_sqrtf (float x)
+__NTH (__ieee754_sqrtf (float x))
{
float res;
-
+
asm ( "sqebr %0,%1" : "=f" (res) : "f" (x) );
return res;
}
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index c28e03ff35..e94a42175e 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/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
@@ -261,7 +261,7 @@ extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
# define _EXTERN_INLINE extern __inline
# endif
_EXTERN_INLINE struct cmsghdr *
-__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
+__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
{
if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
/* The kernel header does this so there may be a reason. */
diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h
index a9bfa78d3e..179642ff40 100644
--- a/sysdeps/unix/sysv/linux/sys/sysmacros.h
+++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h
@@ -1,5 +1,5 @@
/* Definitions of macros to access `dev_t' values.
- Copyright (C) 1996, 1997, 1999, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 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
@@ -39,19 +39,19 @@ extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
# if defined __GNUC__ && __GNUC__ >= 2
__extension__ extern __inline unsigned int
-gnu_dev_major (unsigned long long int __dev) __THROW
+__NTH (gnu_dev_major (unsigned long long int __dev))
{
return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
__extension__ extern __inline unsigned int
-gnu_dev_minor (unsigned long long int __dev) __THROW
+__NTH (gnu_dev_minor (unsigned long long int __dev))
{
return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
__extension__ extern __inline unsigned long long int
-gnu_dev_makedev (unsigned int __major, unsigned int __minor) __THROW
+__NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
{
return ((__minor & 0xff) | ((__major & 0xfff) << 8)
| (((unsigned long long int) (__minor & ~0xff)) << 12)
diff --git a/sysdeps/x86_64/bits/atomic.h b/sysdeps/x86_64/bits/atomic.h
index f31bedb0b3..133a68d192 100644
--- a/sysdeps/x86_64/bits/atomic.h
+++ b/sysdeps/x86_64/bits/atomic.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -319,3 +319,6 @@ typedef uintmax_t uatomic_max_t;
: "=q" (__result), "=m" (*mem) \
: "m" (*mem), "ir" (bit)); \
__result; })
+
+
+#define atomic_delay() asm ("rep; nop")
diff --git a/sysdeps/x86_64/fpu/bits/mathinline.h b/sysdeps/x86_64/fpu/bits/mathinline.h
index 3f61ff5e92..39d11b678d 100644
--- a/sysdeps/x86_64/fpu/bits/mathinline.h
+++ b/sysdeps/x86_64/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
/* Inline math functions for x86-64.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 2002.
@@ -33,19 +33,19 @@
/* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int
-__signbitf (float __x) __THROW
+__NTH (__signbitf (float __x))
{
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
}
__MATH_INLINE int
-__signbit (double __x) __THROW
+__NTH (__signbit (double __x))
{
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[1] < 0;
}
__MATH_INLINE int
-__signbitl (long double __x) __THROW
+__NTH (__signbitl (long double __x))
{
__extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
return (__u.__i[2] & 0x8000) != 0;
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 8bab0ddd7b..1fe7e94d92 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995-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
@@ -320,8 +320,9 @@ __END_NAMESPACE_C99
#ifdef __USE_EXTERN_INLINES
/* Define inline function as optimization. */
-extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __ps) __THROW
+extern __inline size_t
+__NTH (mbrlen (__const char *__restrict __s, size_t __n,
+ mbstate_t *__restrict __ps))
{ return (__ps != NULL
? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
#endif
@@ -525,38 +526,40 @@ extern unsigned long long int __wcstoull_internal (__const wchar_t *
/* Define inline functions which call the internal entry points. */
__BEGIN_NAMESPACE_C99
-extern __inline double wcstod (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW
+extern __inline double
+__NTH (wcstod (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr))
{ return __wcstod_internal (__nptr, __endptr, 0); }
-extern __inline long int wcstol (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW
+extern __inline long int
+__NTH (wcstol (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr, int __base))
{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
-extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW
+extern __inline unsigned long int
+__NTH (wcstoul (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr, int __base))
{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }
__END_NAMESPACE_C99
# ifdef __USE_GNU
-extern __inline float wcstof (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW
+extern __inline float
+__NTH (wcstof (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr))
{ return __wcstof_internal (__nptr, __endptr, 0); }
-extern __inline long double wcstold (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW
+extern __inline long double
+__NTH (wcstold (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr))
{ return __wcstold_internal (__nptr, __endptr, 0); }
__extension__
-extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW
+extern __inline long long int
+__NTH (wcstoq (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr, int __base))
{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
__extension__
-extern __inline unsigned long long int wcstouq (__const wchar_t *
- __restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW
+extern __inline unsigned long long int
+__NTH (wcstouq (__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr, int __base))
{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }
# endif /* Use GNU. */
#endif /* Optimizing GCC >=2. */