-
Notifications
You must be signed in to change notification settings - Fork 207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Call graph nodes not sorted" #84
Comments
Hey there, The actual check happens in BinExport2Builder.java:279. The TL;DR is that BinExport should skip every "non-loaded" function. Are you able to share a file/project where this happens? To get you unstuck, you could hack the |
Hey, Seems like the issue I am having is then is that the functions are loaded and thus are still being included, which is kind of annoying... I managed to get over this issue by adding another extremely hacky check based on the function names content for a specific string. if (func.getName().contains("")) {
continue;
} Unfortunately, it brings me straight into another error.
Correct me if I am wrong but this error is saying, "I have a flow graph for this address! But there is no associated call graph" is that correct? If that is the case, I would expect I can just implement another hacky check based on the address when looping the functions in I'll see if I can share the binaries. Thanks for your prompt response! |
I've done some more digging on this and it looks like the issue is being caused by a jumptable. Opening the binary in Ghidra and jumping to that address reveals the following.
My thought is that when BinExport iterates over all the instructions for building blocks, it is picking up these instructions and then building a block for them but isn't able to build an associated flow graph and call graph? What is weird however is the address in question does not show up in the function Address checkAddr = func.getEntryPoint();
String check = String.valueOf(checkAddr);
Msg.info(this, String.format("[Flow Graph] %s built!", check));
String check = String.valueOf(address);
Msg.info(this, String.format("[Instriction] %s built!", check));
Appreciate it is hard to help without the binaries but these are private so I'm trying to avoid getting to the point of needing to share them. Any guidance you can provide here would be much appreciated. |
I think the culprit lies with
and Ghidra creating functions. You could just undefine the code in the function and see if that helps with the export. Ultimately, BinExport should detect this issue and skip all of these new functions. But I have actually no idea how to get to this info from Ghidra's API. |
Hey,
I am using BinExport with Ghidra 10.0.4 and am having an issue with getting the export files to work with BinDiff due to the following error:
I note your commit on May 14th but there still seems to be an issue with the behaviour here. For reference, I've also replicated the same issue with previous versions of Ghidra.
Any idea what the issue might be? I do indeed have functions renamed in the way your commit mentions. But BinExport doesn't seem to be skipping them as I thought it now should.
Thanks!
The text was updated successfully, but these errors were encountered: