This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix some fallouts from the long double patch


Hi!

This is what showed up when compiling/linking the testcase I posted
yesterday against CVS libc on sparc32 with -mlong-double-64.

Another thing is that the stdlib/isomac test fails for stdio.h and
wchar.h.  The reason there is that -mlong-double-128 (i.e. sysdep-CFLAGS)
isn't passed to the preprocessor and thus if the compiler doesn't default
to -mlong-double-128, it will want to include bits/stdio-ldbl.h,
bits/libio-ldbl.h and bits/wchar-ldbl.h, but as the test isn't testing
installed headers, they won't be found.
Either we could add for those 3 headers (well, I'd first need to verify
its those 3 and not some others) include/bits/ wrappers, or we need to
ensure -mlong-double-128 is passed to the preprocessor.

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.

--- libc/misc/sys/cdefs.h.jj	2006-01-14 13:31:35.000000000 -0500
+++ libc/misc/sys/cdefs.h	2006-01-14 14:59:43.000000000 -0500
@@ -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
--- libc/stdlib/bits/monetary-ldbl.h.jj	2006-01-14 13:31:35.000000000 -0500
+++ libc/stdlib/bits/monetary-ldbl.h	2006-01-14 14:55:18.000000000 -0500
@@ -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
--- libc/stdlib/bits/stdlib-ldbl.h.jj	2006-01-14 13:31:35.000000000 -0500
+++ libc/stdlib/bits/stdlib-ldbl.h	2006-01-14 15:01:11.000000000 -0500
@@ -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
--- libc/wcsmbs/bits/wchar-ldbl.h.jj	2006-01-14 13:31:36.000000000 -0500
+++ libc/wcsmbs/bits/wchar-ldbl.h	2006-01-14 15:02:28.000000000 -0500
@@ -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)
--- libc/wcsmbs/wchar.h.jj	2006-01-14 13:31:36.000000000 -0500
+++ libc/wcsmbs/wchar.h	2006-01-14 14:55:18.000000000 -0500
@@ -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 *__res
 # 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 */
--- libc/libio/bits/stdio-ldbl.h.jj	2006-01-14 13:31:35.000000000 -0500
+++ libc/libio/bits/stdio-ldbl.h	2006-01-14 14:55:18.000000000 -0500
@@ -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)
--- libc/misc/bits/syslog-ldbl.h.jj	2006-01-14 13:31:35.000000000 -0500
+++ libc/misc/bits/syslog-ldbl.h	2006-01-14 14:55:18.000000000 -0500
@@ -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

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]