15 using namespace dwarf;
17 void DWARFAbbreviationDeclaration::clear() {
36 uint8_t ChildrenByte = Data.
getU8(OffsetPtr);
40 uint32_t CurOffset = *OffsetPtr;
42 if (CurOffset == *OffsetPtr) {
46 CurOffset = *OffsetPtr;
48 if (CurOffset == *OffsetPtr) {
52 if (Attr == 0 && Form == 0)
54 Attributes.push_back(AttributeSpec(Attr, Form));
65 const char *tagString =
TagString(getTag());
66 OS <<
'[' << getCode() <<
"] ";
70 OS <<
format(
"DW_TAG_Unknown_%x", getTag());
71 OS <<
"\tDW_CHILDREN_" << (hasChildren() ?
"yes" :
"no") <<
'\n';
72 for (
unsigned i = 0, e = Attributes.size(); i != e; ++i) {
78 OS <<
format(
"DW_AT_Unknown_%x", Attributes[i].Attr);
84 OS <<
format(
"DW_FORM_Unknown_%x", Attributes[i].Form);
92 for (uint32_t i = 0, e = Attributes.size(); i != e; ++i) {
93 if (Attributes[i].Attr == attr)
bool extract(DataExtractor Data, uint32_t *OffsetPtr)
const char * FormEncodingString(unsigned Encoding)
format_object1< T > format(const char *Fmt, const T &Val)
void dump(raw_ostream &OS) const
DWARFAbbreviationDeclaration()
uint32_t findAttributeIndex(uint16_t attr) const
const char * TagString(unsigned Tag)
const char * AttributeString(unsigned Attribute)