forked from OSchip/llvm-project
[DebugInfo] Use a common method to determine a suitable form for section offsts (6/19).
This is mostly an NFC patch because the involved methods are used when emitting DWO files, which is incompatible with DWARFv3, or for platforms where DWARF64 is not supported yet. Differential Revision: https://reviews.llvm.org/D87015
This commit is contained in:
parent
5dd1c59188
commit
cae7c1eb78
|
@ -550,6 +550,8 @@ unsigned DIEDelta::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
|||
switch (Form) {
|
||||
case dwarf::DW_FORM_data4:
|
||||
return 4;
|
||||
case dwarf::DW_FORM_data8:
|
||||
return 8;
|
||||
case dwarf::DW_FORM_sec_offset:
|
||||
return AP->getDwarfOffsetByteSize();
|
||||
default:
|
||||
|
|
|
@ -300,10 +300,7 @@ void DwarfUnit::addLabel(DIELoc &Die, dwarf::Form Form, const MCSymbol *Label) {
|
|||
|
||||
void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute,
|
||||
uint64_t Integer) {
|
||||
if (DD->getDwarfVersion() >= 4)
|
||||
addUInt(Die, Attribute, dwarf::DW_FORM_sec_offset, Integer);
|
||||
else
|
||||
addUInt(Die, Attribute, dwarf::DW_FORM_data4, Integer);
|
||||
addUInt(Die, Attribute, DD->getDwarfSectionOffsetForm(), Integer);
|
||||
}
|
||||
|
||||
unsigned DwarfTypeUnit::getOrCreateSourceID(const DIFile *File) {
|
||||
|
@ -1750,8 +1747,7 @@ DIE::value_iterator
|
|||
DwarfUnit::addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
|
||||
const MCSymbol *Hi, const MCSymbol *Lo) {
|
||||
return Die.addValue(DIEValueAllocator, Attribute,
|
||||
DD->getDwarfVersion() >= 4 ? dwarf::DW_FORM_sec_offset
|
||||
: dwarf::DW_FORM_data4,
|
||||
DD->getDwarfSectionOffsetForm(),
|
||||
new (DIEValueAllocator) DIEDelta(Hi, Lo));
|
||||
}
|
||||
|
||||
|
|
|
@ -162,8 +162,10 @@ INSTANTIATE_TEST_CASE_P(
|
|||
DIETestParams, DIEDeltaFixture,
|
||||
testing::Values(
|
||||
DIETestParams{4, dwarf::DWARF32, dwarf::DW_FORM_data4, 4u},
|
||||
DIETestParams{4, dwarf::DWARF32, dwarf::DW_FORM_data8, 8u},
|
||||
DIETestParams{4, dwarf::DWARF32, dwarf::DW_FORM_sec_offset, 4u},
|
||||
DIETestParams{4, dwarf::DWARF64, dwarf::DW_FORM_data4, 4u},
|
||||
DIETestParams{4, dwarf::DWARF64, dwarf::DW_FORM_data8, 8u},
|
||||
DIETestParams{4, dwarf::DWARF64, dwarf::DW_FORM_sec_offset, 8u}), );
|
||||
|
||||
struct DIELocListFixture : public DIEFixtureBase {
|
||||
|
|
Loading…
Reference in New Issue