util: integrate LLVM-based Disassembler
The LLVM Disassembler infrastructure can be used to analyze many kinds of ELF Binaries. For every instruction the used and defined registers is available as well as information about the instruction itself. Change-Id: I9cc89b6c116ceff7b5143a6f179ae31c4e994d2d
This commit is contained in:
34
cmake/FindLLVM.cmake
Normal file
34
cmake/FindLLVM.cmake
Normal file
@ -0,0 +1,34 @@
|
||||
find_program(LLVMCONFIG NAMES llvm-config llvm-config-3.1)
|
||||
|
||||
if( NOT LLVMCONFIG )
|
||||
message(FATAL_ERROR "llvm-config not found, try installing llvm-dev llvm")
|
||||
else()
|
||||
message(STATUS "[Fail*] LLVM Disassembler: Found llvm-config @ ${LLVMCONFIG}")
|
||||
endif()
|
||||
|
||||
# examine LLVM include directory
|
||||
execute_process( COMMAND ${LLVMCONFIG} --includedir
|
||||
OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
include_directories( ${LLVM_INCLUDE_DIRS} )
|
||||
|
||||
# Library path
|
||||
execute_process( COMMAND ${LLVMCONFIG} --libdir
|
||||
OUTPUT_VARIABLE LLVM_LIBRARY_DIRS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
link_directories( ${LLVM_LIBRARY_DIRS} )
|
||||
|
||||
# necessary CPP flags.
|
||||
execute_process( COMMAND ${LLVMCONFIG} --cxxflags
|
||||
OUTPUT_VARIABLE LLVM_CXX_FLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
|
||||
# and additional libs (this is -ldl and -lpthread in llvm 3.1)
|
||||
execute_process( COMMAND ${LLVMCONFIG} --ldflags
|
||||
OUTPUT_VARIABLE LLVM_LDFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
|
||||
## FIXME? Here we add *all* libraries to the link step (although we need only a handful..)
|
||||
execute_process( COMMAND ${LLVMCONFIG} --libs all
|
||||
OUTPUT_VARIABLE LLVM_LIBS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
Reference in New Issue
Block a user