teemperor created this revision.
teemperor added a reviewer: labath.
Herald added subscribers: lldb-commits, JDevlieghere.
Herald added a project: LLDB.
teemperor added a comment.
If anyone wants to test this pre-commit, that would be appreciated as I fear
we'll find some Editline implementations that will freak out over this patch. I
tested this on Arch Linux and macOS.
Our Editline implementation in LLDB supports using the wchar interface of
Editline which
should improve handling of unicode input when using Editline. At the moment we
essentially
just ignore it and print the escaped unicode code point to the command line
(which we then
also incorrectly treat as multiple characters, so console navigation is also
broken afterwards).
This patch just adds the include to the host config file which already contains
the LLDB_EDITLINE_USE_WCHAR
define to enable the Editline support (we just never included it in the file
before).
Also adds a test that the unicode we put into Editline actually ends up being
interpreted as unicode
and not just ends up being ignored in Editline.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D71251
Files:
lldb/include/lldb/Host/Editline.h
lldb/packages/Python/lldbsuite/test/iohandler/unicode/TestUnicode.py
Index: lldb/packages/Python/lldbsuite/test/iohandler/unicode/TestUnicode.py
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/iohandler/unicode/TestUnicode.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+"""
+Test unicode handling in LLDB.
+"""
+
+import os
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbpexpect import PExpectTest
+
+class TestCase(PExpectTest):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # PExpect uses many timeouts internally and doesn't play well
+ # under ASAN on a loaded machine..
+ @skipIfAsan
+ def test_unicode_input(self):
+ self.launch()
+
+ # Pass in some unicode that should be read correctly.
+ self.child.send(u'\u1234\n')
+ # We should get out that this is an invalid command with our character
as UTF-8.
+ self.child.expect(u"error: '\u1234' is not a valid
command.".encode('utf-8'))
+
+ self.quit()
Index: lldb/include/lldb/Host/Editline.h
===================================================================
--- lldb/include/lldb/Host/Editline.h
+++ lldb/include/lldb/Host/Editline.h
@@ -32,6 +32,8 @@
#define liblldb_Editline_h_
#if defined(__cplusplus)
+#include "lldb/Host/Config.h"
+
#if LLDB_EDITLINE_USE_WCHAR
#include <codecvt>
#endif
Index: lldb/packages/Python/lldbsuite/test/iohandler/unicode/TestUnicode.py
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/iohandler/unicode/TestUnicode.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+"""
+Test unicode handling in LLDB.
+"""
+
+import os
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbpexpect import PExpectTest
+
+class TestCase(PExpectTest):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # PExpect uses many timeouts internally and doesn't play well
+ # under ASAN on a loaded machine..
+ @skipIfAsan
+ def test_unicode_input(self):
+ self.launch()
+
+ # Pass in some unicode that should be read correctly.
+ self.child.send(u'\u1234\n')
+ # We should get out that this is an invalid command with our character as UTF-8.
+ self.child.expect(u"error: '\u1234' is not a valid command.".encode('utf-8'))
+
+ self.quit()
Index: lldb/include/lldb/Host/Editline.h
===================================================================
--- lldb/include/lldb/Host/Editline.h
+++ lldb/include/lldb/Host/Editline.h
@@ -32,6 +32,8 @@
#define liblldb_Editline_h_
#if defined(__cplusplus)
+#include "lldb/Host/Config.h"
+
#if LLDB_EDITLINE_USE_WCHAR
#include <codecvt>
#endif
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits