Move the sysroot attribute from DIModule to DICompileUnit
[this re-applies c0176916a4
with the correct commit message and phabricator link]
This addresses point 1 of PR44213.
https://bugs.llvm.org/show_bug.cgi?id=44213
The DW_AT_LLVM_sysroot attribute is used for Clang module debug info,
to allow LLDB to import a Clang module from source. Currently it is
part of each DW_TAG_module, however, it is the same for all modules in
a compile unit. It is more efficient and less ambiguous to store it
once in the DW_TAG_compile_unit.
This should have no effect on DWARF consumers other than LLDB.
Differential Revision: https://reviews.llvm.org/D71732
This commit is contained in:
@@ -1418,15 +1418,14 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
|
||||
}
|
||||
|
||||
case bitc::METADATA_MODULE: {
|
||||
if (Record.size() != 6)
|
||||
if (Record.size() < 5 || Record.size() > 6)
|
||||
return error("Invalid record");
|
||||
|
||||
IsDistinct = Record[0];
|
||||
MetadataList.assignValue(
|
||||
GET_OR_DISTINCT(DIModule,
|
||||
(Context, getMDOrNull(Record[1]),
|
||||
getMDString(Record[2]), getMDString(Record[3]),
|
||||
getMDString(Record[4]), getMDString(Record[5]))),
|
||||
GET_OR_DISTINCT(
|
||||
DIModule, (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
|
||||
getMDString(Record[3]), getMDString(Record[4]))),
|
||||
NextMetadataNo);
|
||||
NextMetadataNo++;
|
||||
break;
|
||||
@@ -1457,7 +1456,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
|
||||
break;
|
||||
}
|
||||
case bitc::METADATA_COMPILE_UNIT: {
|
||||
if (Record.size() < 14 || Record.size() > 19)
|
||||
if (Record.size() < 14 || Record.size() > 21)
|
||||
return error("Invalid record");
|
||||
|
||||
// Ignore Record[0], which indicates whether this compile unit is
|
||||
@@ -1473,7 +1472,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
|
||||
Record.size() <= 16 ? true : Record[16],
|
||||
Record.size() <= 17 ? false : Record[17],
|
||||
Record.size() <= 18 ? 0 : Record[18],
|
||||
Record.size() <= 19 ? 0 : Record[19]);
|
||||
false, // FIXME: https://reviews.llvm.org/rGc51b45e32ef7f35c11891f60871aa9c2c04cd991
|
||||
// Record.size() <= 19 ? 0 : Record[19],
|
||||
Record.size() <= 20 ? nullptr : getMDString(Record[20]));
|
||||
|
||||
MetadataList.assignValue(CU, NextMetadataNo);
|
||||
NextMetadataNo++;
|
||||
|
||||
Reference in New Issue
Block a user