From ae6c30a71113fbebe3aca7fcdf6e007ae680c34b Mon Sep 17 00:00:00 2001 From: van Hauser Date: Tue, 19 May 2020 19:22:11 +0200 Subject: upgrade Dockerfile to Ubunutu 20.04 with llvm 11 and gcc 10 for afl-clang-lto --- Dockerfile | 73 ++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 26 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index c8bfaf33..b59e91fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,37 +1,58 @@ -FROM ubuntu -MAINTAINER David Carlier +# +# This Dockerfile for AFLplusplus uses Ubuntu 20.04 focal and +# installs LLVM 11 from llvm.org for afl-clang-lto support :-) +# It also installs gcc/g++ 10 from the Ubuntu development platform +# has focal has gcc-10 but not g++-10 ... +# + +FROM ubuntu:20.04 +MAINTAINER afl++ team LABEL "about"="AFLplusplus docker image" + +ARG DEBIAN_FRONTEND=noninteractive + RUN apt-get update && apt-get -y install \ --no-install-suggests --no-install-recommends \ automake \ - bison \ + bison flex \ build-essential \ - clang \ - clang-9 \ - flex \ git \ - python3 \ - python3-dev \ - python3-setuptools \ - python-is-python3 \ - gcc-9 \ - gcc-9-plugin-dev \ - gcc-9-multilib \ - libc++-9-dev \ - libtool \ - libtool-bin \ + python3 python3-dev python3-setuptools python-is-python3 \ + libtool libtool-bin \ libglib2.0-dev \ - llvm-9-dev \ - wget \ - ca-certificates \ - libpixman-1-dev \ - && rm -rf /var/lib/apt/lists/* + wget vim jupp nano \ + apt-utils apt-transport-https ca-certificates gnupg \ + libpixman-1-dev + +RUN echo deb http://apt.llvm.org/focal/ llvm-toolchain-focal main >> /etc/apt/sources.list && \ + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + +RUN echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main >> /etc/apt/sources.list && \ + apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1E9377A2BA9EF27F + +RUN apt-get update && apt-get upgrade -y + +RUN apt-get install -y gcc-10 g++-10 gcc-10-plugin-dev gcc-10-multilib \ + libc++-10-dev gdb -ARG CC=gcc-9 -ARG CXX=g++-9 -ARG LLVM_CONFIG=llvm-config-9 +RUN apt-get install -y clang-11 clang-tools-11 libc++1-11 libc++-11-dev \ + libc++abi1-11 libc++abi-11-dev libclang1-11 libclang-11-dev \ + libclang-common-11-dev libclang-cpp11 libclang-cpp11-dev liblld-11 \ + liblld-11-dev liblldb-11 liblldb-11-dev libllvm11 libomp-11-dev \ + libomp5-11 lld-11 lldb-11 llvm-11 llvm-11-dev llvm-11-runtime llvm-11-tools + +RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 0 +RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 0 + +RUN rm -rf /var/lib/apt/lists/* + +ARG CC=gcc-10 +ARG CXX=g++-10 +ARG LLVM_CONFIG=llvm-config-11 RUN git clone https://github.com/AFLplusplus/AFLplusplus -RUN cd AFLplusplus && make clean && make distrib && \ - make install && cd .. && rm -rf AFLplusplus +RUN cd AFLplusplus && export REAL_CXX=g++ && make distrib && \ + make install && cd .. && make clean + +ENV AFL_SKIP_CPUFREQ=1 -- cgit 1.4.1 From ef8d2528431c45ab3424969bd57b976979665f05 Mon Sep 17 00:00:00 2001 From: van Hauser Date: Thu, 28 May 2020 01:29:57 +0200 Subject: fix Dockerfile --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index b59e91fb..5835d205 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,7 +52,7 @@ ARG LLVM_CONFIG=llvm-config-11 RUN git clone https://github.com/AFLplusplus/AFLplusplus -RUN cd AFLplusplus && export REAL_CXX=g++ && make distrib && \ - make install && cd .. && make clean +RUN cd AFLplusplus && export REAL_CXX=g++-10 && make distrib && \ + make install && make clean ENV AFL_SKIP_CPUFREQ=1 -- cgit 1.4.1 From b87d97aa2b664f1a5ea90612ba7543b38bc6d24f Mon Sep 17 00:00:00 2001 From: van Hauser Date: Thu, 28 May 2020 14:34:50 +0200 Subject: make dockerfile better --- Dockerfile | 16 ++++++++++------ README.md | 10 +++++++++- 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index 5835d205..905e8265 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,8 +11,8 @@ LABEL "about"="AFLplusplus docker image" ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get -y install \ - --no-install-suggests --no-install-recommends \ +RUN apt-get update && apt-get upgrade -y && \ + apt-get -y install --no-install-suggests --no-install-recommends \ automake \ bison flex \ build-essential \ @@ -21,7 +21,7 @@ RUN apt-get update && apt-get -y install \ libtool libtool-bin \ libglib2.0-dev \ wget vim jupp nano \ - apt-utils apt-transport-https ca-certificates gnupg \ + apt-utils apt-transport-https ca-certificates gnupg dialog \ libpixman-1-dev RUN echo deb http://apt.llvm.org/focal/ llvm-toolchain-focal main >> /etc/apt/sources.list && \ @@ -33,7 +33,7 @@ RUN echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main RUN apt-get update && apt-get upgrade -y RUN apt-get install -y gcc-10 g++-10 gcc-10-plugin-dev gcc-10-multilib \ - libc++-10-dev gdb + libc++-10-dev gdb lcov RUN apt-get install -y clang-11 clang-tools-11 libc++1-11 libc++-11-dev \ libc++abi1-11 libc++abi-11-dev libclang1-11 libclang-11-dev \ @@ -44,15 +44,19 @@ RUN apt-get install -y clang-11 clang-tools-11 libc++1-11 libc++-11-dev \ RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 0 RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 0 -RUN rm -rf /var/lib/apt/lists/* +RUN rm -rf /var/cache/apt/archives/* ARG CC=gcc-10 ARG CXX=g++-10 ARG LLVM_CONFIG=llvm-config-11 RUN git clone https://github.com/AFLplusplus/AFLplusplus - RUN cd AFLplusplus && export REAL_CXX=g++-10 && make distrib && \ make install && make clean +RUN git clone https://github.com/vanhauser-thc/afl-cov afl-cov +RUN cd afl-cov && make install + +RUN echo 'alias joe="jupp --wordwrap"' >> ~/.bashrc + ENV AFL_SKIP_CPUFREQ=1 diff --git a/README.md b/README.md index 1c730ec1..a906a2c0 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,15 @@ For everyone who wants to contribute (and send pull requests) please read ## Building and installing afl++ -afl++ has many build options. +An easy way to install afl++ with everything compiled is available via docker: +```shell +docker pull aflplusplus/aflplusplus +docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus +``` +This container is automatically generated when a push to master happens. +You will find your target source code in /src in the container. + +If you want to build afl++ yourself you have many options. The easiest is to build and install everything: ```shell -- cgit 1.4.1