Skip to content

Commit 3daefb0

Browse files
committedJul 24, 2019
[DWARF][NFC] Add constants for reserved values of an initial length field.
Differential Revision: https://reviews.llvm.org/D65039 llvm-svn: 366887
1 parent ec10d5c commit 3daefb0

File tree

8 files changed

+18
-12
lines changed

8 files changed

+18
-12
lines changed
 

‎llvm/include/llvm/BinaryFormat/Dwarf.h

+5
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ enum LLVMConstants : uint32_t {
4646
DW_VIRTUALITY_invalid = ~0U, // Virtuality for invalid results.
4747
DW_MACINFO_invalid = ~0U, // Macinfo type for invalid results.
4848

49+
// Special values for an initial length field.
50+
DW_LENGTH_lo_reserved = 0xfffffff0, // Lower bound of the reserved range.
51+
DW_LENGTH_DWARF64 = 0xffffffff, // Indicator of 64-bit DWARF format.
52+
DW_LENGTH_hi_reserved = 0xffffffff, // Upper bound of the reserved range.
53+
4954
// Other constants.
5055
DWARF_VERSION = 4, // Default dwarf version we output.
5156
DW_PUBTYPES_VERSION = 2, // Section version number for .debug_pubtypes.

‎llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Error DWARFDebugAddrTable::extract(DWARFDataExtractor Data,
4444
Format = dwarf::DwarfFormat::DWARF32;
4545
if (UnitVersion >= 5) {
4646
HeaderData.Length = Data.getU32(OffsetPtr);
47-
if (HeaderData.Length == 0xffffffffu) {
47+
if (HeaderData.Length == dwarf::DW_LENGTH_DWARF64) {
4848
invalidateLength();
4949
return createStringError(errc::not_supported,
5050
"DWARF64 is not supported in .debug_addr at offset 0x%" PRIx32,

‎llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ void DWARFDebugFrame::parse(DWARFDataExtractor Data) {
364364
uint64_t Length = Data.getRelocatedValue(4, &Offset);
365365
uint64_t Id;
366366

367-
if (Length == UINT32_MAX) {
367+
if (Length == dwarf::DW_LENGTH_DWARF64) {
368368
// DWARF-64 is distinguished by the first 32 bits of the initial length
369369
// field being 0xffffffff. Then, the next 64 bits are the actual entry
370370
// length.

‎llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -332,10 +332,10 @@ Error DWARFDebugLine::Prologue::parse(const DWARFDataExtractor &DebugLineData,
332332

333333
clear();
334334
TotalLength = DebugLineData.getRelocatedValue(4, OffsetPtr);
335-
if (TotalLength == UINT32_MAX) {
335+
if (TotalLength == dwarf::DW_LENGTH_DWARF64) {
336336
FormParams.Format = dwarf::DWARF64;
337337
TotalLength = DebugLineData.getU64(OffsetPtr);
338-
} else if (TotalLength >= 0xfffffff0) {
338+
} else if (TotalLength >= dwarf::DW_LENGTH_lo_reserved) {
339339
return createStringError(errc::invalid_argument,
340340
"parsing line table prologue at offset 0x%8.8" PRIx64
341341
" unsupported reserved unit length found of value 0x%8.8" PRIx64,
@@ -1126,7 +1126,8 @@ DWARFDebugLine::SectionParser::SectionParser(DWARFDataExtractor &Data,
11261126
}
11271127

11281128
bool DWARFDebugLine::Prologue::totalLengthIsValid() const {
1129-
return TotalLength == 0xffffffff || TotalLength < 0xfffffff0;
1129+
return TotalLength == dwarf::DW_LENGTH_DWARF64 ||
1130+
TotalLength < dwarf::DW_LENGTH_lo_reserved;
11301131
}
11311132

11321133
DWARFDebugLine::LineTable DWARFDebugLine::SectionParser::parseNext(

‎llvm/lib/DebugInfo/DWARF/DWARFListTable.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Error DWARFListTableHeader::extract(DWARFDataExtractor Data,
2626
SectionName.data(), *OffsetPtr);
2727
// TODO: Add support for DWARF64.
2828
HeaderData.Length = Data.getRelocatedValue(4, OffsetPtr);
29-
if (HeaderData.Length == 0xffffffffu)
29+
if (HeaderData.Length == dwarf::DW_LENGTH_DWARF64)
3030
return createStringError(errc::not_supported,
3131
"DWARF64 is not supported in %s at offset 0x%" PRIx32,
3232
SectionName.data(), HeaderOffset);

‎llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ bool DWARFUnitHeader::extract(DWARFContext &Context,
244244
Length = debug_info.getRelocatedValue(4, offset_ptr);
245245
FormParams.Format = DWARF32;
246246
unsigned SizeOfLength = 4;
247-
if (Length == 0xffffffff) {
247+
if (Length == dwarf::DW_LENGTH_DWARF64) {
248248
Length = debug_info.getU64(offset_ptr);
249249
FormParams.Format = DWARF64;
250250
SizeOfLength = 8;
@@ -784,7 +784,7 @@ parseDWARF64StringOffsetsTableHeader(DWARFDataExtractor &DA, uint32_t Offset) {
784784
if (!DA.isValidOffsetForDataOfSize(Offset, 16))
785785
return createStringError(errc::invalid_argument, "section offset exceeds section size");
786786

787-
if (DA.getU32(&Offset) != 0xffffffff)
787+
if (DA.getU32(&Offset) != dwarf::DW_LENGTH_DWARF64)
788788
return createStringError(errc::invalid_argument, "32 bit contribution referenced from a 64 bit unit");
789789

790790
uint64_t Size = DA.getU64(&Offset);
@@ -803,7 +803,7 @@ parseDWARF32StringOffsetsTableHeader(DWARFDataExtractor &DA, uint32_t Offset) {
803803
return createStringError(errc::invalid_argument, "section offset exceeds section size");
804804

805805
uint32_t ContributionSize = DA.getU32(&Offset);
806-
if (ContributionSize >= 0xfffffff0)
806+
if (ContributionSize >= dwarf::DW_LENGTH_lo_reserved)
807807
return createStringError(errc::invalid_argument, "invalid length");
808808

809809
uint8_t Version = DA.getU16(&Offset);

‎llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ bool DWARFVerifier::verifyUnitHeader(const DWARFDataExtractor DebugInfoData,
113113

114114
uint32_t OffsetStart = *Offset;
115115
Length = DebugInfoData.getU32(Offset);
116-
if (Length == UINT32_MAX) {
116+
if (Length == dwarf::DW_LENGTH_DWARF64) {
117117
Length = DebugInfoData.getU64(Offset);
118118
isUnitDWARF64 = true;
119119
}

‎llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ MCSymbol *dwarfgen::LineTable::writeDefaultPrologue(AsmPrinter &Asm) const {
262262
MCSymbol *UnitStart = Asm.createTempSymbol("line_unit_start");
263263
MCSymbol *UnitEnd = Asm.createTempSymbol("line_unit_end");
264264
if (Format == DwarfFormat::DWARF64) {
265-
Asm.emitInt32(0xffffffff);
265+
Asm.emitInt32(dwarf::DW_LENGTH_DWARF64);
266266
Asm.EmitLabelDifference(UnitEnd, UnitStart, 8);
267267
} else {
268268
Asm.EmitLabelDifference(UnitEnd, UnitStart, 4);
@@ -288,7 +288,7 @@ MCSymbol *dwarfgen::LineTable::writeDefaultPrologue(AsmPrinter &Asm) const {
288288

289289
void dwarfgen::LineTable::writePrologue(AsmPrinter &Asm) const {
290290
if (Format == DwarfFormat::DWARF64) {
291-
Asm.emitInt32(0xffffffff);
291+
Asm.emitInt32(dwarf::DW_LENGTH_DWARF64);
292292
Asm.emitInt64(Prologue->TotalLength);
293293
} else {
294294
Asm.emitInt32(Prologue->TotalLength);

0 commit comments

Comments
 (0)