mirror of
https://github.com/encounter/decomp-toolkit.git
synced 2025-06-26 08:23:31 +00:00
dol diff: Conditionally warn on symbol size mismatch
When a symbol's data matches but the size differs due to padding bytes, print a warning and continue. Resolves #35
This commit is contained in:
parent
e55ade10ec
commit
b9642321a1
@ -1720,7 +1720,7 @@ fn diff(args: DiffArgs) -> Result<()> {
|
||||
);
|
||||
}
|
||||
found = true;
|
||||
} else if linked_sym.kind == orig_sym.kind && linked_sym.size == orig_sym.size {
|
||||
} else if linked_sym.kind == orig_sym.kind {
|
||||
// Fuzzy match
|
||||
let orig_data = orig_section.data_range(
|
||||
orig_sym.address as u32,
|
||||
@ -1730,7 +1730,12 @@ fn diff(args: DiffArgs) -> Result<()> {
|
||||
linked_sym.address as u32,
|
||||
linked_sym.address as u32 + linked_sym.size as u32,
|
||||
)?;
|
||||
if orig_data == linked_data {
|
||||
let len = orig_data.len().min(linked_data.len());
|
||||
if orig_data[..len] == linked_data[..len]
|
||||
// Ignore padding differences
|
||||
&& orig_data[len..].iter().all(|&b| b == 0)
|
||||
&& linked_data[len..].iter().all(|&b| b == 0)
|
||||
{
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
@ -1794,7 +1799,11 @@ fn diff(args: DiffArgs) -> Result<()> {
|
||||
linked_sym.address as u32,
|
||||
linked_sym.address as u32 + linked_sym.size as u32,
|
||||
)?;
|
||||
if orig_data != linked_data {
|
||||
let len = orig_data.len().min(linked_data.len());
|
||||
if orig_data[..len] != linked_data[..len]
|
||||
|| orig_data[len..].iter().any(|&b| b != 0)
|
||||
|| linked_data[len..].iter().any(|&b| b != 0)
|
||||
{
|
||||
log::error!(
|
||||
"Data mismatch for {} (type {:?}, size {:#X}) at {:#010X}",
|
||||
orig_sym.name,
|
||||
@ -1834,6 +1843,15 @@ fn diff(args: DiffArgs) -> Result<()> {
|
||||
}
|
||||
|
||||
std::process::exit(1);
|
||||
} else if orig_data.len() != linked_data.len() {
|
||||
log::error!(
|
||||
"Size mismatch for {} (type {:?}) at {:#010X}: Expected {:#X}, found {:#X}",
|
||||
orig_sym.name,
|
||||
orig_sym.kind,
|
||||
orig_sym.address,
|
||||
orig_data.len(),
|
||||
linked_data.len()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user