diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-03-06 05:32:48 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-03-06 05:32:48 +0000 |
commit | 666d23d4e6ea4f966b0bf614956ce6df5c78ff9e (patch) | |
tree | 12a69000b82aabeafdf40d86e9e3cef8c4f5f931 | |
parent | 4e42790c43f8d1ff94f39e96f1222d7e7e1c1f2b (diff) | |
download | bcm5719-llvm-666d23d4e6ea4f966b0bf614956ce6df5c78ff9e.tar.gz bcm5719-llvm-666d23d4e6ea4f966b0bf614956ce6df5c78ff9e.zip |
Implement PR1240
llvm-svn: 34959
-rw-r--r-- | llvm/include/llvm/System/Disassembler.h | 4 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/System/Disassembler.cpp | 10 |
3 files changed, 17 insertions, 2 deletions
diff --git a/llvm/include/llvm/System/Disassembler.h b/llvm/include/llvm/System/Disassembler.h index 37a87614990..fd08f2d42e9 100644 --- a/llvm/include/llvm/System/Disassembler.h +++ b/llvm/include/llvm/System/Disassembler.h @@ -21,6 +21,10 @@ namespace llvm { namespace sys { +/// This function returns true, if there is possible to use some external +/// disassembler library. False otherwise. +bool hasDisassembler(void); + /// This function provides some "glue" code to call external disassembler /// libraries. std::string disassembleBuffer(uint8_t* start, size_t length, uint64_t pc = 0); diff --git a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp index a52ce86d6d3..99dd0c9a4d4 100644 --- a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp +++ b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp @@ -876,8 +876,9 @@ bool JITEmitter::finishFunction(MachineFunction &F) { Relocations.clear(); #ifndef NDEBUG - DOUT << "Disassembled code:\n" - << sys::disassembleBuffer(FnStart, FnEnd-FnStart, (uintptr_t)FnStart); + if (sys::hasDisassembler()) + DOUT << "Disassembled code:\n" + << sys::disassembleBuffer(FnStart, FnEnd-FnStart, (uintptr_t)FnStart); #endif return false; diff --git a/llvm/lib/System/Disassembler.cpp b/llvm/lib/System/Disassembler.cpp index 30d3fb7fcc0..4aec698022f 100644 --- a/llvm/lib/System/Disassembler.cpp +++ b/llvm/lib/System/Disassembler.cpp @@ -26,6 +26,16 @@ using namespace llvm; +bool llvm::sys::hasDisassembler(void) +{ +#if defined (__i386__) || defined (__amd64__) || defined (__x86_64__) + // We have option to enable udis86 library. + return true; +#else + return false; +#endif +} + std::string llvm::sys::disassembleBuffer(uint8_t* start, size_t length, uint64_t pc) { std::stringstream res; |