Index: lldb/source/Core/DumpDataExtractor.cpp =================================================================== --- lldb/source/Core/DumpDataExtractor.cpp +++ lldb/source/Core/DumpDataExtractor.cpp @@ -212,7 +212,8 @@ s.PutChar(c); return; } - s.Printf("\\x%2.2x", c); + // Non-print characters can be assumed to be unsigned. + s.Printf("\\x%2.2x", static_cast(c)); } /// Dump a floating point type. Index: lldb/unittests/Core/DumpDataExtractorTest.cpp =================================================================== --- lldb/unittests/Core/DumpDataExtractorTest.cpp +++ lldb/unittests/Core/DumpDataExtractorTest.cpp @@ -133,6 +133,8 @@ TestDump(llvm::StringRef("aardvark"), lldb::Format::eFormatCString, "\"aardvark\""); + TestDump(llvm::StringRef("\xcf\xfa\xed\xfe\f"), lldb::Format::eFormatCString, + "\"\\xcf\\xfa\\xed\\xfe\\f\""); TestDump(99, lldb::Format::eFormatDecimal, "99"); // Just prints as a signed integer. TestDump(-1, lldb::Format::eFormatEnum, "-1");