Skip to content

Commit 1b85a92

Browse files
authored
Fixup libafl_libfuzzer with new nightly internal symbol mangling (#3093)
* fixup libfuzzer with new nightly internal symbol mangling * cringe, clippy fail
1 parent d0da90c commit 1b85a92

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

libafl_libfuzzer/build.rs

+13-3
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,13 @@ fn main() -> Result<(), Box<dyn Error>> {
168168

169169
let mut redefinitions_file = BufWriter::new(File::create(&redefined_symbols).unwrap());
170170

171+
let rn_prefix = if cfg!(target_os = "macos") {
172+
// macOS symbols have an extra `_`
173+
"__RN"
174+
} else {
175+
"_RN"
176+
};
177+
171178
let zn_prefix = if cfg!(target_os = "macos") {
172179
// macOS symbols have an extra `_`
173180
"__ZN"
@@ -188,11 +195,14 @@ fn main() -> Result<(), Box<dyn Error>> {
188195
}
189196
let (_, symbol) = line.rsplit_once(' ').unwrap();
190197

191-
if symbol.starts_with(zn_prefix) {
198+
if symbol.starts_with(rn_prefix) {
199+
let (_prefix, renamed) = symbol.split_once("__rustc").unwrap();
200+
let (size, renamed) = renamed.split_once('_').unwrap();
201+
writeln!(redefinitions_file, "{symbol} {replacement}{size}{renamed}E").unwrap();
202+
} else if symbol.starts_with(zn_prefix) {
192203
writeln!(
193204
redefinitions_file,
194-
"{} {}",
195-
symbol,
205+
"{symbol} {}",
196206
symbol.replacen(zn_prefix, &replacement, 1)
197207
)
198208
.unwrap();

0 commit comments

Comments
 (0)