summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Arthaud2016-06-27 12:10:52 -0700
committerMaxime Arthaud2016-06-27 12:10:52 -0700
commitccb03a5ffe680c8408bd5b681c16b594507cbf46 (patch)
tree8b90693e8d8ff079142f50fe2731b38b5b89779a
parent64c7698253754e89f2f12eb154200483888d4c91 (diff)
downloadaur-ccb03a5ffe680c8408bd5b681c16b594507cbf46.tar.gz
Upgrade to IKOS 1.1.0
-rw-r--r--.SRCINFO8
-rw-r--r--PKGBUILD21
-rw-r--r--llvm-3.8.patch183
3 files changed, 11 insertions, 201 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ff7319c003ca..2b2423eb77d5 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = ikos
pkgdesc = A static analysis tool for C/C++ developed by NASA
- pkgver = 1.0.0
+ pkgver = 1.1.0
pkgrel = 1
url = https://ti.arc.nasa.gov/opensource/ikos/
arch = any
@@ -14,12 +14,10 @@ pkgbase = ikos
depends = llvm
depends = llvm-libs
depends = clang
- source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.0.0.tar.gz
+ source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.1.0.tar.gz
source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf
- source = llvm-3.8.patch
- sha512sums = d8b71d401d002ee22d39b4c68ecd97ba098d334fa966cf6b0d4f3328bdd85fa60b68d3c66543f154933dbb4dd53247422243cdb12418338d85a6ef8bb35b9051
+ sha512sums = aee0e0851c6d7a05b1c9f12efd3dba71aafc889c93fcfe958970b88dc2b134ed193f06010501ff0d40f9e5834eb0866b89f17c2a9b3b144c96213f733273dc66
sha512sums = 3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7
- sha512sums = 2b0862679081be24772d2172fc1145833edf124f4ec54839925022428bb7db91e28e30be9fe8ccd0884f60526188db5ce1e621748e68b7e69e7423856a527596
pkgname = ikos
diff --git a/PKGBUILD b/PKGBUILD
index 9f6d8c8a793b..36fb78dba085 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: Maxime Arthaud <maxime@arthaud.me>
pkgname=ikos
-pkgver=1.0.0
+pkgver=1.1.0
pkgrel=1
pkgdesc='A static analysis tool for C/C++ developed by NASA'
arch=('any')
@@ -9,24 +9,19 @@ url='https://ti.arc.nasa.gov/opensource/ikos/'
license=('custom:NOSA 1.3')
depends=('gmp' 'boost-libs' 'python' 'sqlite' 'llvm' 'llvm-libs' 'clang')
makedepends=('cmake' 'boost')
-source=('https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.0.0.tar.gz'
- 'https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf'
- 'llvm-3.8.patch')
-sha512sums=('d8b71d401d002ee22d39b4c68ecd97ba098d334fa966cf6b0d4f3328bdd85fa60b68d3c66543f154933dbb4dd53247422243cdb12418338d85a6ef8bb35b9051'
- '3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7'
- '2b0862679081be24772d2172fc1145833edf124f4ec54839925022428bb7db91e28e30be9fe8ccd0884f60526188db5ce1e621748e68b7e69e7423856a527596')
+source=('https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.1.0.tar.gz'
+ 'https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf')
+sha512sums=('aee0e0851c6d7a05b1c9f12efd3dba71aafc889c93fcfe958970b88dc2b134ed193f06010501ff0d40f9e5834eb0866b89f17c2a9b3b144c96213f733273dc66'
+ '3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7')
prepare() {
- cd "$srcdir/ikos-1.0.0"
-
- # Fix for llvm 3.8
- patch -p0 < ../llvm-3.8.patch
+ cd "$srcdir/ikos-1.1.0"
mkdir build
}
build() {
- cd "$srcdir/ikos-1.0.0/build"
+ cd "$srcdir/ikos-1.1.0/build"
cmake \
-G "Unix Makefiles" \
@@ -38,7 +33,7 @@ build() {
}
package() {
- cd "$srcdir/ikos-1.0.0/build"
+ cd "$srcdir/ikos-1.1.0/build"
make install
diff --git a/llvm-3.8.patch b/llvm-3.8.patch
deleted file mode 100644
index 43a05941a237..000000000000
--- a/llvm-3.8.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-Index: frontends/llvm/CMakeLists.txt
-===================================================================
---- frontends/llvm/CMakeLists.txt (révision 1079)
-+++ frontends/llvm/CMakeLists.txt (copie de travail)
-@@ -123,8 +123,8 @@
- find_package(LLVM REQUIRED)
- message(STATUS "Found LLVM ${LLVM_VERSION}")
-
--if (NOT LLVM_VERSION EQUAL 3.7)
-- message(FATAL_ERROR "llvm 3.7 required.")
-+if (LLVM_VERSION VERSION_LESS "3.7")
-+ message(FATAL_ERROR "llvm 3.7 or higher required.")
- endif()
-
- set(LLVM_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin")
-@@ -191,7 +191,6 @@
- core
- instcombine
- instrumentation
-- ipa
- ipo
- irreader
- mc
-@@ -204,4 +203,10 @@
- )
- target_link_libraries(ikos-pp ${IKOS_PP_LLVM_LIBS})
-
-+if (LLVM_VERSION VERSION_LESS "3.8")
-+ # IPA is only available on llvm 3.7 and below
-+ llvm_map_components_to_libnames(IKOS_PP_IPA ipa)
-+ target_link_libraries(ikos-pp ${IKOS_PP_IPA})
-+endif()
-+
- install(TARGETS ikos-pp RUNTIME DESTINATION bin OPTIONAL)
-Index: frontends/llvm/src/ikos-pp/ikos_pp.cpp
-===================================================================
---- frontends/llvm/src/ikos-pp/ikos_pp.cpp (révision 1079)
-+++ frontends/llvm/src/ikos-pp/ikos_pp.cpp (copie de travail)
-@@ -182,10 +182,13 @@
-
- llvm::legacy::PassManager pass_manager;
- llvm::PassRegistry& Registry = *llvm::PassRegistry::getPassRegistry();
-+
- llvm::initializeAnalysis(Registry);
-
-+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7)
- /// call graph and other IPA passes
- llvm::initializeIPA(Registry);
-+#endif
-
- if (PPLevel == simple) {
- // -- SSA
-@@ -251,7 +254,11 @@
- // loop-closed SSA
- pass_manager.add(llvm::createLCSSAPass());
- // trivial invariants outside loops
-+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7)
- pass_manager.add(llvm::createBasicAliasAnalysisPass());
-+#else
-+ pass_manager.add(llvm::createBasicAAWrapperPass());
-+#endif
- pass_manager.add(llvm::createLICMPass()); // LICM needs alias analysis
- pass_manager.add(llvm::createPromoteMemoryToRegisterPass());
- // dead loop elimination
-Index: frontends/llvm/src/passes/llvm_to_ar.cpp
-===================================================================
---- frontends/llvm/src/passes/llvm_to_ar.cpp (révision 1079)
-+++ frontends/llvm/src/passes/llvm_to_ar.cpp (copie de travail)
-@@ -457,7 +457,7 @@
- UnifyFunctionExitNodes& ufen = getAnalysis< UnifyFunctionExitNodes >(*f);
-
- _functions.push_back(boost::shared_ptr< ARFunction >(
-- new ARFunction(f,
-+ new ARFunction(&*f,
- ufen.getReturnBlock(),
- ufen.getUnreachableBlock(),
- ufen.getUnwindBlock())));
-@@ -532,7 +532,7 @@
- for (Module::global_iterator global = m.global_begin();
- global != m.global_end();
- global++) {
-- _global_vars[global] = boost::shared_ptr< ARGlobalVar >(
-+ _global_vars[&*global] = boost::shared_ptr< ARGlobalVar >(
- new ARGlobalVar(UIDGenerator::nextUID()));
- }
-
-@@ -1286,7 +1286,8 @@
- case Instruction::FCmp:
- case Instruction::ICmp: {
- CmpInst* cmp = CmpInst::Create((Instruction::OtherOps)e->getOpcode(),
-- e->getPredicate(),
-+ static_cast< CmpInst::Predicate >(
-+ e->getPredicate()),
- e->getOperand(0),
- e->getOperand(1));
- cfg.split_blocks(cmp, cmp);
-Index: frontends/llvm/src/passes/lower_cst_expr.cpp
-===================================================================
---- frontends/llvm/src/passes/lower_cst_expr.cpp (révision 1079)
-+++ frontends/llvm/src/passes/lower_cst_expr.cpp (copie de travail)
-@@ -180,7 +180,8 @@
- Instruction::OtherOps OtherOp =
- (Instruction::OtherOps)(CstExp->getOpcode());
- NewInst = CmpInst::Create(OtherOp,
-- CstExp->getPredicate(),
-+ static_cast< CmpInst::Predicate >(
-+ CstExp->getPredicate()),
- CstExp->getOperand(0),
- CstExp->getOperand(1),
- CstExp->getName(),
-Index: frontends/llvm/src/passes/mark_no_return_functions.cpp
-===================================================================
---- frontends/llvm/src/passes/mark_no_return_functions.cpp (révision 1079)
-+++ frontends/llvm/src/passes/mark_no_return_functions.cpp (copie de travail)
-@@ -73,7 +73,7 @@
- continue;
-
- bool mayHaveSideEffects = false;
-- for (inst_iterator It = inst_begin(F), Et = inst_end(F); It != Et; ++It)
-+ for (inst_iterator It = inst_begin(&*F), Et = inst_end(&*F); It != Et; ++It)
- mayHaveSideEffects |= It->mayHaveSideEffects();
-
- if (mayHaveSideEffects)
-Index: frontends/llvm/src/utils/local.cpp
-===================================================================
---- frontends/llvm/src/utils/local.cpp (révision 1079)
-+++ frontends/llvm/src/utils/local.cpp (copie de travail)
-@@ -37,7 +37,13 @@
- new UnreachableInst(I->getContext(), I);
-
- // All instructions after this are dead.
-- BasicBlock::iterator BBI = I, BBE = BB->end();
-+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7)
-+ BasicBlock::iterator BBI = I;
-+#else
-+ BasicBlock::iterator BBI = I->getIterator();
-+#endif
-+ BasicBlock::iterator BBE = BB->end();
-+
- while (BBI != BBE) {
- if (!BBI->use_empty())
- BBI->replaceAllUsesWith(UndefValue::get(BBI->getType()));
-@@ -85,7 +91,7 @@
- ++BBI;
- if (!isa< UnreachableInst >(BBI)) {
- // Don't insert a call to llvm.trap right before the unreachable.
-- ikos_pp::changeToUnreachable(BBI, false);
-+ ikos_pp::changeToUnreachable(&*BBI, false);
- Changed = true;
- }
- break;
-@@ -142,7 +148,7 @@
- /// change was made, false otherwise.
- bool ikos_pp::removeUnreachableBlocks(Function& F) {
- SmallPtrSet< BasicBlock*, 128 > Reachable;
-- bool Changed = markAliveBlocks(F.begin(), Reachable);
-+ bool Changed = markAliveBlocks(&*F.begin(), Reachable);
-
- // If there are unreachable blocks in the CFG...
- if (Reachable.size() == F.size())
-@@ -154,17 +160,18 @@
- // Loop over all of the basic blocks that are not reachable, dropping all of
- // their internal references...
- for (Function::iterator BB = ++F.begin(), E = F.end(); BB != E; ++BB) {
-- if (Reachable.count(BB))
-+ if (Reachable.count(&*BB))
- continue;
-
-- for (succ_iterator SI = succ_begin(BB), SE = succ_end(BB); SI != SE; ++SI)
-+ for (succ_iterator SI = succ_begin(&*BB), SE = succ_end(&*BB); SI != SE;
-+ ++SI)
- if (Reachable.count(*SI))
-- (*SI)->removePredecessor(BB);
-+ (*SI)->removePredecessor(&*BB);
- BB->dropAllReferences();
- }
-
- for (Function::iterator I = ++F.begin(); I != F.end();)
-- if (!Reachable.count(I))
-+ if (!Reachable.count(&*I))
- I = F.getBasicBlockList().erase(I);
- else
- ++I;