@@ -239,122 +239,12 @@ VectorIteratorSyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) {
239239
240240bool lldb_private::formatters::LibStdcppStringSummaryProvider (
241241 ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
242- const bool scalar_is_load_addr = true ;
243- auto [addr_of_string, addr_type] =
244- valobj.IsPointerOrReferenceType ()
245- ? valobj.GetPointerValue ()
246- : valobj.GetAddressOf (scalar_is_load_addr);
247- if (addr_of_string != LLDB_INVALID_ADDRESS) {
248- switch (addr_type) {
249- case eAddressTypeLoad: {
250- ProcessSP process_sp (valobj.GetProcessSP ());
251- if (!process_sp)
252- return false ;
253-
254- StringPrinter::ReadStringAndDumpToStreamOptions options (valobj);
255- Status error;
256- lldb::addr_t addr_of_data =
257- process_sp->ReadPointerFromMemory (addr_of_string, error);
258- if (error.Fail () || addr_of_data == 0 ||
259- addr_of_data == LLDB_INVALID_ADDRESS)
260- return false ;
261- options.SetLocation (addr_of_data);
262- options.SetTargetSP (valobj.GetTargetSP ());
263- options.SetStream (&stream);
264- options.SetNeedsZeroTermination (false );
265- options.SetBinaryZeroIsTerminator (true );
266- lldb::addr_t size_of_data = process_sp->ReadPointerFromMemory (
267- addr_of_string + process_sp->GetAddressByteSize (), error);
268- if (error.Fail ())
269- return false ;
270- options.SetSourceSize (size_of_data);
271- options.SetHasSourceSize (true );
272-
273- if (!StringPrinter::ReadStringAndDumpToStream<
274- StringPrinter::StringElementType::UTF8>(options)) {
275- stream.Printf (" Summary Unavailable" );
276- return true ;
277- } else
278- return true ;
279- } break ;
280- case eAddressTypeHost:
281- break ;
282- case eAddressTypeInvalid:
283- case eAddressTypeFile:
284- break ;
285- }
286- }
287- return false ;
288- }
242+ ValueObjectSP ptr = valobj.GetChildAtNamePath ({" _M_dataplus" , " _M_p" });
243+ if (!ptr)
244+ return false ;
289245
290- bool lldb_private::formatters::LibStdcppWStringSummaryProvider (
291- ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
292- const bool scalar_is_load_addr = true ;
293- auto [addr_of_string, addr_type] = valobj.GetAddressOf (scalar_is_load_addr);
294- if (addr_of_string != LLDB_INVALID_ADDRESS) {
295- switch (addr_type) {
296- case eAddressTypeLoad: {
297- ProcessSP process_sp (valobj.GetProcessSP ());
298- if (!process_sp)
299- return false ;
300-
301- CompilerType wchar_compiler_type =
302- valobj.GetCompilerType ().GetBasicTypeFromAST (lldb::eBasicTypeWChar);
303-
304- if (!wchar_compiler_type)
305- return false ;
306-
307- // Safe to pass nullptr for exe_scope here.
308- std::optional<uint64_t > size =
309- llvm::expectedToOptional (wchar_compiler_type.GetBitSize (nullptr ));
310- if (!size)
311- return false ;
312- const uint32_t wchar_size = *size;
313-
314- StringPrinter::ReadStringAndDumpToStreamOptions options (valobj);
315- Status error;
316- lldb::addr_t addr_of_data =
317- process_sp->ReadPointerFromMemory (addr_of_string, error);
318- if (error.Fail () || addr_of_data == 0 ||
319- addr_of_data == LLDB_INVALID_ADDRESS)
320- return false ;
321- options.SetLocation (addr_of_data);
322- options.SetTargetSP (valobj.GetTargetSP ());
323- options.SetStream (&stream);
324- options.SetNeedsZeroTermination (false );
325- options.SetBinaryZeroIsTerminator (false );
326- lldb::addr_t size_of_data = process_sp->ReadPointerFromMemory (
327- addr_of_string + process_sp->GetAddressByteSize (), error);
328- if (error.Fail ())
329- return false ;
330- options.SetSourceSize (size_of_data);
331- options.SetHasSourceSize (true );
332- options.SetPrefixToken (" L" );
333-
334- switch (wchar_size) {
335- case 8 :
336- return StringPrinter::ReadStringAndDumpToStream<
337- StringPrinter::StringElementType::UTF8>(options);
338- case 16 :
339- return StringPrinter::ReadStringAndDumpToStream<
340- StringPrinter::StringElementType::UTF16>(options);
341- case 32 :
342- return StringPrinter::ReadStringAndDumpToStream<
343- StringPrinter::StringElementType::UTF32>(options);
344- default :
345- stream.Printf (" size for wchar_t is not valid" );
346- return true ;
347- }
348- return true ;
349- } break ;
350- case eAddressTypeHost:
351- break ;
352- case eAddressTypeInvalid:
353- case eAddressTypeFile:
354- break ;
355- }
356- }
357- return false ;
246+ stream << ptr->GetSummaryAsCString ();
247+ return true ;
358248}
359249
360250LibStdcppSharedPtrSyntheticFrontEnd::LibStdcppSharedPtrSyntheticFrontEnd (
0 commit comments