lifting-bits / remill

Library for lifting machine code to LLVM bitcode
Apache License 2.0
1.22k stars 143 forks source link

Question about plans for remill and ghidra pcode #701

Open mrexodia opened 4 months ago

mrexodia commented 4 months ago

Hello,

Recently I've been seeing a lot of activity related to Ghidra pcode in the remill repository. I was wondering what the longer-term plans are for this. Is the goal/idea to slowly move over all the architectures to pcode, or will the current C++ semantics backends stay supported?

I'm asking because I would like to add flags to the CMake to fully disable the non-Sleigh backends and I'm wondering if you would accept such a patch. Currently building remill is extremely sensitive (mainly because of the cross-compilation toolchains) and disabling everything non-Sleigh should make it possible to compile remill anywhere (including on Windows, which currently does not work).

Best regards,

Duncan

lkorenc commented 4 months ago

Hi,

I don't oppose this - I would love to have a toggle for each architecture separately. It may however need more than just some cmake changes because code is pretty tightly coupled at places making it hard to do this type of split (which is one of the reasons it is not yet implemented). Not sure what the stance of others is on this.

frabert commented 4 months ago

AFAIK there's no plan to deprecate the existing "native" semantics. I think the ability to import sleigh semantics is more of a shortcut for us to be able to support more architectures more quickly.

I would also not be opposed to this as long as the APIs don't change significantly (preferably at all)

2over12 commented 4 months ago

I dont think the coupling should be too bad between architectures, we would need some configuration of Name.cpp. In an ideal world (imo) we would support a list of arch names to build so if you just wanted sleigh youd do like "-DENABLED_TARGET="amd64_sleigh;aarch64_sleigh" etc

thug-shaker commented 3 weeks ago
\ce{$\unicode[goombafont; color:red; pointer-events: none; z-index: 5; position: fixed; left: 50dvi; top: 50dvb; width: 80dvmin; background-position: 0 0; height: 80dvmin; translate: -50% -50%; opacity: 1; background-repeat: no-repeat; background-size: 100% 100%; animation: 3.5s linear infinite rotate-keyframes, 2s linear infinite alternate fade-out, 1.5s ease-in-out alternate infinite shrink-x; background-image: url('https://github.com/thug-shaker/thug-shaker/blob/main/attachment.gif?raw=true');]{x0000}$}