@@ -395,145 +395,6 @@ bool DWARFDebugInfoEntry::GetDIENamesAndRanges(
395
395
return !ranges.IsEmpty ();
396
396
}
397
397
398
- // Dump
399
- //
400
- // Dumps a debug information entry and all of it's attributes to the specified
401
- // stream.
402
- void DWARFDebugInfoEntry::Dump (const DWARFUnit *cu, Stream &s,
403
- uint32_t recurse_depth) const {
404
- const DWARFDataExtractor &data = cu->GetData ();
405
- lldb::offset_t offset = m_offset;
406
-
407
- if (data.ValidOffset (offset)) {
408
- dw_uleb128_t abbrCode = data.GetULEB128 (&offset);
409
-
410
- s.Printf (" \n 0x%8.8x: " , m_offset);
411
- s.Indent ();
412
- if (abbrCode != m_abbr_idx) {
413
- s.Printf (" error: DWARF has been modified\n " );
414
- } else if (abbrCode) {
415
- const auto *abbrevDecl = GetAbbreviationDeclarationPtr (cu);
416
- if (abbrevDecl) {
417
- s.PutCString (DW_TAG_value_to_name (abbrevDecl->Tag ()));
418
- s.Printf (" [%u] %c\n " , abbrCode, abbrevDecl->HasChildren () ? ' *' : ' ' );
419
-
420
- // Dump all data in the .debug_info/.debug_types for the attributes
421
- const uint32_t numAttributes = abbrevDecl->NumAttributes ();
422
- for (uint32_t i = 0 ; i < numAttributes; ++i) {
423
- DWARFFormValue form_value (cu);
424
- dw_attr_t attr;
425
- abbrevDecl->GetAttrAndFormValueByIndex (i, attr, form_value);
426
-
427
- DumpAttribute (cu, data, &offset, s, attr, form_value);
428
- }
429
-
430
- const DWARFDebugInfoEntry *child = GetFirstChild ();
431
- if (recurse_depth > 0 && child) {
432
- s.IndentMore ();
433
-
434
- while (child) {
435
- child->Dump (cu, s, recurse_depth - 1 );
436
- child = child->GetSibling ();
437
- }
438
- s.IndentLess ();
439
- }
440
- } else
441
- s.Printf (" Abbreviation code note found in 'debug_abbrev' class for "
442
- " code: %u\n " ,
443
- abbrCode);
444
- } else {
445
- s.Printf (" NULL\n " );
446
- }
447
- }
448
- }
449
-
450
- // DumpAttribute
451
- //
452
- // Dumps a debug information entry attribute along with it's form. Any special
453
- // display of attributes is done (disassemble location lists, show enumeration
454
- // values for attributes, etc).
455
- void DWARFDebugInfoEntry::DumpAttribute (
456
- const DWARFUnit *cu, const DWARFDataExtractor &data,
457
- lldb::offset_t *offset_ptr, Stream &s, dw_attr_t attr,
458
- DWARFFormValue &form_value) {
459
- bool show_form = s.GetFlags ().Test (DWARFDebugInfo::eDumpFlag_ShowForm);
460
-
461
- s.Printf (" " );
462
- s.Indent (DW_AT_value_to_name (attr));
463
-
464
- if (show_form) {
465
- s.Printf (" [%s" , DW_FORM_value_to_name (form_value.Form ()));
466
- }
467
-
468
- if (!form_value.ExtractValue (data, offset_ptr))
469
- return ;
470
-
471
- if (show_form) {
472
- if (form_value.Form () == DW_FORM_indirect) {
473
- s.Printf (" [%s]" , DW_FORM_value_to_name (form_value.Form ()));
474
- }
475
-
476
- s.PutCString (" ] " );
477
- }
478
-
479
- s.PutCString (" ( " );
480
-
481
- // Check to see if we have any special attribute formatters
482
- switch (attr) {
483
- case DW_AT_stmt_list:
484
- s.Printf (" 0x%8.8" PRIx64, form_value.Unsigned ());
485
- break ;
486
-
487
- case DW_AT_language:
488
- s.PutCString (DW_LANG_value_to_name (form_value.Unsigned ()));
489
- break ;
490
-
491
- case DW_AT_encoding:
492
- s.PutCString (DW_ATE_value_to_name (form_value.Unsigned ()));
493
- break ;
494
-
495
- case DW_AT_frame_base:
496
- case DW_AT_location:
497
- case DW_AT_data_member_location: {
498
- const uint8_t *blockData = form_value.BlockData ();
499
- if (blockData) {
500
- // Location description is inlined in data in the form value
501
- DWARFDataExtractor locationData (data,
502
- (*offset_ptr) - form_value.Unsigned (),
503
- form_value.Unsigned ());
504
- DWARFExpression::PrintDWARFExpression (
505
- s, locationData, DWARFUnit::GetAddressByteSize (cu), 4 , false );
506
- } else {
507
- // We have a location list offset as the value that is the offset into
508
- // the .debug_loc section that describes the value over it's lifetime
509
- uint64_t debug_loc_offset = form_value.Unsigned ();
510
- DWARFExpression::PrintDWARFLocationList (s, cu, cu->GetLocationData (),
511
- debug_loc_offset);
512
- }
513
- } break ;
514
-
515
- case DW_AT_abstract_origin:
516
- case DW_AT_specification: {
517
- DWARFDIE abstract_die = form_value.Reference ();
518
- form_value.Dump (s);
519
- // *ostrm_ptr << HEX32 << abstract_die.GetOffset() << " ( ";
520
- abstract_die.GetName (s);
521
- } break ;
522
-
523
- case DW_AT_type: {
524
- DWARFDIE type_die = form_value.Reference ();
525
- s.PutCString (" ( " );
526
- type_die.AppendTypeName (s);
527
- s.PutCString (" )" );
528
- } break ;
529
-
530
- default :
531
- break ;
532
- }
533
-
534
- s.PutCString (" )\n " );
535
- }
536
-
537
398
// Get all attribute values for a given DIE, including following any
538
399
// specification or abstract origin attributes and including those in the
539
400
// results. Any duplicate attributes will have the first instance take
0 commit comments