From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
To: "'Jan Kratochvil'" <jan.kratochvil@redhat.com>
Cc: "'Tom Tromey'" <tromey@redhat.com>, <gdb-patches@sourceware.org>
Subject: [RFA-v2] Handle cygwin wchar_t specifics
Date: Sat, 16 Apr 2011 21:29:00 -0000 [thread overview]
Message-ID: <000001cbfc7d$3f67f440$be37dcc0$@muller@ics-cnrs.unistra.fr> (raw)
In-Reply-To: <20110416162455.GA5599@host1.jankratochvil.net>
Thanks Jan,
I was able thanks to your code to generate a patch that seems to work for
me.
Goal of the patch is to generate for
INTERMEDIATE_ENCODING a name that is
"UCS-XYY"
where YY is LE or BE (which was already handled before
but where X is either 4 or 2 depending of the
size of type wchar_t type.
I don't know if the configure change is completely generated
by the small configure.ac change. If this is true, the ChangeLog
entry should probably just say Regenerate for configure.
Is this patch OK?
Should it be include in 7.3 branch?
Pierre
2011-04-16 Pierre Muller <muller@ics.u-strasbg.fr>
Correct INTERMEDIATE_ENCODING macro setup for systems using
2 byte "wchar_t" type.
* gdb_wchar.h: Use new SIZEOF_WCHAR_T macro to set
INTERMEDIATE_ENCODING macro value.
* config.in: Add SIZEOF_WCHAR_T macro.
* configure.ac: Add rule for SIZEOF_WCHAR_T.
* configure: Likewise.
Index: config.in
===================================================================
RCS file: /cvs/src/src/gdb/config.in,v
retrieving revision 1.125
diff -u -p -r1.125 config.in
--- config.in 17 Mar 2011 13:19:09 -0000 1.125
+++ config.in 16 Apr 2011 21:19:47 -0000
@@ -804,6 +804,9 @@
/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG
+/* The size of `wchar_t', as computed by sizeof. */
+#undef SIZEOF_WCHAR_T
+
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
'size_t'. */
#undef SIZE_T_SUFFIX
Index: configure
===================================================================
RCS file: /cvs/src/src/gdb/configure,v
retrieving revision 1.329
diff -u -p -r1.329 configure
--- configure 17 Mar 2011 13:19:09 -0000 1.329
+++ configure 16 Apr 2011 21:19:52 -0000
@@ -11637,6 +11637,44 @@ _ACEOF
fi
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+$as_echo_n "checking size of wchar_t... " >&6; }
+if test "${ac_cv_sizeof_wchar_t+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))"
"ac_cv_sizeof_wchar_t" "
+#include <wchar.h>
+#include <wctype.h>
+
+"; then :
+
+else
+ if test "$ac_cv_type_wchar_t" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "cannot compute sizeof (wchar_t)
+See \`config.log' for more details." "$LINENO" 5; }; }
+ else
+ ac_cv_sizeof_wchar_t=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
+_ACEOF
+
+
# ------------------------------------- #
# Checks for compiler characteristics. #
Index: configure.ac
===================================================================
RCS file: /cvs/src/src/gdb/configure.ac,v
retrieving revision 1.144
diff -u -p -r1.144 configure.ac
--- configure.ac 17 Mar 2011 13:19:10 -0000 1.144
+++ configure.ac 16 Apr 2011 21:19:52 -0000
@@ -976,6 +976,10 @@ AC_CHECK_TYPES(socklen_t, [], [],
[#include <sys/types.h>
#include <sys/socket.h>
])
+AC_CHECK_SIZEOF([wchar_t], 4, [
+#include <wchar.h>
+#include <wctype.h>
+])
# ------------------------------------- #
# Checks for compiler characteristics. #
Index: gdb_wchar.h
===================================================================
RCS file: /cvs/src/src/gdb/gdb_wchar.h,v
retrieving revision 1.6
diff -u -p -r1.6 gdb_wchar.h
--- gdb_wchar.h 1 Jan 2011 15:33:05 -0000 1.6
+++ gdb_wchar.h 16 Apr 2011 21:19:57 -0000
@@ -60,6 +60,7 @@
#include <wchar.h>
#include <wctype.h>
+#include "config.h"
typedef wchar_t gdb_wchar_t;
typedef wint_t gdb_wint_t;
@@ -71,20 +72,26 @@ typedef wint_t gdb_wint_t;
#define gdb_WEOF WEOF
#define LCST(X) L ## X
+/* Transform SIZEOF_WCHAR_T into a string. This requires a two-level
+ macro. This macro is used to generate INTERMEDIATE_ENCODING below. */
+#define STR_VAL1(X) #X
+#define STR_VAL(X) STR_VAL1(X)
+#define SIZEOF_WCHAR_T_STR STR_VAL(SIZEOF_WCHAR_T)
-/* If __STDC_ISO_10646__ is defined, then the host wchar_t is UCS-4.
+/* If __STDC_ISO_10646__ is defined, then the host wchar_t is UCS-4 or
UCS-2.
+ We use the version having the same size as "wchar_t" type.
We exploit this fact in the hope that there are hosts that define
this but which do not support "wchar_t" as an encoding argument to
iconv_open. We put the endianness into the encoding name to avoid
hosts that emit a BOM when the unadorned name is used. */
#if defined (__STDC_ISO_10646__)
-#if WORDS_BIGENDIAN
-#define INTERMEDIATE_ENCODING "UCS-4BE"
-#else
-#define INTERMEDIATE_ENCODING "UCS-4LE"
-#endif
+# if WORDS_BIGENDIAN
+# define INTERMEDIATE_ENCODING "UCS-" SIZEOF_WCHAR_T_STR "BE"
+# else
+# define INTERMEDIATE_ENCODING "UCS-" SIZEOF_WCHAR_T_STR "LE"
+# endif
#elif defined (_LIBICONV_VERSION) && _LIBICONV_VERSION >= 0x108
-#define INTERMEDIATE_ENCODING "wchar_t"
+# define INTERMEDIATE_ENCODING "wchar_t"
#else
/* This shouldn't happen, because the earlier #if should have filtered
out this case. */
next prev parent reply other threads:[~2011-04-16 21:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5928.31498147479$1302882967@news.gmane.org>
2011-04-15 18:16 ` [RFA] " Tom Tromey
2011-04-16 16:05 ` Pierre Muller
2011-04-16 16:25 ` Jan Kratochvil
2011-04-16 21:29 ` Pierre Muller [this message]
2011-04-16 22:35 ` [RFA-v2] " Jan Kratochvil
[not found] ` <000001cbfc7d$3f67f440$be37dcc0$%muller@ics-cnrs.unistra.fr>
2011-04-17 2:55 ` Eli Zaretskii
2011-04-18 10:36 ` Pierre Muller
[not found] ` <00a801cbfdb4$551214a0$ff363de0$%muller@ics-cnrs.unistra.fr>
2011-04-18 10:57 ` Eli Zaretskii
2011-04-18 15:14 ` [RFA-v3] " Pierre Muller
[not found] ` <21014.6501930014$1303139687@news.gmane.org>
2011-04-18 17:18 ` Tom Tromey
2011-04-19 9:18 ` [RFC-v4] " Pierre Muller
[not found] ` <004f01cbfe72$adddeb40$0999c1c0$%muller@ics-cnrs.unistra.fr>
2011-04-19 9:34 ` Eli Zaretskii
[not found] ` <34716.7311156683$1303204711@news.gmane.org>
2011-04-19 13:19 ` Tom Tromey
2011-04-19 13:56 ` [RFC-v5] " Pierre Muller
[not found] ` <16656.7281041809$1303221408@news.gmane.org>
2011-04-19 17:50 ` Tom Tromey
2011-04-20 7:59 ` Pierre Muller
2011-04-20 21:08 ` Pedro Alves
2011-04-21 6:57 ` Pierre Muller
2011-04-21 7:17 ` [RFA-v6] " Pierre Muller
2011-04-21 9:02 ` Pierre Muller
[not found] ` <24274.3825926029$1303376558@news.gmane.org>
2011-04-21 14:14 ` Tom Tromey
2011-04-21 14:27 ` Pierre Muller
[not found] ` <4691.37052209607$1303396084@news.gmane.org>
2011-04-21 15:06 ` Tom Tromey
2011-04-21 16:39 ` Pierre Muller
[not found] ` <25400.1310132027$1303403986@news.gmane.org>
2011-04-21 20:25 ` Tom Tromey
2011-04-21 21:18 ` 7.3 commit " Pierre Muller
[not found] ` <15550.7422438406$1303369059@news.gmane.org>
2011-04-21 14:10 ` [RFC-v5] " Tom Tromey
[not found] ` <420.768399681215$1303286406@news.gmane.org>
2011-04-20 20:21 ` Tom Tromey
2011-04-16 21:24 ` [RFA] " Tom Tromey
2011-04-18 20:07 ` Corinna Vinschen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='000001cbfc7d$3f67f440$be37dcc0$@muller@ics-cnrs.unistra.fr' \
--to=pierre.muller@ics-cnrs.unistra.fr \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=tromey@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox