Open 0xdea opened 21 hours ago
Answering your second question first: I think the difference is that when we build just the idalib crate we're building a rlib
, whereas when building rhabdomancer, we're building an executable. When building just the rlib
we won't try to resolve the missing symbols, I think, but for an executable target, since the linker is invoked, and we're missing that directive, we will try to resolve all symbols, and for some reason they'll be missing from the .lib
files we have with the SDK.. I've not dug further when making idalib work with Windows so I don't know if there's something I've missed that could fix this issue more fundamentally to give the same level of experience as Linux/macOS.
On your first question: I think it makes sense to just add the directive to configure_idasdk_linkage
--it shouldn't break anything :).
Upd.: I've made the change to configure_idasdk_linkage
--if all is fine, I'll make another release with that and your search API. I've also added some documentation about the workflows, hopefully it covers everything; any feedback/improvements would be welcome :).
It makes sense now, thanks for the clarification and for implementing the fix! The documentation about the workflows was needed, and it looks good. I'll try to finalize the search API today, so that you can make another release soon. Cheers!
Hi,
Based on your recent work, I have implemented this GitHub workflow to build rhabdomancer.
However, with the original build script the workflow worked only on Windows. Therefore, I modified build.rs as you did in idalib.
After this, it worked properly on Linux and macOS, but broke on Windows with linker errors such as the following:
Eventually, I managed to make it work on all three platforms by applying this additional modification to build.rs, based on the workaround present in idalib-build.
Would it make sense to apply this workaround directly in
configure_idasdk_linkage()
instead ofconfigure_linkage()
in idalib-build? Also, how come idalib builds cleanly also on Windows without such a modification in build.rs? I'm definitely missing something here... Thanks!