Mask top 5 bits of PC for symbols
This commit is contained in:
@@ -174,13 +174,13 @@ fn extract_isx_symbols(input: &[u8]) -> Option<Vec<Symbol>> {
|
||||
let name_str = String::from_utf8_lossy(name_bytes);
|
||||
let address = u32::from_le_bytes(*address_bytes);
|
||||
syms.push(Symbol {
|
||||
address,
|
||||
address: address & 0x07ffffff,
|
||||
size: Some(4),
|
||||
name: demangle_any(&name_str),
|
||||
});
|
||||
}
|
||||
}
|
||||
0x20 | 0x21 | 0x22 => {
|
||||
0x20..=0x22 => {
|
||||
// System (undocumented)
|
||||
let length_bytes;
|
||||
(length_bytes, buf) = buf.split_first_chunk()?;
|
||||
@@ -253,8 +253,8 @@ fn parse_inline(ctx: &mut ParseContext, node: gimli::EntriesTreeNode<Reader>) ->
|
||||
let name = Arc::new(name);
|
||||
let mut ranges = ctx.dorf.die_ranges(ctx.unit, node.entry())?;
|
||||
while let Some(range) = ranges.next()? {
|
||||
let start = range.begin as u32;
|
||||
let end = range.end as u32;
|
||||
let start = range.begin as u32 & 0x07ffffff;
|
||||
let end = range.end as u32 & 0x07ffffff;
|
||||
ctx.frames.add(start, end, name.clone());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user