Skip to content

symbol not found issue when building fuzz target with plugins #539

Open
@0xalpharush

Description

@0xalpharush

I ran cargo +nightly afl config --build --plugins successfully in order to use AFL++'s instrumentation passes. When I run cargo afl build, I get the following error:

error: failed to run LLVM passes: Could not load library '~/.local/share/afl.rs/rustc-1.83.0-nightly-6f4ae0f/afl.rs-0.15.10/afl-llvm/cmplog-instructions-pass.so': dlopen(~/.local/share/afl.rs/rustc-1.83.0-nightly-6f4ae0f/afl.rs-0.15.10/afl-llvm/cmplog-instructions-pass.so, 0x0009): symbol not found in flat namespace '__ZN4llvm17PreservedAnalyses14AllAnalysesKeyE'

There is a similarly named symbol in the share library:

$ llvm-nm ~/.local/share/afl.rs/rustc-1.83.0-nightly-6f4ae0f/afl.rs-0.15.10/afl-llvm/cmplog-instructions-pass.so | rustfilt | grep "PreservedAnalyses"
                 U _llvm::PreservedAnalyses::AllAnalysesKey

I'm not sure how to resolve this... Maybe I need to install a specific rustc/llvm/afl-rs for them to cooperate? Any help is greatly appreciated!

If I try to build with LLVM 18.1.8 I get: called `Result::unwrap()` on an `Err` value: llvm-config --version output does not contain expected major version (19)

Fwiw, here's where the name appears in the AFLPlusPlus codebase https://github.com/search?q=repo%3AAFLplusplus%2FAFLplusplus+PreservedAnalyses&type=code

Other background that may be useful:

$ llvm-config --version                                                            
19.1.1
$ rustup show
active toolchain
----------------

nightly-aarch64-apple-darwin (default)
rustc 1.83.0-nightly (6f4ae0f34 2024-10-08)
$ rustup component add llvm-tools-preview
info: component 'llvm-tools' for target 'aarch64-apple-darwin' is up to date
$ echo $LLVM_CONFIG 
llvm-config

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions