Fixup libafl_libfuzzer with new nightly internal symbol mangling (#3093)

* fixup libfuzzer with new nightly internal symbol mangling

* cringe, clippy fail
This commit is contained in:
Addison Crump 2025-03-19 16:05:23 +01:00 committed by GitHub
parent d0da90cf6a
commit 1b85a92577
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -168,6 +168,13 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut redefinitions_file = BufWriter::new(File::create(&redefined_symbols).unwrap()); let mut redefinitions_file = BufWriter::new(File::create(&redefined_symbols).unwrap());
let rn_prefix = if cfg!(target_os = "macos") {
// macOS symbols have an extra `_`
"__RN"
} else {
"_RN"
};
let zn_prefix = if cfg!(target_os = "macos") { let zn_prefix = if cfg!(target_os = "macos") {
// macOS symbols have an extra `_` // macOS symbols have an extra `_`
"__ZN" "__ZN"
@ -188,11 +195,14 @@ fn main() -> Result<(), Box<dyn Error>> {
} }
let (_, symbol) = line.rsplit_once(' ').unwrap(); let (_, symbol) = line.rsplit_once(' ').unwrap();
if symbol.starts_with(zn_prefix) { if symbol.starts_with(rn_prefix) {
let (_prefix, renamed) = symbol.split_once("__rustc").unwrap();
let (size, renamed) = renamed.split_once('_').unwrap();
writeln!(redefinitions_file, "{symbol} {replacement}{size}{renamed}E").unwrap();
} else if symbol.starts_with(zn_prefix) {
writeln!( writeln!(
redefinitions_file, redefinitions_file,
"{} {}", "{symbol} {}",
symbol,
symbol.replacen(zn_prefix, &replacement, 1) symbol.replacen(zn_prefix, &replacement, 1)
) )
.unwrap(); .unwrap();