Update Dockerfile (#3243)
This commit is contained in:
parent
be74774463
commit
bb24fb555b
@ -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"
|
||||
}
|
||||
}
|
||||
|
133
Dockerfile
133
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"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user