From e134985e66571f88a574fd0a80ed2a4b991ca802 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Wed, 13 Nov 2013 23:01:12 +0100 Subject: Fix using assembler addresses for global variables Format of assembler address strings are different with newer LLVM version (They don't have a prefix anymore). This fix takes care of newer LLVM versions (>=3.3) as well. --- lib/Core/Executor.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp index b2cff8ba..6df8dd14 100644 --- a/lib/Core/Executor.cpp +++ b/lib/Core/Executor.cpp @@ -577,9 +577,17 @@ void Executor::initializeGlobals(ExecutionState &state) { uint64_t size = kmodule->targetData->getTypeStoreSize(ty); MemoryObject *mo = 0; +#if LLVM_VERSION_CODE < LLVM_VERSION(3, 3) if (UseAsmAddresses && i->getName()[0]=='\01') { +#else + if (UseAsmAddresses && !i->getName().empty()) { +#endif char *end; +#if LLVM_VERSION_CODE < LLVM_VERSION(3, 3) uint64_t address = ::strtoll(i->getName().str().c_str()+1, &end, 0); +#else + uint64_t address = ::strtoll(i->getName().str().c_str(), &end, 0); +#endif if (end && *end == '\0') { klee_message("NOTE: allocated global at asm specified address: %#08llx" -- cgit 1.4.1