[decompiler] handle pointer to symbol value, clean up prints on offline test (#1978)

- fix issue described in
https://github.com/open-goal/jak-project/issues/1939
- fix `text`, which was manually patched with the wrong offset (was
reading the symbol value off by one byte)
- clean up some random useless prints
- make the offline tests keep trying if there's a comparison error,
clean up the output a bit so the diffs are all at the end.
This commit is contained in:
water111
2022-10-16 18:19:59 -04:00
committed by GitHub
parent e7bb0fb68d
commit ddd60fca48
21 changed files with 291 additions and 509 deletions
@@ -143,8 +143,8 @@ static uint32_t c_symlink2(LinkedObjectFile& f,
ASSERT((code_value & 0xffff) == 0 || (code_value & 0xffff) == 0xffff);
ASSERT(kind == SymbolLinkKind::SYMBOL);
// ASSERT(false); // this case does not occur in V2/V4. It does in V3.
f.symbol_link_offset(seg_id, code_ptr_offset - initial_offset, name);
f.symbol_link_offset(seg_id, code_ptr_offset - initial_offset, name,
(code_value & 0xffff) == 0xffff);
}
} while (data.at(link_ptr_offset));
@@ -197,9 +197,11 @@ static uint32_t c_symlink3(LinkedObjectFile& f,
f.symbol_link_word(seg, code_ptr - initial_offset, name, word_kind);
} else {
u16 lower = code_value & 0xffff;
ASSERT(lower == 0 || lower == 0xffff);
f.stats.v3_symbol_link_offset++;
ASSERT(kind == SymbolLinkKind::SYMBOL);
f.symbol_link_offset(seg, code_ptr - initial_offset, name);
f.symbol_link_offset(seg, code_ptr - initial_offset, name, lower == 0xffff);
}
} while (data.at(link_ptr));