This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
FYI: fix Solaris problem with auto host charset
- From: Tom Tromey <tromey at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 17 Apr 2009 17:49:58 -0600
- Subject: FYI: fix Solaris problem with auto host charset
- Reply-to: tromey at redhat dot com
I'm checking this in.
On some versions of Solaris, nl_langinfo(CODESET) will return "646"
for the C locale. Unfortunately, this value is not then recognized by
iconv_open.
This fixes the problem by recognizing this situation and using "ASCII"
instead. I'm unaware of any other names needing this treatment.
This is a bit of a hack. But, I think such cases should be rare. (My
experience with gcj was that this was the only such case ever
reported.)
Built and regtested on x86-64 (compile farm).
Joel also tested it on an actual Solaris box showing the problem, and
reported improved test results.
Tom
2009-04-17 Tom Tromey <tromey@redhat.com>
* charset.c (_initialize_charset): Add special case for "646".
Index: charset.c
===================================================================
RCS file: /cvs/src/src/gdb/charset.c,v
retrieving revision 1.22
diff -u -r1.22 charset.c
--- charset.c 15 Apr 2009 22:20:30 -0000 1.22
+++ charset.c 17 Apr 2009 23:45:32 -0000
@@ -817,6 +817,10 @@
#ifndef PHONY_ICONV
#ifdef HAVE_LANGINFO_CODESET
auto_host_charset_name = nl_langinfo (CODESET);
+ /* Solaris will return `646' here -- but the Solaris iconv then
+ does not accept this. */
+ if (!strcmp (auto_host_charset_name, "646"))
+ auto_host_charset_name = "ASCII";
target_charset_name = auto_host_charset_name;
set_be_le_names ();