mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Split address information for DWARF5 split dwarf proposal. This involves
using the DW_FORM_GNU_addr_index and a separate .debug_addr section which stays in the executable and is fully linked. Sneak in two other small changes: a) Print out the debug_str_offsets.dwo section. b) Change form we're expecting the entries in the debug_str_offsets.dwo section to take from ULEB128 to U32. Add tests for all of this in the fission-cu.ll test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172578 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -170,6 +170,26 @@ void CompileUnit::addLabel(DIE *Die, unsigned Attribute, unsigned Form,
|
||||
Die->addValue(Attribute, Form, Value);
|
||||
}
|
||||
|
||||
/// addLabelAddress - Add a dwarf label attribute data and value using
|
||||
/// DW_FORM_addr or DW_FORM_GNU_addr_index.
|
||||
///
|
||||
void CompileUnit::addLabelAddress(DIE *Die, unsigned Attribute,
|
||||
MCSymbol *Label) {
|
||||
if (!DD->useSplitDwarf()) {
|
||||
if (Label != NULL) {
|
||||
DIEValue *Value = new (DIEValueAllocator) DIELabel(Label);
|
||||
Die->addValue(Attribute, dwarf::DW_FORM_addr, Value);
|
||||
} else {
|
||||
DIEValue *Value = new (DIEValueAllocator) DIEInteger(0);
|
||||
Die->addValue(Attribute, dwarf::DW_FORM_addr, Value);
|
||||
}
|
||||
} else {
|
||||
unsigned idx = DU->getAddrPoolIndex(Label);
|
||||
DIEValue *Value = new (DIEValueAllocator) DIEInteger(idx);
|
||||
Die->addValue(Attribute, dwarf::DW_FORM_GNU_addr_index, Value);
|
||||
}
|
||||
}
|
||||
|
||||
/// addDelta - Add a label delta attribute data and value.
|
||||
///
|
||||
void CompileUnit::addDelta(DIE *Die, unsigned Attribute, unsigned Form,
|
||||
|
||||
Reference in New Issue
Block a user