@@ -239,122 +239,12 @@ VectorIteratorSyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) {
239
239
240
240
bool lldb_private::formatters::LibStdcppStringSummaryProvider (
241
241
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 ;
289
245
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 ;
358
248
}
359
249
360
250
LibStdcppSharedPtrSyntheticFrontEnd::LibStdcppSharedPtrSyntheticFrontEnd (
0 commit comments