Closed nsajko closed 4 years ago
Note that it may be possible to get the same errors after building a "simulator" build for Epsilon, instead of cross compiling: that way it would not be necessary to install ARM's toolchain. But I have not tried yet.
Like this: make PLATFORM=simulator
.
This is likely reproducible by demangling the mangled symbols in the provided errors. This is a class cast exception. It appears something is attempting to cast a function to a Structure. Providing the application.log may prove helpful.
@astrelsky Can you tell me more about that application.log? How do I find it so I could post it here?
Sure. In linux it should be in ~/.ghidra/{ghidra version}
on windows it's in the user directory %HOMEPATH%\.ghidra\{ghidra version}
For what it is worth: "2020-02-25 12:26:22" seems to be the start of Ghidra's last run.
Many of the failing symbols contain lambda function names, such as:
{lambda(char const*, Poincare::Context*)#2}
I am working on updating the parser to handle lambdas. It is not clear if this will fix the ClassCastException
you are seeing. Unfortunately, that exception in the log does not contain a line number or stack trace. I will use the samples you have provided above to attempt to reproduce the issue.
Describe the bug Excerpt of Ghidra errors:
To Reproduce Steps to reproduce the behavior:
Install ARM's gcc-arm-none-eabi: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm
Git check out or extract archive of https://github.com/numworks/epsilon
Apply the following diff to the above, just in case:
Build the above with
make
. The result will be in ./output/release/device/n0110/epsilon.elfOpen the result with Ghidra. I used the "Cortex" Ghidra architecture, as I assume that is short for Cortex-M (the binary is cortex-m7), but I have to say, just "Cortex" is a horrible name as the user can not know what it means, it is not specific enough.
Auto-analyse. (I set all decompiler deadlines that are "60" by default to "600000").
Read errors about symbols not being successfully demangled.
Note that a lot of symbols are, in fact, demangled.
Expected behavior All symbols compiled with GCC/g++ should be demangled.
Environment (please complete the following information):