report: strip deduplicated extabindex/extab entries from base object#349
report: strip deduplicated extabindex/extab entries from base object#349zcanann wants to merge 1 commit intoencounter:mainfrom
Conversation
|
In fact, the FFCC MAP Evidence: Weak Symbol DeduplicationExcerpts from Final Fantasy Crystal Chronicles (GCCE01)
|
22c3be4 to
7e29b79
Compare
When --deduplicate is active, weak/global functions already seen in earlier translation units are skipped for code accounting. However, their associated extabindex and extab section entries remained in the base object, causing section layout mismatches and incorrect data match percentages. This patch physically removes extabindex entries (and their corresponding extab entries) from the base object before diffing, when the entry's function relocation targets a deduplicated symbol. Section data, relocations, sizes, and symbol addresses are all adjusted to maintain consistency.
7e29b79 to
cec63e9
Compare
|
This is the PR that sparked my investigation into this, in BFBB I can get to 99.67% data match on a fully linking. With this patch, the objdiff report shows 100% data. |
|
Similarly, here is the FFCC PR that shows how we used to get 100% data match by hacking around objdiff, but after removing the hacks, data is 99.77% matched: zcanann/FFCC-Decomp#10488 |
When --deduplicate is active, weak/global functions already seen in earlier translation units are skipped for code accounting. However, their associated extabindex and extab section entries remained in the base object, causing section layout mismatches and incorrect data match percentages.
This patch physically removes extabindex entries (and their corresponding extab entries) from the base object before diffing, when the entry's function relocation targets a deduplicated symbol. Section data, relocations, sizes, and symbol addresses are all adjusted to maintain consistency.