Skip to content

cargo afl test fails linking when encountering doctests #142

Closed
@SingingTree

Description

@SingingTree

When running cargo afl test doctests result in linking errors. Steps to reproduce:

  1. (Work around Troubleshooting: linking with cc failed #141) export RUSTFLAGS=-Clink-arg=-fuse-ld=gold
  2. Create a minimal lib: cargo new --lib afl_rs_doctest
  3. Set contents of lib.rs to:
//! # Examples
//! ```
//! extern crate afl_rs_doctest;
//! assert_eq!(afl_rs_doctest::foo(), 1);
//! ```


pub fn foo() -> u8 {
    0x01
}
  1. Try and test with afl: cargo afl test

Results in:

b@b-virtual-machine ~/projects/afl_rs_doctest $ cargo afl test
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s                                                                                                                                                 
     Running target/debug/deps/afl_rs_doctest-752d43b7c98a3a98

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests afl_rs_doctest

running 1 test
test src/lib.rs -  (line 2) ... FAILED

failures:

---- src/lib.rs -  (line 2) stdout ----
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/b/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.0.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.1.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.2.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.3.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.4.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.5.rcgu.o" "/tmp/rustdoctestieMm5E/rust_out.rust_out.7rcbfp3g-cgu.6.rcgu.o" "-o" "/tmp/rustdoctestieMm5E/rust_out" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/b/projects/afl_rs_doctest/target/debug/deps" "-L" "/home/b/projects/afl_rs_doctest/target/debug/deps" "-L" "/home/b/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/b/projects/afl_rs_doctest/target/debug/deps/libafl_rs_doctest-4fc61169c7b196d3.rlib" "-Wl,--start-group" "-L" "/home/b/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bdynamic" "-lstd-a27f61c2a32117a5" "-Wl,--end-group" "-Wl,-Bstatic" "/home/b/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-f97f39378674ae7b.rlib" "-Wl,-Bdynamic" "-lafl-llvm-rt" "-ldl" "-lrt" "-lpthread" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
  = note: /usr/bin/ld: cannot find -lafl-llvm-rt
          collect2: error: ld returned 1 exit status
          

thread 'src/lib.rs -  (line 2)' panicked at 'couldn't compile the test', librustdoc/test.rs:333:13
note: Run with `RUST_BACKTRACE=1` for a backtrace.


failures:
    src/lib.rs -  (line 2)

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '--doc'

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