@@ -22,7 +22,6 @@ RUN sh -c 'echo set encoding=utf-8 > /root/.vimrc' \
22
22
mkdir ~/.cargo && \
23
23
echo "[build]\n rustc-wrapper = \" ${RUSTC_WRAPPER}\" " >> ~/.cargo/config
24
24
25
- RUN rustup default nightly
26
25
RUN rustup component add rustfmt clippy
27
26
28
27
RUN rustup target add armv7-unknown-linux-gnueabi
@@ -32,6 +31,7 @@ RUN rustup target add powerpc-unknown-linux-gnu
32
31
33
32
# Install clang 18, common build tools
34
33
ENV LLVM_VERSION=18
34
+ ENV LLVM_CONFIG=llvm-config-${LLVM_VERSION}
35
35
RUN dpkg --add-architecture i386
36
36
RUN apt-get update && \
37
37
apt-get install -y \
@@ -76,7 +76,7 @@ RUN apt-get update && \
76
76
77
77
# Install a modern version of QEMU
78
78
WORKDIR /root
79
- ENV QEMU_VER=9.2.1
79
+ ENV QEMU_VER=10.0.0
80
80
RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \
81
81
tar xvJf qemu-${QEMU_VER}.tar.xz && \
82
82
cd /root/qemu-${QEMU_VER} && \
@@ -96,134 +96,5 @@ RUN wget https://download.qemu.org/qemu-${QEMU_VER}.tar.xz && \
96
96
cd /root && \
97
97
rm -rf qemu-${QEMU_VER}
98
98
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
-
228
99
ENTRYPOINT [ "/bin/bash" , "-c" ]
229
100
CMD ["/bin/bash" ]
0 commit comments