Skip to content

Commit

Permalink
[DWARF] Get rid of DWARFDebugNames::HeaderPOD. NFC.
Browse files Browse the repository at this point in the history
This structure was used to get the size of the fixed-size part of a Name
Index header for 32-bit DWARF. It is unsuitable for 64-bit DWARF because
the size of the unit length field is different.

Differential Revision: https://reviews.llvm.org/D73040
  • Loading branch information
igorkudrin committed Jan 23, 2020
1 parent 62c221b commit 99960de
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
18 changes: 7 additions & 11 deletions llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,13 @@ class AppleAcceleratorTable : public DWARFAcceleratorTable {
/// referenced by the name table and interpreted with the help of the
/// abbreviation table.
class DWARFDebugNames : public DWARFAcceleratorTable {
/// The fixed-size part of a DWARF v5 Name Index header
struct HeaderPOD {
public:
class NameIndex;
class NameIterator;
class ValueIterator;

/// DWARF v5 Name Index header.
struct Header {
uint32_t UnitLength;
uint16_t Version;
uint16_t Padding;
Expand All @@ -234,15 +239,6 @@ class DWARFDebugNames : public DWARFAcceleratorTable {
uint32_t NameCount;
uint32_t AbbrevTableSize;
uint32_t AugmentationStringSize;
};

public:
class NameIndex;
class NameIterator;
class ValueIterator;

/// DWARF v5 Name Index header.
struct Header : public HeaderPOD {
SmallString<8> AugmentationString;

Error extract(const DWARFDataExtractor &AS, uint64_t *Offset);
Expand Down
14 changes: 13 additions & 1 deletion llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,8 +378,20 @@ void DWARFDebugNames::Header::dump(ScopedPrinter &W) const {

Error DWARFDebugNames::Header::extract(const DWARFDataExtractor &AS,
uint64_t *Offset) {
// These fields are the same for 32-bit and 64-bit DWARF formats.
constexpr unsigned CommonHeaderSize = 2 + // Version
2 + // Padding
4 + // CU count
4 + // Local TU count
4 + // Foreign TU count
4 + // Bucket count
4 + // Name count
4 + // Abbreviations table size
4; // Augmentation string size
static const unsigned DWARF32HeaderFixedPartSize =
dwarf::getUnitLengthFieldByteSize(dwarf::DWARF32) + CommonHeaderSize;
// Check that we can read the fixed-size part.
if (!AS.isValidOffset(*Offset + sizeof(HeaderPOD) - 1))
if (!AS.isValidOffsetForDataOfSize(*Offset, DWARF32HeaderFixedPartSize))
return createStringError(errc::illegal_byte_sequence,
"Section too small: cannot read header.");

Expand Down

0 comments on commit 99960de

Please sign in to comment.