rust-num / num-derive

Procedural macros to derive numeric traits in Rust
Apache License 2.0
166 stars 24 forks source link

cannot build when RUSTFLAGS="-Zinstrument-coverage" #48

Closed gpr closed 3 years ago

gpr commented 3 years ago

I want to use grcov on my project but it's impossible due to an issue with num-derive.

With Rust nightly

$ rustup component add llvm-tools-preview
$ export RUSTFLAGS="-Zinstrument-coverage"
$ cargo build --verbose

    Running `rustc --crate-name num_derive --edition=2018 /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/num-derive-0.3.3/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type proc-macro --emit=dep-info,link -C prefer-dynamic -C embed-bitcode=no -C debuginfo=2 -C metadata=b2ed77cd5fc79e37 -C extra-filename=-b2ed77cd5fc79e37 --out-dir /sources/target/debug/deps -L dependency=/sources/target/debug/deps --extern proc_macro2=/sources/target/debug/deps/libproc_macro2-fc6b92fa46147edf.rlib --extern quote=/sources/target/debug/deps/libquote-e1e335b8b96ed529.rlib --extern syn=/sources/target/debug/deps/libsyn-a64315032d644c4f.rlib --extern proc_macro --cap-lints allow -Zinstrument-coverage`
       Fresh num v0.4.0
error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-m64" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.0.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.1.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.10.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.11.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.12.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.13.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.14.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.15.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.2.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.3.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.4.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.5.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.6.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.7.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.8.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.num_derive.d77ae0fb-cgu.9.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.28xzxdag3uczcy8e.rcgu.o" "/sources/target/debug/deps/num_derive-b2ed77cd5fc79e37.of6gkb20ebwbdmn.rcgu.o" "-Wl,--as-needed" "-L" "/sources/target/debug/deps" "-L" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/sources/target/debug/deps/libsyn-a64315032d644c4f.rlib" "/sources/target/debug/deps/libquote-e1e335b8b96ed529.rlib" "/sources/target/debug/deps/libproc_macro2-fc6b92fa46147edf.rlib" "/sources/target/debug/deps/libunicode_xid-3c8a88541efd8c80.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libprofiler_builtins-e88f05221d1a227a.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libproc_macro-cc66999943688fb6.rlib" "-Wl,--start-group" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d6566390077dd5f5.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-a8f484438681c15e.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-b69fd8507c8409af.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-2dff396b99681a6b.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-a78bd5aa183c7115.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-846c64d5a2fbc5ee.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-24c09062b6dc787b.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-ce93f351ca41a57b.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-5b404d65540eadf8.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-514cb174319eb6d4.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-37c1534c42bc4f8c.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-06d0f7780fda2fd9.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-126d4eb258557375.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-88bb1ba4dd271224.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-b4a707e310d7480c.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-0b5a376b429677a6.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-2a6a2797f7a73818.rlib" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-0e3656b1fda5fd7b.rlib" "-Wl,--end-group" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-eecefd843a0dbc02.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/sources/target/debug/deps/libnum_derive-b2ed77cd5fc79e37.so" "-Wl,--gc-sections" "-shared" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-u" "__llvm_profile_runtime"
  = note: /usr/bin/ld: /usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libprofiler_builtins-e88f05221d1a227a.rlib(InstrProfilingPlatformLinux.o): relocation R_X86_64_PC32 against undefined hidden symbol `__ehdr_start' can not be used when making a shared object
          /usr/bin/ld: final link failed: nonrepresentable section on output
          collect2: error: ld returned 1 exit status

error: could not compile `num-derive` due to previous error

Caused by:
  process didn't exit successfully: `rustc --crate-name num_derive --edition=2018 /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/num-derive-0.3.3/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type proc-macro --emit=dep-info,link -C prefer-dynamic -C embed-bitcode=no -C debuginfo=2 -C metadata=b2ed77cd5fc79e37 -C extra-filename=-b2ed77cd5fc79e37 --out-dir /sources/target/debug/deps -L dependency=/sources/target/debug/deps --extern proc_macro2=/sources/target/debug/deps/libproc_macro2-fc6b92fa46147edf.rlib --extern quote=/sources/target/debug/deps/libquote-e1e335b8b96ed529.rlib --extern syn=/sources/target/debug/deps/libsyn-a64315032d644c4f.rlib --extern proc_macro --cap-lints allow -Zinstrument-coverage` (exit status: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed
cuviper commented 3 years ago

I want to use grcov on my project but it's impossible due to an issue with num-derive.

It seems to be a compiler issue to me, so I suggest opening an issue on rust-lang/rust. Any -Z is an unstable compiler option, and we're not doing anything low-level in num-derive that would affect relocations or linking.

Also, I'm not able to reproduce this on Fedora 34 in the first place -- maybe you have an older (broken) binutils?

gpr commented 3 years ago

My mistake I solve the issue by using the official docker image and adding the nightly toolchain.