Comments (13)
In case you don't know what a symbol_addrs.txt
file is, it is a file where you can list the symbols from your ROM, give them a name different than the autogenerated ones, add additional properties, etc. All this information will be used when generating the disassembly.
As an example of manually mangling the function from your error:
_GLOBAL_$F$func_8001D584__Fv = 0x8001D584;
And the disassembler will use that name to disassemble the function
from splat.
Yeah, that's how C++ works, not an splat issue
If you don't want the name to be mangled then you would need to use extern "C"
from splat.
Yeah, that's how C++ works, not an splat issue
If you don't want the name to be mangled then you would need to use
extern "C"
That's what I'm doing currently. But eventually, we will have to use C++ classes.
from splat.
Ignoring the splat aspect of this for a sec, how is it supposed to look? Clearly you wouldn't be putting mangled names into source code, so something is missing
from splat.
Then use them 🤷♂️
This is likely to produce a domino effect in which most of your files will become C++ instead of C.
To get the C++ functions to see the undecomped asm functions you would probably need to mangle the asm functions yourself
from splat.
So the issue is that our generated function name for the s files would need to be mangled? I think that's not an unreasonable thing for us to do (include the mangled name with a comment for the actual func name). The problem is having a symbol mangler that matches your exact compiler, which could be tricky. It's also a lot of stuff for splat to worry about (all possible compilers' symbol mangling algorithm)
from splat.
symbol mangling depends on the signature of the function, so we would need to know ahead of time what types the function take and what it returns, which we can't figure out with just the assembly.
The only solution I can think of is the user doing it manually with a symbol_addrs file, which sounds tedious
from splat.
The only solution I can think of is the user doing it manually with a symbol_addrs file, which sounds tedious
Perhaps a mangled_names
file?
from splat.
Ah yeah, that's a good point. I guess on some platforms, the mangled names are visible because you have an elf or something. But yeah... Definitely seems like a much later thing for us to work on if at all
from splat.
The only solution I can think of is the user doing it manually with a symbol_addrs file, which sounds tedious
Perhaps a
mangled_names
file?
How would a mangled_names
file would work and look like?
from splat.
How would a
mangled_names
file would work and look like?
Nevermind, lol. Yeah, doing it on the symbol_addrs
file sounds fine.
from splat.
Is there anything for us to do here, or can we close this as 'wont/cant fix' ?
from splat.
Closing as wont/cant fix.
from splat.
Related Issues (20)
- ld_symbols.h is not ordered / created in a deterministic manner
- Docs don't even mention many segment types
- Handle merging (sub)segment lists in yaml merging
- Linker script references palette file, but Ci4/Palette segments don't generate one HOT 4
- Add support to split data/bss symbols to their own file to be included
- Add a pad segment HOT 3
- create_config.py needs improving for PSX
- Librarify
- splat should be lazier in its segment loading
- Doesn't create a config yml for ps2 title HOT 5
- Make linker entries less janky for .data (e.g. images) HOT 2
- Support for `.lit4` section on PS2 HOT 1
- Raise error if segment order doesn't match section_order
- EEGCC output's bad asm / asm alignment. HOT 5
- Splat generates negative BSS segment start address HOT 4
- C++ Unable to declare functions in Header HOT 4
- Error defining multiple symbols with the same name in different files HOT 4
- Error creating config to baserom HOT 2
- Option for generating linker script that forces matching object section addresses? HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from splat.