forked from OSchip/llvm-project
Fix windows test failure caused by r323638
The test was failing because of an incorrect sizeof check in the name index parsing code. This code was meant to check that we have enough input to parse the fixed-size part of the dwarf header, which it did by comparing the input to sizeof(Header). Originally struct Header only contained the fixed-size part, but during review, we've moved additional members into it, which rendered the sizeof check invalid. I resolve this by moving the fixed-size part to a separate struct and updating the sizeof-expression to use that. llvm-svn: 323648
This commit is contained in:
parent
dffb1a806c
commit
e7264106d4
|
@ -164,9 +164,8 @@ public:
|
|||
/// referenced by the name table and interpreted with the help of the
|
||||
/// abbreviation table.
|
||||
class DWARFDebugNames : public DWARFAcceleratorTable {
|
||||
public:
|
||||
/// Dwarf 5 Name Index header.
|
||||
struct Header {
|
||||
/// The fixed-size part of a Dwarf 5 Name Index header
|
||||
struct HeaderPOD {
|
||||
uint32_t UnitLength;
|
||||
uint16_t Version;
|
||||
uint16_t Padding;
|
||||
|
@ -177,6 +176,11 @@ public:
|
|||
uint32_t NameCount;
|
||||
uint32_t AbbrevTableSize;
|
||||
uint32_t AugmentationStringSize;
|
||||
};
|
||||
|
||||
public:
|
||||
/// Dwarf 5 Name Index header.
|
||||
struct Header : public HeaderPOD {
|
||||
SmallString<8> AugmentationString;
|
||||
|
||||
Error extract(const DWARFDataExtractor &AS, uint32_t *Offset);
|
||||
|
|
|
@ -331,7 +331,7 @@ void DWARFDebugNames::Header::dump(ScopedPrinter &W) const {
|
|||
llvm::Error DWARFDebugNames::Header::extract(const DWARFDataExtractor &AS,
|
||||
uint32_t *Offset) {
|
||||
// Check that we can read the fixed-size part.
|
||||
if (!AS.isValidOffset(*Offset + sizeof(Header) - 1))
|
||||
if (!AS.isValidOffset(*Offset + sizeof(HeaderPOD) - 1))
|
||||
return make_error<StringError>("Section too small: cannot read header.",
|
||||
inconvertibleErrorCode());
|
||||
|
||||
|
|
Loading…
Reference in New Issue