JonathanSalwan / Triton

Triton is a dynamic binary analysis library. Build your own program analysis tools, automate your reverse engineering, perform software verification or just emulate code.
https://triton-library.github.io
Apache License 2.0
3.4k stars 524 forks source link

Include LLVM-compiled Triton binaries in releases #1238

Closed Z4ee closed 1 year ago

Z4ee commented 1 year ago

Hello!

Thank you for your work on the Triton. I would like to suggest including LLVM-compiled Triton binaries in the releases. This would make it easier for users who want to take advantage of the features provided by LLVM to install and use Triton.

Including LLVM-compiled binaries in Triton releases could attract more users, especially those who lack experience in building projects using LLVM. It could also simplify the integration of Triton with other LLVM-based tools.

Thank you for your attention to this proposal, and I am looking forward to your response.

JonathanSalwan commented 1 year ago

Hi Z4ee,

Yeah it could be a good idea but in practice this will be hard to maintain. LLVM is a big project and hard to ship as pre-compiled. To give you an idea below the size of my compiled LLVM libraries:

$ du -h build/lib
 19G    build/lib

 $ du -h build/lib/MC
109M    build/lib/MC

$ du -h build/lib/IR
121M    build/lib/IR

Even if we extract LLVM libs that are needed by Triton, it's about hundred of mega bytes and we have to provide a pre-compiled binaries for all plateformes (Windows, Linux, MacOS) and architectures (x86, x86-64, arm64).

That's why I think the best approach is to let the user compile LLVM on its own.

mrexodia commented 1 year ago

Another option could be to switch to LLVM-C. This DLL is part of the official LLVM releases, so the user could download it. The downside is that it only works if the LLVM surface is very small, not all functions are supported.