mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-01 02:33:44 +00:00
Teach DIEInteger to emit FORM_strp and FORM_ref_addr attributes.
To be used/tested by llvm-dsymutil. (llvm-dsymutil does a 'static' link, no need for relocations for most things, so it'll just emit raw integers for most attributes) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231298 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c7e4df3846
commit
13d5de32ac
@ -218,6 +218,7 @@ void DIEInteger::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
case dwarf::DW_FORM_ref2: // Fall thru
|
||||
case dwarf::DW_FORM_data2: Size = 2; break;
|
||||
case dwarf::DW_FORM_sec_offset: // Fall thru
|
||||
case dwarf::DW_FORM_strp: // Fall thru
|
||||
case dwarf::DW_FORM_ref4: // Fall thru
|
||||
case dwarf::DW_FORM_data4: Size = 4; break;
|
||||
case dwarf::DW_FORM_ref8: // Fall thru
|
||||
@ -229,6 +230,9 @@ void DIEInteger::EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const {
|
||||
case dwarf::DW_FORM_sdata: Asm->EmitSLEB128(Integer); return;
|
||||
case dwarf::DW_FORM_addr:
|
||||
Size = Asm->getDataLayout().getPointerSize(); break;
|
||||
case dwarf::DW_FORM_ref_addr:
|
||||
Size = SizeOf(Asm, dwarf::DW_FORM_ref_addr);
|
||||
break;
|
||||
default: llvm_unreachable("DIE Value form not supported yet");
|
||||
}
|
||||
Asm->OutStreamer.EmitIntValue(Integer, Size);
|
||||
@ -245,6 +249,7 @@ unsigned DIEInteger::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
case dwarf::DW_FORM_ref2: // Fall thru
|
||||
case dwarf::DW_FORM_data2: return sizeof(int16_t);
|
||||
case dwarf::DW_FORM_sec_offset: // Fall thru
|
||||
case dwarf::DW_FORM_strp: // Fall thru
|
||||
case dwarf::DW_FORM_ref4: // Fall thru
|
||||
case dwarf::DW_FORM_data4: return sizeof(int32_t);
|
||||
case dwarf::DW_FORM_ref8: // Fall thru
|
||||
@ -255,6 +260,11 @@ unsigned DIEInteger::SizeOf(const AsmPrinter *AP, dwarf::Form Form) const {
|
||||
case dwarf::DW_FORM_udata: return getULEB128Size(Integer);
|
||||
case dwarf::DW_FORM_sdata: return getSLEB128Size(Integer);
|
||||
case dwarf::DW_FORM_addr: return AP->getDataLayout().getPointerSize();
|
||||
case dwarf::DW_FORM_ref_addr:
|
||||
if (AP->OutStreamer.getContext().getDwarfVersion() == 2)
|
||||
return AP->getDataLayout().getPointerSize();
|
||||
return sizeof(int32_t);
|
||||
break;
|
||||
default: llvm_unreachable("DIE Value form not supported yet");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user