int get_datasize()
{
switch (form) {
case DwarfForm.ref1:
case DwarfForm.data1:
case DwarfForm.flag:
return 1;
case DwarfForm.ref2:
case DwarfForm.data2:
return 2;
case DwarfForm.ref4:
case DwarfForm.data4:
return 4;
case DwarfForm.ref8:
case DwarfForm.data8:
return 8;
case DwarfForm.addr:
case DwarfForm.ref_addr:
return dwarf.AddressSize;
case DwarfForm.block1:
return dwarf.DebugInfoReader.PeekByte (offset) + 1;
case DwarfForm.block2:
return dwarf.DebugInfoReader.PeekInt16 (offset) + 2;
case DwarfForm.block4:
return dwarf.DebugInfoReader.PeekInt32 (offset) + 4;
case DwarfForm.block:
case DwarfForm.ref_udata: {
int size, size2;
size2 = dwarf.DebugInfoReader.PeekLeb128 (offset, out size);
return size + size2;
}
case DwarfForm.udata:
case DwarfForm.sdata: {
int size;
dwarf.DebugInfoReader.PeekLeb128 (offset, out size);
return size;
}
case DwarfForm.strp:
return dwarf.Is64Bit ? 8 : 4;
case DwarfForm.cstring: {
string str = dwarf.DebugInfoReader.PeekString (offset);
return str.Length + 1;
}
default:
throw new DwarfException (
dwarf.bfd, "Unknown DW_FORM: 0x{0:x}",
(int) form);
}
}