diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp index be8d788..af50fcc 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp @@ -35,10 +35,8 @@ #if HAVE_LLVM >= 0x0300 #include -#include #else /* HAVE_LLVM < 0x0300 */ #include -#include #endif /* HAVE_LLVM < 0x0300 */ #if HAVE_LLVM >= 0x0209 @@ -53,6 +51,9 @@ #include #include #endif /* HAVE_LLVM >= 0x0207 */ +#if HAVE_LLVM >= 0x0301 +#include +#endif /* HAVE_LLVM >= 0x0301 */ #include "util/u_math.h" #include "util/u_debug.h" @@ -80,15 +81,19 @@ lp_check_alignment(const void *ptr, unsigned alignment) class raw_debug_ostream : public llvm::raw_ostream { +private: uint64_t pos; +public: + raw_debug_ostream() : pos(0) { } + void write_impl(const char *Ptr, size_t Size); - uint64_t current_pos() { return pos; } - uint64_t current_pos() const { return pos; } #if HAVE_LLVM >= 0x207 - uint64_t preferred_buffer_size() { return 512; } + uint64_t current_pos() const { return pos; } + size_t preferred_buffer_size() const { return 512; } #else + uint64_t current_pos() { return pos; } size_t preferred_buffer_size() { return 512; } #endif }; @@ -180,7 +185,7 @@ lp_disassemble(const void* func) /* * Limit disassembly to this extent */ - const uint64_t extent = 0x10000; + const uint64_t extent = 96 * 1024; uint64_t max_pc = 0; @@ -197,20 +202,6 @@ lp_disassemble(const void* func) std::string Error; const Target *T = TargetRegistry::lookupTarget(Triple, Error); -#if HAVE_LLVM >= 0x0208 - InitializeNativeTargetAsmPrinter(); -#elif LLVM_NATIVE_ARCH == X86Target - LLVMInitializeX86AsmPrinter(); -#elif LLVM_NATIVE_ARCH == ARMTarget - LLVMInitializeARMAsmPrinter(); -#endif - -#if (LLVM_NATIVE_ARCH == X86 || LLVM_NATIVE_ARCH == X86Target) - LLVMInitializeX86Disassembler(); -#elif (LLVM_NATIVE_ARCH == ARM || LLVM_NATIVE_ARCH == ARMTarget) - LLVMInitializeARMDisassembler(); -#endif - #if HAVE_LLVM >= 0x0300 OwningPtr AsmInfo(T->createMCAsmInfo(Triple)); #else @@ -241,7 +232,24 @@ lp_disassemble(const void* func) int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); #endif -#if HAVE_LLVM >= 0x0300 +#if HAVE_LLVM >= 0x0301 + OwningPtr MRI(T->createMCRegInfo(Triple)); + if (!MRI) { + debug_printf("error: no register info for target %s\n", Triple.c_str()); + return; + } + + OwningPtr MII(T->createMCInstrInfo()); + if (!MII) { + debug_printf("error: no instruction info for target %s\n", Triple.c_str()); + return; + } +#endif + +#if HAVE_LLVM >= 0x0301 + OwningPtr Printer( + T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *MII, *MRI, *STI)); +#elif HAVE_LLVM == 0x0300 OwningPtr Printer( T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *STI)); #elif HAVE_LLVM >= 0x0208 diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index fe7616b..c4130da 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -62,7 +62,6 @@ extern "C" void lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE) { - llvm::unwrap(EE)->RegisterJITEventListener(llvm::createOProfileJITEventListener()); }