Skip to content

Commit bb24fb5

Browse files
Update Dockerfile (#3243)
1 parent be74774 commit bb24fb5

File tree

2 files changed

+4
-133
lines changed

2 files changed

+4
-133
lines changed

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
// "forwardPorts": [],
2424
// Uncomment the next line to run commands after the container is created - for example installing curl.
2525
// Install development components that shouldn't be in the main Dockerfile
26-
"postCreateCommand": "rustup component add --toolchain nightly rustfmt clippy llvm-tools-preview",
26+
"postCreateCommand": "rustup component add rustfmt clippy llvm-tools-preview",
2727
// Uncomment when using a ptrace-based debugger like C++, Go, and Rust
2828
"runArgs": [
2929
"--cap-add=SYS_PTRACE",
@@ -34,4 +34,4 @@
3434
// "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],
3535
// Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
3636
// "remoteUser": "vscode"
37-
}
37+
}

Dockerfile

Lines changed: 2 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ RUN sh -c 'echo set encoding=utf-8 > /root/.vimrc' \
2222
mkdir ~/.cargo && \
2323
echo "[build]\nrustc-wrapper = \"${RUSTC_WRAPPER}\"" >> ~/.cargo/config
2424

25-
RUN rustup default nightly
2625
RUN rustup component add rustfmt clippy
2726

2827
RUN rustup target add armv7-unknown-linux-gnueabi
@@ -32,6 +31,7 @@ RUN rustup target add powerpc-unknown-linux-gnu
3231

3332
# Install clang 18, common build tools
3433
ENV LLVM_VERSION=18
34+
ENV LLVM_CONFIG=llvm-config-${LLVM_VERSION}
3535
RUN dpkg --add-architecture i386
3636
RUN apt-get update && \
3737
apt-get install -y \
@@ -76,7 +76,7 @@ RUN apt-get update && \
7676

7777
# Install a modern version of QEMU
7878
WORKDIR /root
79-
ENV QEMU_VER=9.2.1
79+
ENV QEMU_VER=10.0.0
8080
RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \
8181
tar xvJf qemu-${QEMU_VER}.tar.xz && \
8282
cd /root/qemu-${QEMU_VER} && \
@@ -96,134 +96,5 @@ RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \
9696
cd /root && \
9797
rm -rf qemu-${QEMU_VER}
9898

99-
# Copy a dummy.rs and Cargo.toml first, so that dependencies are cached
100-
WORKDIR /libafl
101-
COPY Cargo.toml README.md ./
102-
103-
COPY libafl_derive/Cargo.toml libafl_derive/Cargo.toml
104-
COPY scripts/dummy.rs libafl_derive/src/lib.rs
105-
106-
COPY libafl/Cargo.toml libafl/build.rs libafl/README.md libafl/
107-
COPY scripts/dummy.rs libafl/src/lib.rs
108-
109-
# Set up LLVM aliases
110-
COPY scripts/createAliases.sh libafl/
111-
RUN bash libafl/createAliases.sh ${LLVM_VERSION}
112-
113-
COPY libafl_bolts/Cargo.toml libafl_bolts/build.rs libafl_bolts/README.md libafl_bolts/
114-
COPY libafl_bolts/examples libafl_bolts/examples
115-
COPY scripts/dummy.rs libafl_bolts/src/lib.rs
116-
117-
COPY libafl_frida/Cargo.toml libafl_frida/build.rs libafl_frida/
118-
COPY scripts/dummy.rs libafl_frida/src/lib.rs
119-
COPY libafl_frida/src/gettls.c libafl_frida/src/gettls.c
120-
121-
COPY libafl_intelpt/Cargo.toml libafl_intelpt/README.md libafl_intelpt/
122-
COPY scripts/dummy.rs libafl_intelpt/src/lib.rs
123-
124-
COPY libafl_unicorn/Cargo.toml libafl_unicorn/
125-
COPY scripts/dummy.rs libafl_unicorn/src/lib.rs
126-
127-
COPY libafl_qemu/Cargo.toml libafl_qemu/build.rs libafl_qemu/build_linux.rs libafl_qemu/
128-
COPY scripts/dummy.rs libafl_qemu/src/lib.rs
129-
130-
COPY libafl_qemu/libafl_qemu_build/Cargo.toml libafl_qemu/libafl_qemu_build/
131-
COPY scripts/dummy.rs libafl_qemu/libafl_qemu_build/src/lib.rs
132-
133-
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/
134-
COPY scripts/dummy.rs libafl_qemu/libafl_qemu_sys/src/lib.rs
135-
136-
COPY libafl_sugar/Cargo.toml libafl_sugar/
137-
COPY scripts/dummy.rs libafl_sugar/src/lib.rs
138-
139-
COPY bindings/pylibafl/Cargo.toml bindings/pylibafl/Cargo.toml
140-
COPY bindings/pylibafl/src bindings/pylibafl/src
141-
142-
COPY libafl_cc/Cargo.toml libafl_cc/Cargo.toml
143-
COPY libafl_cc/build.rs libafl_cc/build.rs
144-
COPY libafl_cc/src libafl_cc/src
145-
COPY scripts/dummy.rs libafl_cc/src/lib.rs
146-
147-
COPY libafl_targets/Cargo.toml libafl_targets/build.rs libafl_targets/
148-
COPY libafl_targets/src libafl_targets/src
149-
COPY scripts/dummy.rs libafl_targets/src/lib.rs
150-
151-
COPY libafl_concolic/test/dump_constraints/Cargo.toml libafl_concolic/test/dump_constraints/
152-
COPY scripts/dummy.rs libafl_concolic/test/dump_constraints/src/lib.rs
153-
154-
COPY libafl_concolic/test/runtime_test/Cargo.toml libafl_concolic/test/runtime_test/
155-
COPY scripts/dummy.rs libafl_concolic/test/runtime_test/src/lib.rs
156-
157-
COPY libafl_concolic/symcc_runtime/Cargo.toml libafl_concolic/symcc_runtime/build.rs libafl_concolic/symcc_runtime/
158-
COPY scripts/dummy.rs libafl_concolic/symcc_runtime/src/lib.rs
159-
160-
COPY libafl_concolic/symcc_libafl/Cargo.toml libafl_concolic/symcc_libafl/
161-
COPY scripts/dummy.rs libafl_concolic/symcc_libafl/src/lib.rs
162-
163-
COPY libafl_nyx/Cargo.toml libafl_nyx/build.rs libafl_nyx/build_nyx_support.sh libafl_nyx/
164-
COPY scripts/dummy.rs libafl_nyx/src/lib.rs
165-
166-
COPY libafl_tinyinst/Cargo.toml libafl_tinyinst/
167-
COPY scripts/dummy.rs libafl_tinyinst/src/lib.rs
168-
169-
# avoid pulling in the runtime, as this is quite an expensive build, until later
170-
COPY libafl_libfuzzer/Cargo.toml libafl_libfuzzer/
171-
COPY scripts/dummy.rs libafl_libfuzzer/src/lib.rs
172-
173-
COPY utils utils
174-
175-
RUN cargo build && cargo build --release
176-
177-
COPY scripts scripts
178-
COPY docs docs
179-
180-
# Pre-build dependencies for a few common fuzzers
181-
182-
# Dep chain:
183-
# libafl_cc (independent)
184-
# libafl_derive -> libafl
185-
# libafl -> libafl_targets
186-
# libafl_targets -> libafl_frida
187-
188-
# Build once without source
189-
COPY libafl_cc/src libafl_cc/src
190-
RUN touch libafl_cc/src/lib.rs
191-
COPY libafl_derive/src libafl_derive/src
192-
RUN touch libafl_derive/src/lib.rs
193-
COPY libafl_bolts/src libafl_bolts/src
194-
RUN touch libafl_bolts/src/lib.rs
195-
COPY libafl/src libafl/src
196-
RUN touch libafl/src/lib.rs
197-
COPY libafl_targets/src libafl_targets/src
198-
RUN touch libafl_targets/src/lib.rs
199-
COPY libafl_frida/src libafl_frida/src
200-
RUN touch libafl_qemu/libafl_qemu_build/src/lib.rs
201-
COPY libafl_qemu/libafl_qemu_build/src libafl_qemu/libafl_qemu_build/src
202-
RUN touch libafl_qemu/libafl_qemu_sys/src/lib.rs
203-
COPY libafl_qemu/libafl_qemu_sys/src libafl_qemu/libafl_qemu_sys/src
204-
COPY libafl_qemu/runtime libafl_qemu/runtime
205-
COPY libafl_qemu/libqasan libafl_qemu/libqasan
206-
RUN touch libafl_qemu/src/lib.rs
207-
COPY libafl_qemu/src libafl_qemu/src
208-
RUN touch libafl_frida/src/lib.rs
209-
COPY libafl_concolic/symcc_libafl libafl_concolic/symcc_libafl
210-
COPY libafl_concolic/symcc_runtime libafl_concolic/symcc_runtime
211-
COPY libafl_concolic/test libafl_concolic/test
212-
COPY libafl_nyx/src libafl_nyx/src
213-
RUN touch libafl_nyx/src/lib.rs
214-
COPY libafl_libfuzzer_runtime libafl_libfuzzer_runtime
215-
COPY libafl_libfuzzer/src libafl_libfuzzer/src
216-
COPY libafl_libfuzzer/runtime libafl_libfuzzer/runtime
217-
COPY libafl_libfuzzer/build.rs libafl_libfuzzer/build.rs
218-
RUN touch libafl_libfuzzer/src/lib.rs
219-
COPY libafl_intelpt/src libafl_intelpt/src
220-
RUN touch libafl_intelpt/src/lib.rs
221-
COPY libafl_unicorn/src libafl_unicorn/src
222-
RUN touch libafl_unicorn/src/lib.rs
223-
RUN cargo build && cargo build --release
224-
225-
# Copy fuzzers over
226-
COPY fuzzers fuzzers
227-
22899
ENTRYPOINT [ "/bin/bash", "-c" ]
229100
CMD ["/bin/bash"]

0 commit comments

Comments
 (0)