xd009642 / tarpaulin

A code coverage tool for Rust projects
https://crates.io/crates/cargo-tarpaulin
Apache License 2.0
2.5k stars 180 forks source link

support for no_std? #724

Open alexxroche opened 3 years ago

alexxroche commented 3 years ago

I installed tarpaulin with cargo install cargo-tarpaulin today. I'm working through https://os.phil-opp.com/ and trying to apply tarpaulin and it doesn't seem to be working:

Mar 18 13:49:19.516 DEBUG cargo_tarpaulin: set up logging
Mar 18 13:49:19.516  INFO cargo_tarpaulin::config: Creating config
Mar 18 13:49:19.796  INFO cargo_tarpaulin: Running Tarpaulin
Mar 18 13:49:19.796  INFO cargo_tarpaulin: Building project
   Compiling core v0.0.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling compiler_builtins v0.1.39
error: could not compile `core`

Caused by:
  process didn't exit successfully: `rustc --crate-name core --edition=2018 ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=6eb5582a71757fa4 -C extra-filename=-6eb5582a71757fa4 --out-dir ~/files/lab/rust/OS/blog_os/target/x86_64-blog_os/debug/deps --target ~/files/lab/rust/OS/blog_os/x86_64-blog_os.json -Z force-unstable-if-unmarked -L dependency=~/files/lab/rust/OS/blog_os/target/x86_64-blog_os/debug/deps -L dependency=~/files/lab/rust/OS/blog_os/target/debug/deps --cap-lints allow -C relocation-model=dynamic-no-pic -C link-dead-code -C debuginfo=2 --cfg=tarpaulin` (signal: 11, SIGSEGV: invalid memory reference)
warning: build failed, waiting for other jobs to finish...
error: build failed
Mar 18 13:49:48.187  INFO cargo_tarpaulin::report: Coverage Results:
|| Uncovered Lines:
|| Tested/Total Lines:
|| 
NaN% coverage, 0/0 lines covered, NaN% change in coverage

$ rustc --version
rustc 1.52.0-nightly (8f349be27 2021-03-08)

(Maybe it isn't the no_std but ```bash $ cargo build Compiling core v0.0.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core) Compiling rustc-std-workspace-core v1.99.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core) Compiling compiler_builtins v0.1.39 Compiling bitflags v1.2.1 Compiling bit_field v0.9.0 Compiling spin v0.5.2 Compiling bootloader v0.9.16 Compiling volatile v0.2.7 Compiling x86_64 v0.13.3 Compiling lazy_static v1.4.0 Compiling uart_16550 v0.2.12 Compiling blog_os v0.1.0 (~/work/rust/OS/blog_os) Finished dev [unoptimized + debuginfo] target(s) in 33.95s


works.
xd009642 commented 3 years ago

If you install 0.18.0-alpha1 or the latest version on the develop branch does the issue persist? Just wondering as some details with how tarpaulin interacts with RUSTFLAGS and the linker have changed so there's always the chance it might now work

alexxroche commented 3 years ago

TL;DR issue persists

$ cd ~/workspace/rust/
$ git clone https://github.com/xd009642/tarpaulin.git
$ cd tarpaulin
$ git checkout -b 0.18.0-alpha1
$ cargo build
$ cd ~/workspace/rust/blog_os
$ ~/workspace/rust/tarpaulin/target/debug/cargo-tarpaulin -v
error: Found argument '-v' which wasn't expected, or isn't valid in this context

$ ~/workspace/rust/tarpaulin/target/debug/cargo-tarpaulin
Mar 18 14:48:02.605  INFO cargo_tarpaulin: Running Tarpaulin
Mar 18 14:48:02.605  INFO cargo_tarpaulin: Building project
   Compiling core v0.0.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling compiler_builtins v0.1.39
error: could not compile `core`

Caused by:
  process didn't exit successfully: `rustc --crate-name core --edition=2018 ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=6eb5582a71757fa4 -C extra-filename=-6eb5582a71757fa4 --out-dir ~/workspace/rust/blog_os/target/x86_64-blog_os/debug/deps --target ~/workspace/rust/blog_os/x86_64-blog_os.json -Z force-unstable-if-unmarked -L dependency=~/workspace/rust/blog_os/target/x86_64-blog_os/debug/deps -L dependency=~/workspace/lab/rust/blog_os/target/debug/deps --cap-lints allow -C link-dead-code -C debuginfo=2 --cfg=tarpaulin` (signal: 11, SIGSEGV: invalid memory reference)
warning: build failed, waiting for other jobs to finish...
error: build failed
Mar 18 14:48:36.814 ERROR cargo_tarpaulin: Cargo failed to run! Error: cargo run failed
Error: "Cargo failed to run! Error: cargo run failed"

$ cd ~/.cargo/bin/
$ mv cargo-tarpaulin tarpaulin ; ln -s ~/workspace/rust/tarpaulin/target/debug/cargo-tarpaulin cargo-tarpaulin
$ cd ~/workspace/rust/blog_os
$ cargo tarpaulin -v
Mar 18 14:55:09.907 DEBUG cargo_tarpaulin: set up logging
Mar 18 14:55:10.173  INFO cargo_tarpaulin: Running Tarpaulin
Mar 18 14:55:10.173  INFO cargo_tarpaulin: Building project
   Compiling core v0.0.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
   Compiling rustc-std-workspace-core v1.99.0 (~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling compiler_builtins v0.1.39
   Compiling bitflags v1.2.1
   Compiling bit_field v0.9.0
LLVM ERROR: Do not know how to split the result of this operator!

error: could not compile `core`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
Mar 18 14:55:37.255 ERROR cargo_tarpaulin: Cargo failed to run! Error: cargo run failed
Error: "Cargo failed to run! Error: cargo run failed"
$ cd ~/workspace/rust/tarpaulin
cargo build --release
# fix the ~/.cargo/bin/ symlink to point to the release version
# but still:
$ cargo tarpaulin -v
<snip:same_error>
error: build failed
Mar 18 15:08:22.790 ERROR cargo_tarpaulin: Cargo failed to run! Error: cargo run failed
Error: "Cargo failed to run! Error: cargo run failed"

Do I have to cargo uninstall cargo-tarpaulin first?