summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2006-01-14 20:33:13 +0000
committerRoland McGrath <roland@gnu.org>2006-01-14 20:33:13 +0000
commit54e98f69e0e36ea8ad4e7a32b798ae90270bc1e0 (patch)
treed613329b14b6c6c9930c115253711625c6064da0
parent5c9c64088923397e9524c8ef4545ca0dd66a8d5e (diff)
downloadglibc-54e98f69e0e36ea8ad4e7a32b798ae90270bc1e0.tar.gz
glibc-54e98f69e0e36ea8ad4e7a32b798ae90270bc1e0.tar.xz
glibc-54e98f69e0e36ea8ad4e7a32b798ae90270bc1e0.zip
* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (NLDBL_HIDDEN): Removed.
	(NLDBL_DECL): Rewritten.
	Remove __THROW from NLDBL_DECL uses.
	Use NLDBL_DECL for __vstrfmon, __vstrfmon_l.

	* sysdeps/ieee754/ldbl-opt/nldbl-asinh.c: Restore attribute_hidden.

2006-01-14  Jakub Jelinek  <jakub@redhat.com>

	* misc/sys/cdefs.h (__LDBL_REDIR1_DECL): Define.
	(__LDBL_REDIR_DECL): Stringize __nldbl and name.
	* stdlib/bits/monetary-ldbl.h: Remove pastos from wchar-ldbl.h.
	(strfmon, strfmon_l): Add __LDBL_REDIR_DECL.
	* stdlib/bits/stdlib-ldbl.h (strtold, strtold_l, __strtold_internal,
	qecvt, qfcvt, qgcvt, qecvt_r, qfcvt_r): Use __LDBL_REDIR1_DECL
	instead of __LDBL_REDIR_DECL.
	* wcsmbs/bits/wchar-ldbl.h: Remove stale #if.
	(__LDBL_REDIR_WCHAR): Remove.
	(fwprintf, wprintf, swprintf, vfwprintf, vwprintf, vswprintf,
	fwscanf, wscanf, swscanf, vfwscanf, vwscanf, vswscanf): Use
	__LDBL_REDIR_DECL instead of __LDBL_REDIR_WCHAR.
	(wcstold, wcstold_l, __wcstold_internal): Add __LDBL_REDIR1_DECL.
	* wcsmbs/wchar.h: Include bits/wchar-ldbl.h after bits/wchar2.h
	instead of before it.
	(wcstold inline): Move #ifndef __LDBL_COMPAT before
	extern keyword.
	* libio/bits/stdio-ldbl.h (__snprintf_chk, __vsnprintf_chk): Add
	__LDBL_REDIR_DECL.
	* misc/bits/syslog-ldbl.h (vsyslog): Protect with #ifdef __USE_BSD.
	(__syslog_chk, __vsyslog_chk): Add __LDBL_REDIR_DECL.

2006-01-14  Roland McGrath  <roland@redhat.com>
-rw-r--r--ChangeLog33
-rw-r--r--libio/bits/stdio-ldbl.h4
-rw-r--r--misc/bits/syslog-ldbl.h11
-rw-r--r--misc/sys/cdefs.h4
-rw-r--r--stdlib/bits/monetary-ldbl.h38
-rw-r--r--stdlib/bits/stdlib-ldbl.h16
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-asinh.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-compat.h52
-rw-r--r--wcsmbs/bits/wchar-ldbl.h44
-rw-r--r--wcsmbs/wchar.h11
10 files changed, 114 insertions, 100 deletions
diff --git a/ChangeLog b/ChangeLog
index 045e0f9c93..cfc6c6861a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,38 @@
 2006-01-14  Roland McGrath  <roland@redhat.com>
 
+	* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (NLDBL_HIDDEN): Removed.
+	(NLDBL_DECL): Rewritten.
+	Remove __THROW from NLDBL_DECL uses.
+	Use NLDBL_DECL for __vstrfmon, __vstrfmon_l.
+
+	* sysdeps/ieee754/ldbl-opt/nldbl-asinh.c: Restore attribute_hidden.
+
+2006-01-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* misc/sys/cdefs.h (__LDBL_REDIR1_DECL): Define.
+	(__LDBL_REDIR_DECL): Stringize __nldbl and name.
+	* stdlib/bits/monetary-ldbl.h: Remove pastos from wchar-ldbl.h.
+	(strfmon, strfmon_l): Add __LDBL_REDIR_DECL.
+	* stdlib/bits/stdlib-ldbl.h (strtold, strtold_l, __strtold_internal,
+	qecvt, qfcvt, qgcvt, qecvt_r, qfcvt_r): Use __LDBL_REDIR1_DECL
+	instead of __LDBL_REDIR_DECL.
+	* wcsmbs/bits/wchar-ldbl.h: Remove stale #if.
+	(__LDBL_REDIR_WCHAR): Remove.
+	(fwprintf, wprintf, swprintf, vfwprintf, vwprintf, vswprintf,
+	fwscanf, wscanf, swscanf, vfwscanf, vwscanf, vswscanf): Use
+	__LDBL_REDIR_DECL instead of __LDBL_REDIR_WCHAR.
+	(wcstold, wcstold_l, __wcstold_internal): Add __LDBL_REDIR1_DECL.
+	* wcsmbs/wchar.h: Include bits/wchar-ldbl.h after bits/wchar2.h
+	instead of before it.
+	(wcstold inline): Move #ifndef __LDBL_COMPAT before
+	extern keyword.
+	* libio/bits/stdio-ldbl.h (__snprintf_chk, __vsnprintf_chk): Add
+	__LDBL_REDIR_DECL.
+	* misc/bits/syslog-ldbl.h (vsyslog): Protect with #ifdef __USE_BSD.
+	(__syslog_chk, __vsyslog_chk): Add __LDBL_REDIR_DECL.
+
+2006-01-14  Roland McGrath  <roland@redhat.com>
+
 	* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (NLDBL_DECL): Fix typo.
 	(NLDBL_HIDDEN): New macro.
 	(NLDBL_DECL): Use it in place of attribute_hidden.
diff --git a/libio/bits/stdio-ldbl.h b/libio/bits/stdio-ldbl.h
index 63249797ff..7a4291225e 100644
--- a/libio/bits/stdio-ldbl.h
+++ b/libio/bits/stdio-ldbl.h
@@ -61,6 +61,10 @@ __LDBL_REDIR_DECL (obstack_vprintf)
 #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
 __LDBL_REDIR_DECL (__sprintf_chk)
 __LDBL_REDIR_DECL (__vsprintf_chk)
+# if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
+__LDBL_REDIR_DECL (__snprintf_chk)
+__LDBL_REDIR_DECL (__vsnprintf_chk)
+# endif
 # if __USE_FORTIFY_LEVEL > 1
 __LDBL_REDIR_DECL (__fprintf_chk)
 __LDBL_REDIR_DECL (__printf_chk)
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index f3867408de..d153c8f8cd 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -22,4 +22,15 @@
 #endif
 
 __LDBL_REDIR_DECL (syslog)
+
+#ifdef __USE_BSD
 __LDBL_REDIR_DECL (vsyslog)
+#endif
+
+#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+__LDBL_REDIR_DECL (__syslog_chk)
+
+# ifdef __USE_BSD
+__LDBL_REDIR_DECL (__vsyslog_chk)
+# endif
+#endif
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index a8f7d4d086..ce5e83d571 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -321,8 +321,10 @@
 #  define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
 #  define __LDBL_REDIR_NTH(name, proto) \
   __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
+#  define __LDBL_REDIR1_DECL(name, alias) \
+  extern __typeof (name) name __asm (__ASMNAME (#alias));
 #  define __LDBL_REDIR_DECL(name) \
-  extern __typeof (name) name __asm (__ASMNAME (__nldbl_##name));
+  extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name));
 # endif
 #endif
 #if !defined __LDBL_COMPAT || !defined __REDIRECT
diff --git a/stdlib/bits/monetary-ldbl.h b/stdlib/bits/monetary-ldbl.h
index 2c0cff1068..3e080f93f0 100644
--- a/stdlib/bits/monetary-ldbl.h
+++ b/stdlib/bits/monetary-ldbl.h
@@ -21,40 +21,8 @@
 # error "Never include <bits/monetary-ldbl.h> directly; use <monetary.h> instead."
 #endif
 
-#if defined __LDBL_COMPAT && defined __GNUC__ && __GNUC__ >= 2
+__LDBL_REDIR_DECL (strfmon)
 
-# define __LDBL_REDIR_WCHAR(name) \
-  extern __typeof (name) name __asm (__ASMNAME (__nldbl_##name))
-
-# if defined __USE_ISOC99 || defined __USE_UNIX98
-__BEGIN_NAMESPACE_C99
-__LDBL_REDIR_WCHAR (fwprintf);
-__LDBL_REDIR_WCHAR (wprintf);
-__LDBL_REDIR_WCHAR (swprintf);
-__LDBL_REDIR_WCHAR (vfwprintf);
-__LDBL_REDIR_WCHAR (vwprintf);
-__LDBL_REDIR_WCHAR (vswprintf);
-__LDBL_REDIR_WCHAR (fwscanf);
-__LDBL_REDIR_WCHAR (wscanf);
-__LDBL_REDIR_WCHAR (swscanf);
-__END_NAMESPACE_C99
-# endif
-
-# ifdef __USE_ISOC99
-__BEGIN_NAMESPACE_C99
-__LDBL_REDIR_WCHAR (vfwscanf);
-__LDBL_REDIR_WCHAR (vwscanf);
-__LDBL_REDIR_WCHAR (vswscanf);
-__END_NAMESPACE_C99
-# endif
-
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
-__LDBL_REDIR_DECL (__swprintf_chk)
-__LDBL_REDIR_DECL (__vswprintf_chk)
-# if __USE_FORTIFY_LEVEL > 1
-__LDBL_REDIR_DECL (__fwprintf_chk)
-__LDBL_REDIR_DECL (__wprintf_chk)
-__LDBL_REDIR_DECL (__vfwprintf_chk)
-__LDBL_REDIR_DECL (__vwprintf_chk)
-# endif
+#ifdef __USE_GNU
+__LDBL_REDIR_DECL (strfmon_l)
 #endif
diff --git a/stdlib/bits/stdlib-ldbl.h b/stdlib/bits/stdlib-ldbl.h
index 7c11a49dc2..f966bd92e7 100644
--- a/stdlib/bits/stdlib-ldbl.h
+++ b/stdlib/bits/stdlib-ldbl.h
@@ -23,20 +23,20 @@
 
 #ifdef	__USE_ISOC99
 __BEGIN_NAMESPACE_C99
-__LDBL_REDIR_DECL (strtold)
+__LDBL_REDIR1_DECL (strtold, strtod)
 __END_NAMESPACE_C99
 #endif
 
 #ifdef __USE_GNU
-__LDBL_REDIR_DECL (strtold_l)
+__LDBL_REDIR1_DECL (strtold_l, strtod_l)
 #endif
 
-__LDBL_REDIR_DECL (__strtold_internal)
+__LDBL_REDIR1_DECL (__strtold_internal, __strtod_internal)
 
 #ifdef __USE_MISC
-__LDBL_REDIR_DECL (qecvt)
-__LDBL_REDIR_DECL (qfcvt)
-__LDBL_REDIR_DECL (qgcvt)
-__LDBL_REDIR_DECL (qecvt_r)
-__LDBL_REDIR_DECL (qfcvt_r)
+__LDBL_REDIR1_DECL (qecvt, ecvt)
+__LDBL_REDIR1_DECL (qfcvt, fcvt)
+__LDBL_REDIR1_DECL (qgcvt, gcvt)
+__LDBL_REDIR1_DECL (qecvt_r, ecvt_r)
+__LDBL_REDIR1_DECL (qfcvt_r, fcvt_r)
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c b/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
index 956046e739..512f68519b 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
@@ -1,6 +1,7 @@
 #include "nldbl-compat.h"
 
 double
+attribute_hidden
 asinhl (double x)
 {
   return asinh (x);
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
index 80dad04e11..cdedaaf0ef 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
@@ -32,60 +32,54 @@
 #include <monetary.h>
 #include <sys/syslog.h>
 
-#ifdef SHARED
-# define NLDBL_HIDDEN
-#else
-# define NLDBL_HIDDEN attribute_hidden
-#endif
+
+/* Declare the __nldbl_NAME function the wrappers call that's in libc.so,
+   and then redeclare NAME to mark it hidden for the nldbl-*.c definition.  */
 #define NLDBL_DECL(name) \
-  extern __typeof (name) __nldbl_##name NLDBL_HIDDEN
+  extern __typeof (name) __nldbl_##name; \
+  extern __typeof (name) name attribute_hidden
 
 NLDBL_DECL (_IO_vfscanf);
 NLDBL_DECL (vfscanf);
 NLDBL_DECL (vfwscanf);
-NLDBL_DECL (obstack_vprintf) __THROW;
-NLDBL_DECL (vasprintf) __THROW;
+NLDBL_DECL (obstack_vprintf);
+NLDBL_DECL (vasprintf);
 NLDBL_DECL (dprintf);
 NLDBL_DECL (vdprintf);
 NLDBL_DECL (fprintf);
 NLDBL_DECL (vfprintf);
 NLDBL_DECL (vfwprintf);
-NLDBL_DECL (vsnprintf) __THROW;
-NLDBL_DECL (vsprintf) __THROW;
-NLDBL_DECL (vsscanf) __THROW;
-NLDBL_DECL (vswprintf) __THROW;
-NLDBL_DECL (vswscanf) __THROW;
+NLDBL_DECL (vsnprintf);
+NLDBL_DECL (vsprintf);
+NLDBL_DECL (vsscanf);
+NLDBL_DECL (vswprintf);
+NLDBL_DECL (vswscanf);
 NLDBL_DECL (__asprintf);
 NLDBL_DECL (asprintf);
 NLDBL_DECL (__printf_fp);
-NLDBL_DECL (printf_size) __THROW;
+NLDBL_DECL (printf_size);
 NLDBL_DECL (syslog);
 NLDBL_DECL (vsyslog);
 NLDBL_DECL (qecvt);
 NLDBL_DECL (qfcvt);
 NLDBL_DECL (qgcvt);
+NLDBL_DECL (__vstrfmon);
+NLDBL_DECL (__vstrfmon_l);
+
+/* These don't use __typeof because they were not declared by the headers,
+   since we don't compile with _FORTIFY_SOURCE.  */
 extern int __nldbl___vfprintf_chk (FILE *__restrict, int,
-				   const char *__restrict, _G_va_list)
-  NLDBL_HIDDEN;
+				   const char *__restrict, _G_va_list);
 extern int __nldbl___vfwprintf_chk (FILE *__restrict, int,
-				    const wchar_t *__restrict, __gnuc_va_list)
-  NLDBL_HIDDEN;
+				    const wchar_t *__restrict, __gnuc_va_list);
 extern int __nldbl___vsprintf_chk (char *__restrict, int, size_t,
-				   const char *__restrict, _G_va_list) __THROW
-  NLDBL_HIDDEN;
+				   const char *__restrict, _G_va_list) __THROW;
 extern int __nldbl___vsnprintf_chk (char *__restrict, size_t, int, size_t,
 				    const char *__restrict, _G_va_list)
-  __THROW NLDBL_HIDDEN;
+  __THROW;
 extern int __nldbl___vswprintf_chk (wchar_t *__restrict, size_t, int, size_t,
 				    const wchar_t *__restrict, __gnuc_va_list)
-  __THROW NLDBL_HIDDEN;
-extern void __nldbl___vsyslog_chk (int, int, const char *, va_list)
-  NLDBL_HIDDEN;
-extern ssize_t __nldbl___vstrfmon (char *, size_t, const char *, va_list)
-  __THROW NLDBL_HIDDEN;
-extern ssize_t  __nldbl___vstrfmon_l (char *, size_t, __locale_t,
-				      const char *, va_list)
-  __THROW NLDBL_HIDDEN;
+  __THROW;
 
 
 #endif /* __NLDBL_COMPAT_H */
diff --git a/wcsmbs/bits/wchar-ldbl.h b/wcsmbs/bits/wchar-ldbl.h
index ac5d3b1c89..5e4894567c 100644
--- a/wcsmbs/bits/wchar-ldbl.h
+++ b/wcsmbs/bits/wchar-ldbl.h
@@ -21,32 +21,34 @@
 # error "Never include <bits/wchar-ldbl.h> directly; use <wchar.h> instead."
 #endif
 
-#if defined __LDBL_COMPAT && defined __GNUC__ && __GNUC__ >= 2
-
-# define __LDBL_REDIR_WCHAR(name) \
-  extern __typeof (name) name __asm (__ASMNAME (__nldbl_##name))
-
-# if defined __USE_ISOC99 || defined __USE_UNIX98
+#if defined __USE_ISOC99 || defined __USE_UNIX98
 __BEGIN_NAMESPACE_C99
-__LDBL_REDIR_WCHAR (fwprintf);
-__LDBL_REDIR_WCHAR (wprintf);
-__LDBL_REDIR_WCHAR (swprintf);
-__LDBL_REDIR_WCHAR (vfwprintf);
-__LDBL_REDIR_WCHAR (vwprintf);
-__LDBL_REDIR_WCHAR (vswprintf);
-__LDBL_REDIR_WCHAR (fwscanf);
-__LDBL_REDIR_WCHAR (wscanf);
-__LDBL_REDIR_WCHAR (swscanf);
+__LDBL_REDIR_DECL (fwprintf);
+__LDBL_REDIR_DECL (wprintf);
+__LDBL_REDIR_DECL (swprintf);
+__LDBL_REDIR_DECL (vfwprintf);
+__LDBL_REDIR_DECL (vwprintf);
+__LDBL_REDIR_DECL (vswprintf);
+__LDBL_REDIR_DECL (fwscanf);
+__LDBL_REDIR_DECL (wscanf);
+__LDBL_REDIR_DECL (swscanf);
 __END_NAMESPACE_C99
-# endif
+#endif
 
-# ifdef __USE_ISOC99
+#ifdef __USE_ISOC99
 __BEGIN_NAMESPACE_C99
-__LDBL_REDIR_WCHAR (vfwscanf);
-__LDBL_REDIR_WCHAR (vwscanf);
-__LDBL_REDIR_WCHAR (vswscanf);
+__LDBL_REDIR1_DECL (wcstold, wcstod);
+__LDBL_REDIR_DECL (vfwscanf);
+__LDBL_REDIR_DECL (vwscanf);
+__LDBL_REDIR_DECL (vswscanf);
 __END_NAMESPACE_C99
-# endif
+#endif
+
+#ifdef __USE_GNU
+__LDBL_REDIR1_DECL (wcstold_l, wcstod_l);
+#endif
+
+__LDBL_REDIR1_DECL (__wcstold_internal, __wcstod_internal);
 
 #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
 __LDBL_REDIR_DECL (__swprintf_chk)
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index fb7a641db7..670dc79c4a 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -561,8 +561,8 @@ extern __inline float
 __NTH (wcstof (__const wchar_t *__restrict __nptr,
 	       wchar_t **__restrict __endptr))
 { return __wcstof_internal (__nptr, __endptr, 0); }
-extern __inline long double
 #  ifndef __LDBL_COMPAT
+extern __inline long double
 __NTH (wcstold (__const wchar_t *__restrict __nptr,
 		wchar_t **__restrict __endptr))
 { return __wcstold_internal (__nptr, __endptr, 0); }
@@ -833,16 +833,15 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
 # include <wctype.h>
 #endif
 
-
-#ifdef __LDBL_COMPAT
-# include <bits/wchar-ldbl.h>
-#endif
-
 /* Define some macros helping to catch buffer overflows.  */
 #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
 # include <bits/wchar2.h>
 #endif
 
+#ifdef __LDBL_COMPAT
+# include <bits/wchar-ldbl.h>
+#endif
+
 __END_DECLS
 
 #endif	/* _WCHAR_H defined */