Skip to content

Data % seems incorrect? #490

@emoose

Description

@emoose

TL;DR: seems there's issues with the jtbl data inside .rodata not being counted after we've matched the code for it (since cc itself won't create jtbl_* syms for the switches?), which tanks the .rodata totals in most files since objdiff won't find a jtbl_* sym to compare against, and seems to end up treating the whole .rodata as unmatched in a lot of files :/

No idea why we're affected by this when other projects seem to have reliable data % though - might be to do with the symbol visibility (jlabel/dlabel/etc?), but haven't had any luck trying to mess with that.


Tried looking into moving over data to C, looks like we do have quite a bit done already but the % tracker isn't counting it for some reason?

eg. bodyprog_800706E4.c is shown at 0% data
https://decomp.dev/Vatuu/silent-hill-decomp?category=engine&unit=bodyprog%2Fbodyprog_800706E4

Says 4.68KB of data there, .rodata of that file comes to 4348 bytes, and .bss is 328, so guess those added together is the count it uses.
But the .rodata is mostly jtbls of funcs we've matched, and a couple small vars we also matched in the .c, a lot of .bss is also matched in the .c too..

Not really sure how objdiff is deciding what data is matched or not, noticed the .rodata.s has some nonmatching D_800C4618 line above each one, seems that inserts a [var name].NON_MATCHING symbol into the .o that's built from it.

Guessing that sym gets added to the expected .o files, then compared against the .o built from our .c, if the builds .o has that symbol then it shows splat config isn't using .rodata from the .c but using the non-matched rodata.s instead - but afaik all our splat splits do pull from the .c, so can't see why they'd still be marked non-matching :/

If anyone has any ideas about it let me know, I'll try looking into it more soon too..

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions