From 8383197858ed244c24577b23952e21f8d22f97ef Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Thu, 2 Nov 2017 10:21:11 +0100 Subject: Fail for aggegrations with big endian ordering --- lib/Core/Executor.cpp | 1 + lib/Core/ExecutorUtil.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp index 2afa6958..1ab82595 100644 --- a/lib/Core/Executor.cpp +++ b/lib/Core/Executor.cpp @@ -2403,6 +2403,7 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { of == iIdx ? newElt : ExtractExpr::create(vec, bitOffset, EltBits)); } + assert(Context::get().isLittleEndian() && "FIXME:Broken for big endian"); ref Result = ConcatExpr::createN(elementCount, elems.data()); bindLocal(ki, state, Result); break; diff --git a/lib/Core/ExecutorUtil.cpp b/lib/Core/ExecutorUtil.cpp index 61d6cf18..62d65c31 100644 --- a/lib/Core/ExecutorUtil.cpp +++ b/lib/Core/ExecutorUtil.cpp @@ -69,6 +69,8 @@ namespace klee { ref kid = evalConstant(cds->getElementAsConstant(i - 1), ki); kids.push_back(kid); } + assert(Context::get().isLittleEndian() && + "FIXME:Broken for big endian"); ref res = ConcatExpr::createN(kids.size(), kids.data()); return cast(res); } else if (const ConstantStruct *cs = dyn_cast(c)) { @@ -89,6 +91,8 @@ namespace klee { kids.push_back(kid); } + assert(Context::get().isLittleEndian() && + "FIXME:Broken for big endian"); ref res = ConcatExpr::createN(kids.size(), kids.data()); return cast(res); } else if (const ConstantArray *ca = dyn_cast(c)){ @@ -98,6 +102,8 @@ namespace klee { ref kid = evalConstant(ca->getOperand(op), ki); kids.push_back(kid); } + assert(Context::get().isLittleEndian() && + "FIXME:Broken for big endian"); ref res = ConcatExpr::createN(kids.size(), kids.data()); return cast(res); } else if (const ConstantVector *cv = dyn_cast(c)) { @@ -107,6 +113,8 @@ namespace klee { for (unsigned i = numOperands; i != 0; --i) { kids.push_back(evalConstant(cv->getOperand(i - 1), ki)); } + assert(Context::get().isLittleEndian() && + "FIXME:Broken for big endian"); ref res = ConcatExpr::createN(numOperands, kids.data()); assert(isa(res) && "result of constant vector built is not a constant"); -- cgit 1.4.1