* Introduced common base class DIEArrayIndexType for enumeration and subrange
types. * Added/fixed some accessors. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33433 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
9cad16b96e
commit
bdfb434cba
@ -620,6 +620,45 @@ DIEDeclaredNamedBase::AddAttribute_declaration(uint16 attributeName,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - DIEArrayIndexType
|
||||||
|
|
||||||
|
|
||||||
|
DIEArrayIndexType::DIEArrayIndexType()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const DynamicAttributeValue*
|
||||||
|
DIEArrayIndexType::ByteSize() const
|
||||||
|
{
|
||||||
|
return &fByteSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
DIEArrayIndexType::AddAttribute_bit_stride(uint16 attributeName,
|
||||||
|
const AttributeValue& value)
|
||||||
|
{
|
||||||
|
return SetDynamicAttributeValue(fBitStride, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
DIEArrayIndexType::AddAttribute_byte_size(uint16 attributeName,
|
||||||
|
const AttributeValue& value)
|
||||||
|
{
|
||||||
|
return SetDynamicAttributeValue(fByteSize, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
DIEArrayIndexType::AddAttribute_byte_stride(uint16 attributeName,
|
||||||
|
const AttributeValue& value)
|
||||||
|
{
|
||||||
|
return SetDynamicAttributeValue(fByteStride, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - DIEArrayType
|
// #pragma mark - DIEArrayType
|
||||||
|
|
||||||
|
|
||||||
@ -770,13 +809,6 @@ DIEEnumerationType::Specification() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const DynamicAttributeValue*
|
|
||||||
DIEEnumerationType::ByteSize() const
|
|
||||||
{
|
|
||||||
return &fByteSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
DIEEnumerationType::AddChild(DebugInfoEntry* child)
|
DIEEnumerationType::AddChild(DebugInfoEntry* child)
|
||||||
{
|
{
|
||||||
@ -789,30 +821,6 @@ DIEEnumerationType::AddChild(DebugInfoEntry* child)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIEEnumerationType::AddAttribute_bit_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fBitStride, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIEEnumerationType::AddAttribute_byte_size(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fByteSize, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIEEnumerationType::AddAttribute_byte_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fByteStride, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
DIEEnumerationType::AddAttribute_specification(uint16 attributeName,
|
DIEEnumerationType::AddAttribute_specification(uint16 attributeName,
|
||||||
const AttributeValue& value)
|
const AttributeValue& value)
|
||||||
@ -1414,6 +1422,24 @@ DIEPointerToMemberType::AddAttribute_containing_type(uint16 attributeName,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
DIEPointerToMemberType::AddAttribute_use_location(uint16 attributeName,
|
||||||
|
const AttributeValue& value)
|
||||||
|
{
|
||||||
|
if (value.attributeClass == ATTRIBUTE_CLASS_LOCLISTPTR) {
|
||||||
|
fUseLocation.SetToLocationList(value.pointer);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.attributeClass == ATTRIBUTE_CLASS_BLOCK) {
|
||||||
|
fUseLocation.SetToExpression(value.block.data, value.block.length);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return B_BAD_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - DIESetType
|
// #pragma mark - DIESetType
|
||||||
|
|
||||||
|
|
||||||
@ -1461,37 +1487,6 @@ DIESubrangeType::Tag() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const DynamicAttributeValue*
|
|
||||||
DIESubrangeType::ByteSize() const
|
|
||||||
{
|
|
||||||
return &fByteSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIESubrangeType::AddAttribute_bit_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fBitStride, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIESubrangeType::AddAttribute_byte_size(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fByteSize, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
DIESubrangeType::AddAttribute_byte_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value)
|
|
||||||
{
|
|
||||||
return SetDynamicAttributeValue(fByteStride, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
DIESubrangeType::AddAttribute_count(uint16 attributeName,
|
DIESubrangeType::AddAttribute_count(uint16 attributeName,
|
||||||
const AttributeValue& value)
|
const AttributeValue& value)
|
||||||
|
@ -42,6 +42,11 @@
|
|||||||
|
|
||||||
// class base: compound
|
// class base: compound
|
||||||
|
|
||||||
|
// array index: derived
|
||||||
|
// DW_AT_bit_stride
|
||||||
|
// DW_AT_byte_stride
|
||||||
|
// DW_AT_byte_size
|
||||||
|
|
||||||
|
|
||||||
// unspecified: common
|
// unspecified: common
|
||||||
// DECL
|
// DECL
|
||||||
@ -65,10 +70,7 @@
|
|||||||
// DW_AT_type
|
// DW_AT_type
|
||||||
|
|
||||||
|
|
||||||
// enumeration: derived
|
// enumeration: array index
|
||||||
// DW_AT_bit_stride
|
|
||||||
// DW_AT_byte_size
|
|
||||||
// DW_AT_byte_stride
|
|
||||||
// DW_AT_specification
|
// DW_AT_specification
|
||||||
|
|
||||||
// pointer to member: derived
|
// pointer to member: derived
|
||||||
@ -79,10 +81,7 @@
|
|||||||
// set: derived
|
// set: derived
|
||||||
// DW_AT_byte_size
|
// DW_AT_byte_size
|
||||||
|
|
||||||
// subrange: derived
|
// subrange: array index
|
||||||
// DW_AT_bit_stride
|
|
||||||
// DW_AT_byte_size
|
|
||||||
// DW_AT_byte_stride
|
|
||||||
// DW_AT_count
|
// DW_AT_count
|
||||||
// DW_AT_lower_bound
|
// DW_AT_lower_bound
|
||||||
// DW_AT_threads_scaled
|
// DW_AT_threads_scaled
|
||||||
@ -425,6 +424,31 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class DIEArrayIndexType : public DIEDerivedType {
|
||||||
|
public:
|
||||||
|
DIEArrayIndexType();
|
||||||
|
|
||||||
|
virtual const DynamicAttributeValue* ByteSize() const;
|
||||||
|
|
||||||
|
const DynamicAttributeValue* BitStride() const
|
||||||
|
{ return &fBitStride; }
|
||||||
|
const DynamicAttributeValue* ByteStride() const
|
||||||
|
{ return &fByteStride; }
|
||||||
|
|
||||||
|
virtual status_t AddAttribute_bit_stride(uint16 attributeName,
|
||||||
|
const AttributeValue& value);
|
||||||
|
virtual status_t AddAttribute_byte_size(uint16 attributeName,
|
||||||
|
const AttributeValue& value);
|
||||||
|
virtual status_t AddAttribute_byte_stride(uint16 attributeName,
|
||||||
|
const AttributeValue& value);
|
||||||
|
|
||||||
|
private:
|
||||||
|
DynamicAttributeValue fBitStride;
|
||||||
|
DynamicAttributeValue fByteSize;
|
||||||
|
DynamicAttributeValue fByteStride;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
@ -441,6 +465,9 @@ public:
|
|||||||
|
|
||||||
virtual const DynamicAttributeValue* ByteSize() const;
|
virtual const DynamicAttributeValue* ByteSize() const;
|
||||||
|
|
||||||
|
const DynamicAttributeValue* BitStride() const
|
||||||
|
{ return &fBitStride; }
|
||||||
|
|
||||||
const DebugInfoEntryList& Dimensions() const
|
const DebugInfoEntryList& Dimensions() const
|
||||||
{ return fDimensions; }
|
{ return fDimensions; }
|
||||||
|
|
||||||
@ -495,7 +522,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class DIEEnumerationType : public DIEDerivedType {
|
class DIEEnumerationType : public DIEArrayIndexType {
|
||||||
public:
|
public:
|
||||||
DIEEnumerationType();
|
DIEEnumerationType();
|
||||||
|
|
||||||
@ -503,26 +530,15 @@ public:
|
|||||||
|
|
||||||
virtual DebugInfoEntry* Specification() const;
|
virtual DebugInfoEntry* Specification() const;
|
||||||
|
|
||||||
virtual const DynamicAttributeValue* ByteSize() const;
|
|
||||||
|
|
||||||
const DebugInfoEntryList& Enumerators() const
|
const DebugInfoEntryList& Enumerators() const
|
||||||
{ return fEnumerators; }
|
{ return fEnumerators; }
|
||||||
|
|
||||||
virtual status_t AddChild(DebugInfoEntry* child);
|
virtual status_t AddChild(DebugInfoEntry* child);
|
||||||
|
|
||||||
virtual status_t AddAttribute_bit_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_byte_size(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_byte_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_specification(uint16 attributeName,
|
virtual status_t AddAttribute_specification(uint16 attributeName,
|
||||||
const AttributeValue& value);
|
const AttributeValue& value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DynamicAttributeValue fBitStride;
|
|
||||||
DynamicAttributeValue fByteSize;
|
|
||||||
DynamicAttributeValue fByteStride;
|
|
||||||
DIEEnumerationType* fSpecification;
|
DIEEnumerationType* fSpecification;
|
||||||
DebugInfoEntryList fEnumerators;
|
DebugInfoEntryList fEnumerators;
|
||||||
};
|
};
|
||||||
@ -606,8 +622,8 @@ public:
|
|||||||
target_addr_t LowPC() const { return fLowPC; }
|
target_addr_t LowPC() const { return fLowPC; }
|
||||||
target_addr_t HighPC() const { return fHighPC; }
|
target_addr_t HighPC() const { return fHighPC; }
|
||||||
|
|
||||||
const DebugInfoEntryList Variables() const { return fVariables; }
|
const DebugInfoEntryList& Variables() const { return fVariables; }
|
||||||
const DebugInfoEntryList Blocks() const { return fBlocks; }
|
const DebugInfoEntryList& Blocks() const { return fBlocks; }
|
||||||
|
|
||||||
virtual status_t AddChild(DebugInfoEntry* child);
|
virtual status_t AddChild(DebugInfoEntry* child);
|
||||||
|
|
||||||
@ -738,6 +754,10 @@ public:
|
|||||||
|
|
||||||
virtual uint16 Tag() const;
|
virtual uint16 Tag() const;
|
||||||
|
|
||||||
|
DIEType* ReturnType() const { return fReturnType; }
|
||||||
|
|
||||||
|
const DebugInfoEntryList& Parameters() const { return fParameters; }
|
||||||
|
|
||||||
virtual status_t AddChild(DebugInfoEntry* child);
|
virtual status_t AddChild(DebugInfoEntry* child);
|
||||||
|
|
||||||
virtual status_t AddAttribute_address_class(uint16 attributeName,
|
virtual status_t AddAttribute_address_class(uint16 attributeName,
|
||||||
@ -899,17 +919,24 @@ public:
|
|||||||
|
|
||||||
virtual uint16 Tag() const;
|
virtual uint16 Tag() const;
|
||||||
|
|
||||||
|
DIECompoundType* ContainingType() const
|
||||||
|
{ return fContainingType; }
|
||||||
|
|
||||||
|
const LocationDescription& UseLocation() const
|
||||||
|
{ return fUseLocation; }
|
||||||
|
|
||||||
virtual status_t AddAttribute_address_class(uint16 attributeName,
|
virtual status_t AddAttribute_address_class(uint16 attributeName,
|
||||||
const AttributeValue& value);
|
const AttributeValue& value);
|
||||||
virtual status_t AddAttribute_containing_type(
|
virtual status_t AddAttribute_containing_type(
|
||||||
uint16 attributeName,
|
uint16 attributeName,
|
||||||
const AttributeValue& value);
|
const AttributeValue& value);
|
||||||
|
virtual status_t AddAttribute_use_location(uint16 attributeName,
|
||||||
|
const AttributeValue& value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DIECompoundType* fContainingType;
|
DIECompoundType* fContainingType;
|
||||||
|
LocationDescription fUseLocation;
|
||||||
uint8 fAddressClass;
|
uint8 fAddressClass;
|
||||||
// TODO:
|
|
||||||
// DW_AT_use_location
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -929,18 +956,12 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class DIESubrangeType : public DIEDerivedType {
|
class DIESubrangeType : public DIEArrayIndexType {
|
||||||
public:
|
public:
|
||||||
DIESubrangeType();
|
DIESubrangeType();
|
||||||
|
|
||||||
virtual uint16 Tag() const;
|
virtual uint16 Tag() const;
|
||||||
|
|
||||||
virtual const DynamicAttributeValue* ByteSize() const;
|
|
||||||
|
|
||||||
const DynamicAttributeValue* BitStride() const
|
|
||||||
{ return &fBitStride; }
|
|
||||||
const DynamicAttributeValue* ByteStride() const
|
|
||||||
{ return &fByteStride; }
|
|
||||||
const DynamicAttributeValue* LowerBound() const
|
const DynamicAttributeValue* LowerBound() const
|
||||||
{ return &fLowerBound; }
|
{ return &fLowerBound; }
|
||||||
const DynamicAttributeValue* UpperBound() const
|
const DynamicAttributeValue* UpperBound() const
|
||||||
@ -948,12 +969,6 @@ public:
|
|||||||
const DynamicAttributeValue* Count() const
|
const DynamicAttributeValue* Count() const
|
||||||
{ return &fCount; }
|
{ return &fCount; }
|
||||||
|
|
||||||
virtual status_t AddAttribute_bit_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_byte_size(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_byte_stride(uint16 attributeName,
|
|
||||||
const AttributeValue& value);
|
|
||||||
virtual status_t AddAttribute_count(uint16 attributeName,
|
virtual status_t AddAttribute_count(uint16 attributeName,
|
||||||
const AttributeValue& value);
|
const AttributeValue& value);
|
||||||
virtual status_t AddAttribute_lower_bound(uint16 attributeName,
|
virtual status_t AddAttribute_lower_bound(uint16 attributeName,
|
||||||
@ -965,9 +980,6 @@ public:
|
|||||||
const AttributeValue& value);
|
const AttributeValue& value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DynamicAttributeValue fBitStride;
|
|
||||||
DynamicAttributeValue fByteSize;
|
|
||||||
DynamicAttributeValue fByteStride;
|
|
||||||
DynamicAttributeValue fCount;
|
DynamicAttributeValue fCount;
|
||||||
DynamicAttributeValue fLowerBound;
|
DynamicAttributeValue fLowerBound;
|
||||||
DynamicAttributeValue fUpperBound;
|
DynamicAttributeValue fUpperBound;
|
||||||
|
Loading…
Reference in New Issue
Block a user