Vince - I don't think dropping gcc on Linux is a great option, as other
platforms (FreeBSD) use gcc. The issue is also more related libc++ vs
libstdc++
Zachary - I believe the patch is meant to address problems like that,
but I have only ever used lldb command line in a simplistic way. I will
test something more complex and verify it works same on linux as OSX.
The wchar_t is used by internally in libedit, then translated to utf8
when to interface to lldb. I agree, utf8 std::string seems the cleanest
way to go.
Shawn.
On 10/28/2014 1:45 PM, Vince Harron wrote:
> codecvt> : the patch uses a c++ 11 class std::codecvt_utf8, this is a
facet implementation that will do utf8 to wchar convervsion. It is
part of c++ 11 standard, but not yet supported in gcc.
Should we drop support for building with gcc on Linux?
> - take libedit source files (or subset) and add to the lldb
project. We could either build a .so file, or just statically link
the .cpp files.
Is it a problem to drop these "berkeley stype license" files into the
project?
> - rework the Editline rewrite, so it either uses standard 8 bit
chars, or wchar_t/utf8 depending on the platform. This would be
conditionally built depending on the platform.
This would be my favorite option if possible. wchar_t never really
took roots in Linux AFAIK.
> - introduce custom step for new linux lldb users, where they
download libedit source and build and install a wchar version
Not as good as options above but we can work with this.
On Tue, Oct 28, 2014 at 12:42 PM, Shawn Best <sb...@blueshiftinc.com
<mailto:sb...@blueshiftinc.com>> wrote:
There is a significant Editline rewrite, adding a bunch of
improvements. It has been well tested on OSx, but not yet
upstreamed. I have spent some time reviewing the proposed patch
and working through issues to get it running on linux. To see the
patch and accompanying discussion, refer to:
http://reviews.llvm.org/D5835 The main issues that came up are
related to handling wide characters and differences between platforms.
Internally, lldb uses std::string which is an array of 8 bit
chars, that can either be 7 bit ascii, or utf8 encoded wide
characters. Libedit uses either char, or wchar_t which is a 32 bit
char on linux.
<codecvt> : the patch uses a c++ 11 class std::codecvt_utf8, this
is a facet implementation that will do utf8 to wchar convervsion.
It is part of c++ 11 standard, but not yet supported in gcc. I
can use #ifdef to temporarily write equivalent functionality in
that case while we wait for gcc to catch up.
libedit : libedit is a prerequisite that a new linux/lldb user
installs ( sudo apt-get install libedit-dev ). A few years ago,
libedit added versions of its functions that work on wchar_t.
Unfortunately, this option is not built by default, and not
present in the Ubuntu distribution. To get around this, I see a
few options:
- take libedit source files (or subset) and add to the lldb
project. We could either build a .so file, or just statically
link the .cpp files.
- rework the Editline rewrite, so it either uses standard 8 bit
chars, or wchar_t/utf8 depending on the platform. This would be
conditionally built depending on the platform.
- modify Ubuntu, so 'sudo apt-get install dev-libedit' installs a
version that has been built with wide character support enabled.
- introduce custom step for new linux lldb users, where they
download libedit source and build and install a wchar version
The last 2 options don't seem that great.
I expect there will be problems on Windows, which I think uses
utf16 coding. The file EditLineWin.cpp, contains prototypes for
most of the structures and functions needed, but they look stubbed
out.
Any thoughts?
Shawn.
_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
--
Vince Harron | Technical Lead Manager | vhar...@google.com
<mailto:vhar...@google.com> | 858-442-0868
_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev