|
@@ -48,7 +48,6 @@ void DWARFDebugLine::Prologue::clear() {
|
|
|
MinInstLength = MaxOpsPerInst = DefaultIsStmt = LineBase = LineRange = 0;
|
|
|
OpcodeBase = 0;
|
|
|
FormParams = DWARFFormParams({0, 0, DWARF32});
|
|
|
- HasMD5 = false;
|
|
|
StandardOpcodeLengths.clear();
|
|
|
IncludeDirectories.clear();
|
|
|
FileNames.clear();
|
|
@@ -79,23 +78,15 @@ void DWARFDebugLine::Prologue::dump(raw_ostream &OS) const {
|
|
|
<< IncludeDirectories[I] << "'\n";
|
|
|
|
|
|
if (!FileNames.empty()) {
|
|
|
- if (HasMD5)
|
|
|
- OS << " Dir MD5 Checksum File Name\n"
|
|
|
- << " ---- -------------------------------- -----------"
|
|
|
- "---------------\n";
|
|
|
- else
|
|
|
- OS << " Dir Mod Time File Len File Name\n"
|
|
|
- << " ---- ---------- ---------- -----------"
|
|
|
- "----------------\n";
|
|
|
+ OS << " Dir Mod Time File Len File Name\n"
|
|
|
+ << " ---- ---------- ---------- -----------"
|
|
|
+ "----------------\n";
|
|
|
for (uint32_t I = 0; I != FileNames.size(); ++I) {
|
|
|
const FileNameEntry &FileEntry = FileNames[I];
|
|
|
- OS << format("file_names[%3u] %4" PRIu64 " ", I + 1, FileEntry.DirIdx);
|
|
|
- if (HasMD5)
|
|
|
- OS << FileEntry.Checksum.digest();
|
|
|
- else
|
|
|
- OS << format("0x%8.8" PRIx64 " 0x%8.8" PRIx64, FileEntry.ModTime,
|
|
|
- FileEntry.Length);
|
|
|
- OS << ' ' << FileEntry.Name << '\n';
|
|
|
+ OS << format("file_names[%3u] %4" PRIu64 " ", I + 1, FileEntry.DirIdx)
|
|
|
+ << format("0x%8.8" PRIx64 " 0x%8.8" PRIx64 " ", FileEntry.ModTime,
|
|
|
+ FileEntry.Length)
|
|
|
+ << FileEntry.Name << '\n';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -131,7 +122,7 @@ parseV2DirFileTables(const DWARFDataExtractor &DebugLineData,
|
|
|
// ran off the end of the prologue.
|
|
|
static ContentDescriptors
|
|
|
parseV5EntryFormat(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr,
|
|
|
- uint64_t EndPrologueOffset, bool *HasMD5) {
|
|
|
+ uint64_t EndPrologueOffset) {
|
|
|
ContentDescriptors Descriptors;
|
|
|
int FormatCount = DebugLineData.getU8(OffsetPtr);
|
|
|
bool HasPath = false;
|
|
@@ -144,8 +135,6 @@ parseV5EntryFormat(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr,
|
|
|
Descriptor.Form = dwarf::Form(DebugLineData.getULEB128(OffsetPtr));
|
|
|
if (Descriptor.Type == dwarf::DW_LNCT_path)
|
|
|
HasPath = true;
|
|
|
- else if (Descriptor.Type == dwarf::DW_LNCT_MD5 && HasMD5)
|
|
|
- *HasMD5 = true;
|
|
|
Descriptors.push_back(Descriptor);
|
|
|
}
|
|
|
return HasPath ? Descriptors : ContentDescriptors();
|
|
@@ -155,11 +144,11 @@ static bool
|
|
|
parseV5DirFileTables(const DWARFDataExtractor &DebugLineData,
|
|
|
uint32_t *OffsetPtr, uint64_t EndPrologueOffset,
|
|
|
const DWARFFormParams &FormParams, const DWARFUnit *U,
|
|
|
- bool &HasMD5, std::vector<StringRef> &IncludeDirectories,
|
|
|
+ std::vector<StringRef> &IncludeDirectories,
|
|
|
std::vector<DWARFDebugLine::FileNameEntry> &FileNames) {
|
|
|
// Get the directory entry description.
|
|
|
ContentDescriptors DirDescriptors =
|
|
|
- parseV5EntryFormat(DebugLineData, OffsetPtr, EndPrologueOffset, nullptr);
|
|
|
+ parseV5EntryFormat(DebugLineData, OffsetPtr, EndPrologueOffset);
|
|
|
if (DirDescriptors.empty())
|
|
|
return false;
|
|
|
|
|
@@ -185,7 +174,7 @@ parseV5DirFileTables(const DWARFDataExtractor &DebugLineData,
|
|
|
|
|
|
// Get the file entry description.
|
|
|
ContentDescriptors FileDescriptors =
|
|
|
- parseV5EntryFormat(DebugLineData, OffsetPtr, EndPrologueOffset, &HasMD5);
|
|
|
+ parseV5EntryFormat(DebugLineData, OffsetPtr, EndPrologueOffset);
|
|
|
if (FileDescriptors.empty())
|
|
|
return false;
|
|
|
|
|
@@ -212,11 +201,7 @@ parseV5DirFileTables(const DWARFDataExtractor &DebugLineData,
|
|
|
case DW_LNCT_size:
|
|
|
FileEntry.Length = Value.getAsUnsignedConstant().getValue();
|
|
|
break;
|
|
|
- case DW_LNCT_MD5:
|
|
|
- assert(Value.getAsBlock().getValue().size() == 16);
|
|
|
- std::uninitialized_copy_n(Value.getAsBlock().getValue().begin(), 16,
|
|
|
- FileEntry.Checksum.Bytes.begin());
|
|
|
- break;
|
|
|
+ // FIXME: Add MD5
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -268,7 +253,7 @@ bool DWARFDebugLine::Prologue::parse(const DWARFDataExtractor &DebugLineData,
|
|
|
|
|
|
if (getVersion() >= 5) {
|
|
|
if (!parseV5DirFileTables(DebugLineData, OffsetPtr, EndPrologueOffset,
|
|
|
- getFormParams(), U, HasMD5, IncludeDirectories,
|
|
|
+ getFormParams(), U, IncludeDirectories,
|
|
|
FileNames)) {
|
|
|
fprintf(stderr,
|
|
|
"warning: parsing line table prologue at 0x%8.8" PRIx64
|