about summary refs log tree commit diff
path: root/Dockerfile
diff options
context:
space:
mode:
authorBrendan Dolan-Gavitt <brendandg@nyu.edu>2022-01-29 00:42:25 -0500
committerBrendan Dolan-Gavitt <brendandg@nyu.edu>2022-01-30 14:20:30 -0500
commit7ab7862e4db75024cae98aecdc79d9247db355e7 (patch)
tree2b05e41985320b32712c34538603d5bf61e41d61 /Dockerfile
parent143c9d175e9357ba548413ee7dcee6a8de23f733 (diff)
downloadafl++-7ab7862e4db75024cae98aecdc79d9247db355e7.tar.gz
Build docker images for arm64 as well as x86.
This involves:

* A small change to the Dockerfile, so that it checks the target
  architecture and only installs gcc-multilib on x86_64.
* Updates to the GitHub Actions workflow build_aflplusplus_docker.yaml
  to build for both linux/amd64 and linux/arm64.

These changes should allow Mac M1 users to get a working version of
AFL++ by doing "docker pull aflplusplus/aflplusplus".
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile13
1 files changed, 10 insertions, 3 deletions
diff --git a/Dockerfile b/Dockerfile
index a3c70746..53189657 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -39,13 +39,20 @@ RUN echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main
 
 RUN apt-get update && apt-get full-upgrade -y && \
     apt-get -y install --no-install-suggests --no-install-recommends \
-    gcc-10 g++-10 gcc-10-plugin-dev gcc-10-multilib gcc-multilib gdb lcov \
+    gcc-10 g++-10 gcc-10-plugin-dev gdb lcov \
     clang-12 clang-tools-12 libc++1-12 libc++-12-dev \
     libc++abi1-12 libc++abi-12-dev libclang1-12 libclang-12-dev \
     libclang-common-12-dev libclang-cpp12 libclang-cpp12-dev liblld-12 \
     liblld-12-dev liblldb-12 liblldb-12-dev libllvm12 libomp-12-dev \
-    libomp5-12 lld-12 lldb-12 llvm-12 llvm-12-dev llvm-12-runtime llvm-12-tools \
-    && rm -rf /var/lib/apt/lists/*
+    libomp5-12 lld-12 lldb-12 llvm-12 llvm-12-dev llvm-12-runtime llvm-12-tools
+
+# arm64 doesn't have gcc-multilib, and it's only used for -m32 support on x86
+ARG TARGETPLATFORM
+RUN [ "$TARGETPLATFORM" = "linux/amd64" ] && \
+    apt-get -y install --no-install-suggests --no-install-recommends \
+    gcc-10-multilib gcc-multilib || true
+
+RUN rm -rf /var/lib/apt/lists/*
 
 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