Re: [lldb-dev] [Release-testers] [9.0.0 Release] Release Candidate 2 is here

2019-08-18 Thread Brian Cain via lldb-dev
When I built rv2 for SLES11 linux I saw the same phase 2/3 mismatch.  Is
that expected?

On Wed, Aug 14, 2019, 3:15 AM Hans Wennborg via Release-testers <
release-test...@lists.llvm.org> wrote:

> Hello everyone,
>
> 9.0.0-rc2 was tagged yesterday from the release_90 branch at r368683.
> In the Git monorepo it's available as the llvmorg-9.0.0-rc2 tag.
>
> Source code and docs are available at
> https://prereleases.llvm.org/9.0.0/#rc2
>
> Binaries will be added as they become available.
>
> The tag went in roughly one week behind schedule (see "Upcoming
> Releases" at https://llvm.org), but there are still two weeks left to
> the planned release date.
>
> Please file bug reports for any issues you find and mark them blocking
> https://llvm.org/PR42474 Please also look at the blockers and see if
> there's anything you can help with -- there are several bugs which
> lack traction at the moment.
>
> Release testers: please start your engines, run the script, share your
> results, and upload binaries.
>
> Many thanks,
> Hans
> ___
> Release-testers mailing list
> release-test...@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/release-testers
>
___
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


[lldb-dev] [patch] char8_t support (plus dlang UTF8/16/32)

2019-08-18 Thread James Blachly via lldb-dev
Dear LLDB developers:

I have added support for C++20 char8_t, as well as support for dlang's 
char/wchar/dchar types. As I am not a professional developer, and the 
submission-review-merge process for LLVM projects seems somewhat byzantine, I 
wanted to offer this up on the list in the hopes that others find it useful and 
someone will be able to integrate it.

kind regards
James


Using an example program that defines each of the unicode types as a single 
character as well as string, we see a major improvement.

BEFORE:
(lldb) frame v
error: need to add support for DW_TAG_base_type 'char8_t' encoded with DW_ATE = 
0x10, bit_size = 8
(void) c8 = 

(char16_t) c16 = U+ u'\0'
(char32_t) c32 = U+0x7fff U'翿'
(void [11]) str8 = ([0] = , [1] = , [2] = , [3] = , [4] = , [5] = , [6] = , [7] = , [8] = , [9] = , [10] = )
(void *) str8ptr = 0x7fffe3d9
(char16_t [12]) str16 = u"Hello UTF16"
(char16_t *) str16ptr = 0x7fffe3b0 u"Hello UTF16"
(char32_t [12]) str32 = U"Hello UTF32"
(char32_t *) str32ptr = 0x7fffe370 U"Hello UTF32"

AFTER:
(lldb) frame v
(char8_t) c8 = 0x00 u8'\0'
(char16_t) c16 = U+ u'\0'
(char32_t) c32 = U+0x7fff U'翿'
(char8_t [11]) str8 = u8"Hello UTF8"
(char8_t *) str8ptr = 0x7fffe3c9 u8"Hello UTF8"
(char16_t [12]) str16 = u"Hello UTF16"
(char16_t *) str16ptr = 0x7fffe3a0 u"Hello UTF16"
(char32_t [12]) str32 = U"Hello UTF32"
(char32_t *) str32ptr = 0x7fffe360 U"Hello UTF32”




diff --git a/include/lldb/lldb-enumerations.h b/include/lldb/lldb-enumerations.h
index f9830c04b..e7189dc9d 100644
--- a/include/lldb/lldb-enumerations.h
+++ b/include/lldb/lldb-enumerations.h
@@ -167,6 +167,7 @@ enum Format {
   eFormatOctal,
   eFormatOSType, // OS character codes encoded into an integer 'PICT' 'text'
  // etc...
+  eFormatUnicode8,
   eFormatUnicode16,
   eFormatUnicode32,
   eFormatUnsigned,
diff --git a/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 0b3c31816..15e0a82bd 100644
--- a/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -853,6 +853,14 @@ static void LoadSystemFormatters(lldb::TypeCategoryImplSP 
cpp_category_sp) {
 
   // FIXME because of a bug in the FormattersContainer we need to add a summary
   // for both X* and const X* ()
+  AddCXXSummary(
+  cpp_category_sp, lldb_private::formatters::Char8StringSummaryProvider,
+  "char8_t * summary provider", ConstString("char8_t *"), string_flags);
+  AddCXXSummary(cpp_category_sp,
+lldb_private::formatters::Char8StringSummaryProvider,
+"char8_t [] summary provider",
+ConstString("char8_t \\[[0-9]+\\]"), string_array_flags, true);
+
   AddCXXSummary(
   cpp_category_sp, lldb_private::formatters::Char16StringSummaryProvider,
   "char16_t * summary provider", ConstString("char16_t *"), string_flags);
@@ -890,6 +898,9 @@ static void LoadSystemFormatters(lldb::TypeCategoryImplSP 
cpp_category_sp) {
   .SetHideItemNames(true)
   .SetShowMembersOneLiner(false);
 
+  AddCXXSummary(
+  cpp_category_sp, lldb_private::formatters::Char8SummaryProvider,
+  "char8_t summary provider", ConstString("char8_t"), widechar_flags);
   AddCXXSummary(
   cpp_category_sp, lldb_private::formatters::Char16SummaryProvider,
   "char16_t summary provider", ConstString("char16_t"), widechar_flags);
diff --git a/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp 
b/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
index 959079070..3ea7589d8 100644
--- a/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
+++ b/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
@@ -32,6 +32,31 @@ using namespace lldb;
 using namespace lldb_private;
 using namespace lldb_private::formatters;
 
+bool lldb_private::formatters::Char8StringSummaryProvider(
+ValueObject &valobj, Stream &stream, const TypeSummaryOptions &) {
+  ProcessSP process_sp = valobj.GetProcessSP();
+  if (!process_sp)
+return false;
+
+  lldb::addr_t valobj_addr = GetArrayAddressOrPointerValue(valobj);
+  if (valobj_addr == 0 || valobj_addr == LLDB_INVALID_ADDRESS)
+return false;
+
+  StringPrinter::ReadStringAndDumpToStreamOptions options(valobj);
+  options.SetLocation(valobj_addr);
+  options.SetProcessSP(process_sp);
+  options.SetStream(&stream);
+  options.SetPrefixToken("u8");
+
+  if (!StringPrinter::ReadStringAndDumpToStream<
+  StringPrinter::StringElementType::UTF8>(options)) {
+stream.Printf("Summary Unavailable");
+return true;
+  }
+
+  return true;
+}
+
 bool lldb_private::formatters::Char16StringSummaryProvider(
 ValueObject &valobj, Stream &stream, const TypeSummaryOptions &) {
   ProcessSP process_sp = valobj.GetProcessSP();
@@ -128,6 +153,32 @@ bool lldb_private::formatters::WCharStringSummaryProvider(
   return true;
 }
 
+bool lldb_private::formatters::Char8Summar