Dockerfile 0 → 100644
FROM ubuntu:12.04
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
git \
vim \
automake \
build-essential \
libtool \
cmake \
python \
sudo \
wget \
xdot \
gcc \
cabal-install \
locate \
c2hs
RUN useradd -ms /bin/bash slice
USER slice
ADD setup.sh /home/slice/setup.sh
ADD README.md /home/slice/README.md
WORKDIR /home/slice
RUN /bin/bash -c "./setup.sh"
ENV PATH "/home/slice/llvm33/build/Release+Asserts/bin:${PATH}"
README.md 0 → 100644
To build this container, from the directory containing the docker file do:
docker build -t framac .
Then run it with:
docker run -ti framac /bin/bash
Now from inside the container, test the analyzer by first downloading the following sample program:
wget http://www.dcc.ufmg.br/~brunors/flowtracker/monty.c
Then make a file called in.xml containing the following:
<sources>
<function>
<name>fp_rdcn_var</name>
<parameter>1</parameter>
<parameter>2</parameter>
</function>
</sources>
</functions>
Finally, run the analyzer:
clang -emit-llvm -c -g monty.c -o monty.bc
opt -instnamer -mem2reg monty.bc > monty.rbc
opt -basicaa -load AliasSets.so -load DepGraph.so -load bSSA2.so -bssa2 -xmlfile in.xml monty.rbc
setup.sh 0 → 100755
#!/bin/bash
set -e
wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz
tar -xvf llvm-3.3.src.tar.gz
mv llvm-3.3.src llvm33
wget http://llvm.org/releases/3.3/cfe-3.3.src.tar.gz
tar -xvf cfe-3.3.src.tar.gz
mv cfe-3.3.src llvm33/tools/clang
cd llvm33/projects
git clone https://github.com/llvm-mirror/compiler-rt.git
cd compiler-rt
git checkout -t remotes/origin/release_33
cd ~/llvm33
mkdir -p build
cd build
../configure --disable-bindings --prefix=/usr/local --enable-shared
make -j $(nproc)
cd ~
git clone https://github.com/memcached/memcached.git
ln -s /home/slice/llvm33/build/Release+Asserts/lib/libLLVM-3.3.so /home/slice/llvm33/build/Release+Asserts/lib/libLLVM-3.3.so.1
wget https://github.com/zhangyz/llvm-slicing/raw/master/bin/llvm-slicing_llvm-3.3_x86-64_Ubuntu-12.04.2.tar.bz2
tar -xvjf llvm-slicing_llvm-3.3_x86-64_Ubuntu-12.04.2.tar.bz2
mv llvm-slicing /home/slice/llvm33/build/Release+Asserts/bin
export LD_LIBRARY_PATH=/home/slice/llvm33/build/Release+Asserts/lib