From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30796 invoked by alias); 7 May 2010 22:46:43 -0000 Received: (qmail 30788 invoked by uid 22791); 7 May 2010 22:46:43 -0000 X-SWARE-Spam-Status: No, hits=-5.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 07 May 2010 22:46:38 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o47MkZwn029663 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 7 May 2010 18:46:35 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o47MkYOZ032075; Fri, 7 May 2010 18:46:35 -0400 Received: from opsy.redhat.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id o47MkXLq014857; Fri, 7 May 2010 18:46:34 -0400 Received: by opsy.redhat.com (Postfix, from userid 500) id 91A73378183; Fri, 7 May 2010 16:46:33 -0600 (MDT) From: Tom Tromey To: "Paul Koning" Cc: Subject: Re: [RFC] Make string printing work on NetBSD (iconv issue) References: <19424.30941.651367.946330@pkoning-laptop.equallogic.com> Reply-To: tromey@redhat.com Date: Fri, 07 May 2010 22:46:00 -0000 In-Reply-To: (Paul Koning's message of "Fri, 7 May 2010 13:25:50 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-05/txt/msg00202.txt.bz2 >>>>> "Paul" == Paul Koning writes: Paul> It clearly can't make matters worse, because any platform that doesn't Paul> have the codeset name "wchar_t" currently doesn't work at all. I think it is worse in one sense, which is that the results can be incorrect with no warning. In particular I believe this could happen on Solaris in some locales. I do see your point though. Completely failing is terrible. Paul> NetBSD clearly is using UCS-4 for wchar_t, but it does not define that Paul> symbol. Bummer. Yet another idea would be host-specific overrides for INTERMEDIATE_ENCODING. Tom> Alternatively, it is always safe to fall back to the code that uses Tom> narrow intermediate characters and host_charset for the intermediate Tom> encoding. Paul> Yes, but doesn't that mean you end up not being able to accurately print Paul> a wide string if one occurs in your program -- because it gets mapped to Paul> the intermediate encoding first and with narrow chars for intermediate Paul> coding you have a lossy translation? Nope, there is code in gdb to handle this. You will see escape sequences for any unprintable or untranslatable characters. The only problem is just that more characters are considered to be unprintable in this scenario; roughly speaking this gets you back to what gdb 6.8 would do. Tom> Other approaches are available too, but they are generally more work Tom> than simply using GNU libiconv. Paul> Right, if you use libiconv then the issue goes away, and the patch I Paul> wrote should handle that case cleanly. I wanted to offer a solution to Paul> people who don't want to install libiconv because they have a functional Paul> iconv in libc, as is the case for NetBSD. Another possible approach is to choose a known intermediate representation, say UTF-32. Then, provide gdb-specific replacements for the various wide functions that are needed: wcslen, iswprint, iswdigit, btowc. Tom