This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


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

FYI: fix Solaris problem with auto host charset


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 ();


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