diff --git a/tools/import-trace/InstructionImporter.cc b/tools/import-trace/InstructionImporter.cc index f62abbca..e5472f3e 100644 --- a/tools/import-trace/InstructionImporter.cc +++ b/tools/import-trace/InstructionImporter.cc @@ -24,9 +24,11 @@ bool InstructionImporter::handle_ip_event(fail::simtime_t curtime, instruction_c return false; } - ObjectFile *obj = dyn_cast(binary.get()); - +// necessary due to an AspectC++ bug triggered by LLVM 3.3's dyn_cast() +#ifndef __puma + ObjectFile *obj = llvm::dyn_cast(binary.get()); disas.reset(new LLVMDisassembler(obj)); +#endif disas->disassemble(); LLVMDisassembler::InstrMap &instr_map = disas->getInstrMap(); LOG << "instructions disassembled: " << instr_map.size() << " Triple: " << disas->GetTriple() << std::endl; diff --git a/tools/import-trace/RandomJumpImporter.cc b/tools/import-trace/RandomJumpImporter.cc index 38fa961f..b83f1851 100644 --- a/tools/import-trace/RandomJumpImporter.cc +++ b/tools/import-trace/RandomJumpImporter.cc @@ -70,9 +70,11 @@ bool RandomJumpImporter::handle_ip_event(fail::simtime_t curtime, instruction_co return false; } - ObjectFile *obj = dyn_cast(binary.get()); - +// necessary due to an AspectC++ bug triggered by LLVM 3.3's dyn_cast() +#ifndef __puma + ObjectFile *obj = dyn_cast(binary.get()); disas.reset(new LLVMDisassembler(obj)); +#endif disas->disassemble(); LLVMDisassembler::InstrMap &instr_map = disas->getInstrMap(); LOG << "instructions disassembled: " << instr_map.size() << " Triple: " << disas->GetTriple() << std::endl; diff --git a/tools/import-trace/RegisterImporter.cc b/tools/import-trace/RegisterImporter.cc index 36cbf509..6b44969e 100644 --- a/tools/import-trace/RegisterImporter.cc +++ b/tools/import-trace/RegisterImporter.cc @@ -108,9 +108,11 @@ bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_coun return false; } - ObjectFile *obj = dyn_cast(binary.get()); - +// necessary due to an AspectC++ bug triggered by LLVM 3.3's dyn_cast() +#ifndef __puma + ObjectFile *obj = dyn_cast(binary.get()); disas.reset(new LLVMDisassembler(obj)); +#endif disas->disassemble(); LLVMDisassembler::InstrMap &instr_map = disas->getInstrMap(); LOG << "instructions disassembled: " << instr_map.size() << " Triple: " << disas->GetTriple() << std::endl;