From bb24fb555b0211aa7d74b0c3fff984108ca3d238 Mon Sep 17 00:00:00 2001 From: WorksButNotTested <62701594+WorksButNotTested@users.noreply.github.com> Date: Fri, 16 May 2025 17:31:17 +0100 Subject: [PATCH] Update Dockerfile (#3243) --- .devcontainer/devcontainer.json | 4 +- Dockerfile | 133 +------------------------------- 2 files changed, 4 insertions(+), 133 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f8077c7565..e918a62485 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ // "forwardPorts": [], // Uncomment the next line to run commands after the container is created - for example installing curl. // Install development components that shouldn't be in the main Dockerfile - "postCreateCommand": "rustup component add --toolchain nightly rustfmt clippy llvm-tools-preview", + "postCreateCommand": "rustup component add rustfmt clippy llvm-tools-preview", // Uncomment when using a ptrace-based debugger like C++, Go, and Rust "runArgs": [ "--cap-add=SYS_PTRACE", @@ -34,4 +34,4 @@ // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root. // "remoteUser": "vscode" -} \ No newline at end of file +} diff --git a/Dockerfile b/Dockerfile index 7d864424b7..01660f9272 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,6 @@ RUN sh -c 'echo set encoding=utf-8 > /root/.vimrc' \ mkdir ~/.cargo && \ echo "[build]\nrustc-wrapper = \"${RUSTC_WRAPPER}\"" >> ~/.cargo/config -RUN rustup default nightly RUN rustup component add rustfmt clippy RUN rustup target add armv7-unknown-linux-gnueabi @@ -32,6 +31,7 @@ RUN rustup target add powerpc-unknown-linux-gnu # Install clang 18, common build tools ENV LLVM_VERSION=18 +ENV LLVM_CONFIG=llvm-config-${LLVM_VERSION} RUN dpkg --add-architecture i386 RUN apt-get update && \ apt-get install -y \ @@ -76,7 +76,7 @@ RUN apt-get update && \ # Install a modern version of QEMU WORKDIR /root -ENV QEMU_VER=9.2.1 +ENV QEMU_VER=10.0.0 RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \ tar xvJf qemu-${QEMU_VER}.tar.xz && \ cd /root/qemu-${QEMU_VER} && \ @@ -96,134 +96,5 @@ RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \ cd /root && \ rm -rf qemu-${QEMU_VER} -# Copy a dummy.rs and Cargo.toml first, so that dependencies are cached -WORKDIR /libafl -COPY Cargo.toml README.md ./ - -COPY libafl_derive/Cargo.toml libafl_derive/Cargo.toml -COPY scripts/dummy.rs libafl_derive/src/lib.rs - -COPY libafl/Cargo.toml libafl/build.rs libafl/README.md libafl/ -COPY scripts/dummy.rs libafl/src/lib.rs - -# Set up LLVM aliases -COPY scripts/createAliases.sh libafl/ -RUN bash libafl/createAliases.sh ${LLVM_VERSION} - -COPY libafl_bolts/Cargo.toml libafl_bolts/build.rs libafl_bolts/README.md libafl_bolts/ -COPY libafl_bolts/examples libafl_bolts/examples -COPY scripts/dummy.rs libafl_bolts/src/lib.rs - -COPY libafl_frida/Cargo.toml libafl_frida/build.rs libafl_frida/ -COPY scripts/dummy.rs libafl_frida/src/lib.rs -COPY libafl_frida/src/gettls.c libafl_frida/src/gettls.c - -COPY libafl_intelpt/Cargo.toml libafl_intelpt/README.md libafl_intelpt/ -COPY scripts/dummy.rs libafl_intelpt/src/lib.rs - -COPY libafl_unicorn/Cargo.toml libafl_unicorn/ -COPY scripts/dummy.rs libafl_unicorn/src/lib.rs - -COPY libafl_qemu/Cargo.toml libafl_qemu/build.rs libafl_qemu/build_linux.rs libafl_qemu/ -COPY scripts/dummy.rs libafl_qemu/src/lib.rs - -COPY libafl_qemu/libafl_qemu_build/Cargo.toml libafl_qemu/libafl_qemu_build/ -COPY scripts/dummy.rs libafl_qemu/libafl_qemu_build/src/lib.rs - -COPY libafl_qemu/libafl_qemu_sys/Cargo.toml libafl_qemu/libafl_qemu_sys/build.rs libafl_qemu/libafl_qemu_sys/build_linux.rs libafl_qemu/libafl_qemu_sys/ -COPY scripts/dummy.rs libafl_qemu/libafl_qemu_sys/src/lib.rs - -COPY libafl_sugar/Cargo.toml libafl_sugar/ -COPY scripts/dummy.rs libafl_sugar/src/lib.rs - -COPY bindings/pylibafl/Cargo.toml bindings/pylibafl/Cargo.toml -COPY bindings/pylibafl/src bindings/pylibafl/src - -COPY libafl_cc/Cargo.toml libafl_cc/Cargo.toml -COPY libafl_cc/build.rs libafl_cc/build.rs -COPY libafl_cc/src libafl_cc/src -COPY scripts/dummy.rs libafl_cc/src/lib.rs - -COPY libafl_targets/Cargo.toml libafl_targets/build.rs libafl_targets/ -COPY libafl_targets/src libafl_targets/src -COPY scripts/dummy.rs libafl_targets/src/lib.rs - -COPY libafl_concolic/test/dump_constraints/Cargo.toml libafl_concolic/test/dump_constraints/ -COPY scripts/dummy.rs libafl_concolic/test/dump_constraints/src/lib.rs - -COPY libafl_concolic/test/runtime_test/Cargo.toml libafl_concolic/test/runtime_test/ -COPY scripts/dummy.rs libafl_concolic/test/runtime_test/src/lib.rs - -COPY libafl_concolic/symcc_runtime/Cargo.toml libafl_concolic/symcc_runtime/build.rs libafl_concolic/symcc_runtime/ -COPY scripts/dummy.rs libafl_concolic/symcc_runtime/src/lib.rs - -COPY libafl_concolic/symcc_libafl/Cargo.toml libafl_concolic/symcc_libafl/ -COPY scripts/dummy.rs libafl_concolic/symcc_libafl/src/lib.rs - -COPY libafl_nyx/Cargo.toml libafl_nyx/build.rs libafl_nyx/build_nyx_support.sh libafl_nyx/ -COPY scripts/dummy.rs libafl_nyx/src/lib.rs - -COPY libafl_tinyinst/Cargo.toml libafl_tinyinst/ -COPY scripts/dummy.rs libafl_tinyinst/src/lib.rs - -# avoid pulling in the runtime, as this is quite an expensive build, until later -COPY libafl_libfuzzer/Cargo.toml libafl_libfuzzer/ -COPY scripts/dummy.rs libafl_libfuzzer/src/lib.rs - -COPY utils utils - -RUN cargo build && cargo build --release - -COPY scripts scripts -COPY docs docs - -# Pre-build dependencies for a few common fuzzers - -# Dep chain: -# libafl_cc (independent) -# libafl_derive -> libafl -# libafl -> libafl_targets -# libafl_targets -> libafl_frida - -# Build once without source -COPY libafl_cc/src libafl_cc/src -RUN touch libafl_cc/src/lib.rs -COPY libafl_derive/src libafl_derive/src -RUN touch libafl_derive/src/lib.rs -COPY libafl_bolts/src libafl_bolts/src -RUN touch libafl_bolts/src/lib.rs -COPY libafl/src libafl/src -RUN touch libafl/src/lib.rs -COPY libafl_targets/src libafl_targets/src -RUN touch libafl_targets/src/lib.rs -COPY libafl_frida/src libafl_frida/src -RUN touch libafl_qemu/libafl_qemu_build/src/lib.rs -COPY libafl_qemu/libafl_qemu_build/src libafl_qemu/libafl_qemu_build/src -RUN touch libafl_qemu/libafl_qemu_sys/src/lib.rs -COPY libafl_qemu/libafl_qemu_sys/src libafl_qemu/libafl_qemu_sys/src -COPY libafl_qemu/runtime libafl_qemu/runtime -COPY libafl_qemu/libqasan libafl_qemu/libqasan -RUN touch libafl_qemu/src/lib.rs -COPY libafl_qemu/src libafl_qemu/src -RUN touch libafl_frida/src/lib.rs -COPY libafl_concolic/symcc_libafl libafl_concolic/symcc_libafl -COPY libafl_concolic/symcc_runtime libafl_concolic/symcc_runtime -COPY libafl_concolic/test libafl_concolic/test -COPY libafl_nyx/src libafl_nyx/src -RUN touch libafl_nyx/src/lib.rs -COPY libafl_libfuzzer_runtime libafl_libfuzzer_runtime -COPY libafl_libfuzzer/src libafl_libfuzzer/src -COPY libafl_libfuzzer/runtime libafl_libfuzzer/runtime -COPY libafl_libfuzzer/build.rs libafl_libfuzzer/build.rs -RUN touch libafl_libfuzzer/src/lib.rs -COPY libafl_intelpt/src libafl_intelpt/src -RUN touch libafl_intelpt/src/lib.rs -COPY libafl_unicorn/src libafl_unicorn/src -RUN touch libafl_unicorn/src/lib.rs -RUN cargo build && cargo build --release - -# Copy fuzzers over -COPY fuzzers fuzzers - ENTRYPOINT [ "/bin/bash", "-c" ] CMD ["/bin/bash"]