diff --git a/src/apps/debugger/dwarf/DebugInfoEntries.cpp b/src/apps/debugger/dwarf/DebugInfoEntries.cpp index cf4d0deecc..698152a3e7 100644 --- a/src/apps/debugger/dwarf/DebugInfoEntries.cpp +++ b/src/apps/debugger/dwarf/DebugInfoEntries.cpp @@ -1836,7 +1836,8 @@ DIESubprogram::DIESubprogram() fReturnType(NULL), fAddressClass(0), fPrototyped(false), - fInline(DW_INL_not_inlined) + fInline(DW_INL_not_inlined), + fArtificial(false) { } @@ -1882,6 +1883,12 @@ DIESubprogram::AddChild(DebugInfoEntry* child) case DW_TAG_lexical_block: fBlocks.Add(child); return B_OK; + case DW_TAG_template_type_parameter: + fTemplateTypeParameters.Add(child); + return B_OK; + case DW_TAG_template_value_parameter: + fTemplateValueParameters.Add(child); + return B_OK; default: return DIEDeclaredNamedBase::AddChild(child); } @@ -1989,6 +1996,15 @@ DIESubprogram::AddAttribute_frame_base(uint16 attributeName, } +status_t +DIESubprogram::AddAttribute_artificial(uint16 attributeName, + const AttributeValue& value) +{ + fArtificial = value.flag; + return B_OK; +} + + // #pragma mark - DIETemplateTypeParameter diff --git a/src/apps/debugger/dwarf/DebugInfoEntries.h b/src/apps/debugger/dwarf/DebugInfoEntries.h index 7086689e62..fe54bc74c9 100644 --- a/src/apps/debugger/dwarf/DebugInfoEntries.h +++ b/src/apps/debugger/dwarf/DebugInfoEntries.h @@ -1217,9 +1217,16 @@ public: const DebugInfoEntryList Parameters() const { return fParameters; } const DebugInfoEntryList Variables() const { return fVariables; } const DebugInfoEntryList Blocks() const { return fBlocks; } + const DebugInfoEntryList TemplateTypeParameters() const + { return fTemplateTypeParameters; } + const DebugInfoEntryList TemplateValueParameters() const + { return fTemplateValueParameters; } bool IsPrototyped() const { return fPrototyped; } uint8 Inline() const { return fInline; } + bool IsArtificial() const { return fArtificial; } + + DIEType* ReturnType() const { return fReturnType; } virtual status_t AddChild(DebugInfoEntry* child); @@ -1245,11 +1252,16 @@ public: virtual status_t AddAttribute_frame_base( uint16 attributeName, const AttributeValue& value); + virtual status_t AddAttribute_artificial( + uint16 attributeName, + const AttributeValue& value); protected: DebugInfoEntryList fParameters; DebugInfoEntryList fVariables; DebugInfoEntryList fBlocks; + DebugInfoEntryList fTemplateTypeParameters; + DebugInfoEntryList fTemplateValueParameters; target_addr_t fLowPC; target_addr_t fHighPC; off_t fAddressRangesOffset; @@ -1260,9 +1272,9 @@ protected: uint8 fAddressClass; bool fPrototyped; uint8 fInline; + bool fArtificial; // TODO: -// DW_AT_artificial // DW_AT_calling_convention // DW_AT_elemental // DW_AT_entry_pc