diff options
| author | Dawn Perchik <dawn@burble.org> | 2015-09-25 02:16:52 +0000 |
|---|---|---|
| committer | Dawn Perchik <dawn@burble.org> | 2015-09-25 02:16:52 +0000 |
| commit | 045c8292231be31f904520cebffba907d1b04b85 (patch) | |
| tree | 7fc3b4c0d631d549a1b239aba3247c0f70f0d699 /lldb/source/DataFormatters | |
| parent | aa7c533ec326465523021960e315999db15673a2 (diff) | |
| download | bcm5719-llvm-045c8292231be31f904520cebffba907d1b04b85.tar.gz bcm5719-llvm-045c8292231be31f904520cebffba907d1b04b85.zip | |
Fix evaluation of unicode character arrays (char16_t[] and char32_t[])
Suppose we have the UTF-16 string:
char16_t[] s = u"hello";
Before this patch, evaluating the string in lldb would get:
(char16_t [6]) $0 = ([0] = U+0068 u'h', [1] = U+0065 u'e', [2] = U+006c u'l', [3] = U+006c u'l', [4] = U+006f u'o', [5] = U+0000 u'\0')
After applying the patch, we now get:
(char16_t [6]) $0 = u"hello"
Patch from evgeny.leviant@gmail.com
Reviewed by: granata.enrico
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D13053
llvm-svn: 248555
Diffstat (limited to 'lldb/source/DataFormatters')
| -rw-r--r-- | lldb/source/DataFormatters/FormattersHelpers.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lldb/source/DataFormatters/FormattersHelpers.cpp b/lldb/source/DataFormatters/FormattersHelpers.cpp index c2fcb98ec88..648913ee94b 100644 --- a/lldb/source/DataFormatters/FormattersHelpers.cpp +++ b/lldb/source/DataFormatters/FormattersHelpers.cpp @@ -306,3 +306,16 @@ lldb_private::formatters::ExtractIndexFromString (const char* item_name) return UINT32_MAX; return idx; } + +lldb::addr_t +lldb_private::formatters::GetArrayAddressOrPointerValue (ValueObject& valobj) +{ + lldb::addr_t data_addr = LLDB_INVALID_ADDRESS; + + if (valobj.IsPointerType()) + data_addr = valobj.GetValueAsUnsigned(0); + else if (valobj.IsArrayType()) + data_addr = valobj.GetAddressOf(); + + return data_addr; +} |

