diff --git a/ChangeLog b/ChangeLog index 045e0f9c93..cfc6c6861a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +2006-01-14 Roland McGrath + + * 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 + + * 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 * sysdeps/ieee754/ldbl-opt/nldbl-compat.h (NLDBL_DECL): Fix typo. 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 directly; use 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 #include -#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 directly; use 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 #endif - -#ifdef __LDBL_COMPAT -# include -#endif - /* Define some macros helping to catch buffer overflows. */ #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif +#ifdef __LDBL_COMPAT +# include +#endif + __END_DECLS #endif /* _WCHAR_H defined */