mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
DWARF parser: since DWARF4, DW_AT_high_pc may be a constant representing function size
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193555 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c5253237f8
commit
d2d54e2b7c
@ -258,11 +258,17 @@ uint64_t DWARFDebugInfoEntryMinimal::getAttributeValueAsSectionOffset(
|
||||
bool DWARFDebugInfoEntryMinimal::getLowAndHighPC(const DWARFUnit *U,
|
||||
uint64_t &LowPC,
|
||||
uint64_t &HighPC) const {
|
||||
HighPC = -1ULL;
|
||||
LowPC = getAttributeValueAsAddress(U, DW_AT_low_pc, -1ULL);
|
||||
// FIXME: Check if HighPC is of class constant (it has different semantics).
|
||||
if (LowPC != -1ULL)
|
||||
HighPC = getAttributeValueAsAddress(U, DW_AT_high_pc, -1ULL);
|
||||
if (LowPC == -1ULL)
|
||||
return false;
|
||||
HighPC = getAttributeValueAsAddress(U, DW_AT_high_pc, -1ULL);
|
||||
if (HighPC == -1ULL) {
|
||||
// Since DWARF4, DW_AT_high_pc may also be of class constant, in which case
|
||||
// it represents function size.
|
||||
HighPC = getAttributeValueAsUnsignedConstant(U, DW_AT_high_pc, -1ULL);
|
||||
if (HighPC != -1ULL)
|
||||
HighPC += LowPC;
|
||||
}
|
||||
return (HighPC != -1ULL);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user