Closed Bug 1527470 Opened 7 years ago Closed 7 years ago

Linker can't find gcov symbols in jsshell coverage builds

Categories

(Firefox Build System :: General, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: truber, Unassigned)

References

Details

Our jsshell builds for coverage were recently broken. I've bisected this to bug 1522609.

With Clang:

   Compiling baldrdash v0.1.0 (/home/truber/src/m/u/js/src/wasm/cranelift)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.1bc9gu71yl7p3vrz.rcgu.o" "/home/
truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.1de62rm1j72hglqa.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.1ko8zd0mec1nafao.rcgu.o" "/home/truber/workspace/jsshell-clang/release/b
uild/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.1ry1xo9xa34p847a.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.21e12wqjh75eewyw.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_sc
ript_build-ef134a4e016bda5f.25pg2i7e2lx001pp.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.2kscxoajk693hpw7.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.2lbdog92djon
oq3o.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.2zknxvddgmf3bnim.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.3bsanv3zyg8righb.rcgu.o" "/home/truber/workspace/jss
hell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.3ccf1vucvii89k56.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.3cxd4za8vzw0iwzo.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134
a4e016bda5f/build_script_build-ef134a4e016bda5f.3gv0slqzm1nzhej7.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.3mjcya1ubv85g2px.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e0
16bda5f.3q1zaoufecgqbc2p.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.3z68tmuc8ejmnhl3.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.48dlo3zez85nhjwb.rcgu.o" "/home/
truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.4d720fg8bhyicck2.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.4exkju3vgvqo3ocx.rcgu.o" "/home/truber/workspace/jsshell-clang/release/b
uild/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.4fpjk6pu6y5v7yod.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.4k6hc4qxyjn47age.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_sc
ript_build-ef134a4e016bda5f.4kqjjauhykjwvorl.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.517jhmdila6sqc2e.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.5cjcct0ofrfc
sgdw.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.7pnga8m98c181tn.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.q46y9adkg8y4srr.rcgu.o" "/home/truber/workspace/jsshe
ll-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.q6jhn224tojmatq.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.twgor6exdkdmcez.rcgu.o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e0
16bda5f/build_script_build-ef134a4e016bda5f.varmed86hmu1wxi.rcgu.o" "-o" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f" "/home/truber/workspace/jsshell-clang/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.28sxc27jwkzuy3w5
.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/home/truber/workspace/jsshell-clang/release/deps" "-L" "/home/truber/workspace/jsshell-clang/release/build/libloading-c37018f8c7086b04/out" "-L" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x8
6_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/truber/workspace/jsshell-clang/release/deps/libbindgen-a7a3f58738fdd1e0.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libwhich-c60fcafaf0fd53b6.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libregex-10bc10afb3b4c264.rlib" "/home/truber/workspace/js
shell-clang/release/deps/libutf8_ranges-ce907b364b6c3f34.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libregex_syntax-6f30280e4ed8ae1c.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libucd_util-d87784468f64cba1.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libthread_local-8b2c6bf5c2c7d6
f7.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libunreachable-3e74b077e0adc79a.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libvoid-8a3aa3a72d816f72.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libaho_corasick-02653ceebcb7aa21.rlib" "/home/truber/workspace/jsshell-clang/release/deps
/libquote-ece379492b339309.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libproc_macro2-3b7862c7a1a8b4bf.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libunicode_xid-aba69f2c08a6bac1.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/lib
proc_macro-e876e6d1d8782cba.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libpeeking_take_while-00bc061f2601b0fe.rlib" "/home/truber/workspace/jsshell-clang/release/deps/liblazy_static-848e1b812f718719.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libclang_sys-95bd496e0c45c1ad.rlib" "/home/truber/
workspace/jsshell-clang/release/deps/liblibloading-9edb13382fe63ec0.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libglob-0a4f40d051e032ff.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libcfg_if-527bdd5a2add00ba.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libcexpr-e06d2562fbf6a5bf.rli
b" "/home/truber/workspace/jsshell-clang/release/deps/libnom-9a87b16c33dae7b7.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libmemchr-3872c4a6cf8b5e38.rlib" "/home/truber/workspace/jsshell-clang/release/deps/liblibc-5ba11fface4eedce.rlib" "/home/truber/workspace/jsshell-clang/release/deps/libbitflags-1581005
a2624c0ac.rlib" "-Wl,--start-group" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-dd4752c70d4ce71d.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e04840eda0100e05.rlib" "/h
ome/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-16bfb4d182748e63.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-185d9b81685a2f08.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-
unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-4806247fe4c34e64.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-879310dc3b96af61.rlib" "-Wl,--end-group" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustl
ib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d0572f7a936161bf.rlib" "-Wl,-Bdynamic" "-ldl" "-lutil" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
  = note: /home/truber/workspace/jsshell-clang/release/deps/liblibloading-9edb13382fe63ec0.rlib(global_static.o): In function `__llvm_gcov_writeout':
          global_static.c:(.text.__llvm_gcov_writeout+0x15): undefined reference to `llvm_gcda_start_file'
          global_static.c:(.text.__llvm_gcov_writeout+0x30): undefined reference to `llvm_gcda_emit_function'
          global_static.c:(.text.__llvm_gcov_writeout+0x41): undefined reference to `llvm_gcda_emit_arcs'
          global_static.c:(.text.__llvm_gcov_writeout+0x5f): undefined reference to `llvm_gcda_emit_function'
          global_static.c:(.text.__llvm_gcov_writeout+0x70): undefined reference to `llvm_gcda_emit_arcs'
          global_static.c:(.text.__llvm_gcov_writeout+0x75): undefined reference to `llvm_gcda_summary_info'
          global_static.c:(.text.__llvm_gcov_writeout+0x7b): undefined reference to `llvm_gcda_end_file'
          /home/truber/workspace/jsshell-clang/release/deps/liblibloading-9edb13382fe63ec0.rlib(global_static.o): In function `__llvm_gcov_init':
          global_static.c:(.text.__llvm_gcov_init+0xf): undefined reference to `llvm_gcov_init'
          collect2: error: ld returned 1 exit status


error: aborting due to previous error

error: Could not compile `baldrdash`.

To learn more, run the command again with --verbose.
/home/truber/src/m/u/config/makefiles/rust.mk:210: recipe for target 'force-cargo-library-build' failed

With GCC:

   Compiling baldrdash v0.1.0 (/home/truber/src/m/u/js/src/wasm/cranelift)
error: linking with `/home/truber/src/m/u/build/cargo-linker` failed: exit code: 1
  |
  = note: "/home/truber/src/m/u/build/cargo-linker" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/truber/workspace/jsshell-gcc/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.build_script_build.25k5epve-cgu.0.rcgu.o" "-o" "/home/truber/workspace/jsshell-gcc/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f" "/home/truber/workspace/jsshell-gcc/release/build/baldrdash-ef134a4e016bda5f/build_script_build-ef134a4e016bda5f.28sxc27jwkzuy3w5.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/home/truber/workspace/jsshell-gcc/release/deps" "-L" "/home/truber/workspace/jsshell-gcc/release/build/libloading-c37018f8c7086b04/out" "-L" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/truber/workspace/jsshell-gcc/release/deps/libbindgen-a7a3f58738fdd1e0.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libwhich-c60fcafaf0fd53b6.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libregex-10bc10afb3b4c264.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libutf8_ranges-ce907b364b6c3f34.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libregex_syntax-6f30280e4ed8ae1c.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libucd_util-d87784468f64cba1.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libthread_local-8b2c6bf5c2c7d6f7.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libunreachable-3e74b077e0adc79a.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libvoid-8a3aa3a72d816f72.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libaho_corasick-02653ceebcb7aa21.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libquote-ece379492b339309.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libproc_macro2-3b7862c7a1a8b4bf.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libunicode_xid-aba69f2c08a6bac1.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libproc_macro-e876e6d1d8782cba.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libpeeking_take_while-00bc061f2601b0fe.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/liblazy_static-848e1b812f718719.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libclang_sys-95bd496e0c45c1ad.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/liblibloading-9edb13382fe63ec0.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libglob-0a4f40d051e032ff.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libcfg_if-527bdd5a2add00ba.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libcexpr-e06d2562fbf6a5bf.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libnom-9a87b16c33dae7b7.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libmemchr-3872c4a6cf8b5e38.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/liblibc-5ba11fface4eedce.rlib" "/home/truber/workspace/jsshell-gcc/release/deps/libbitflags-1581005a2624c0ac.rlib" "-Wl,--start-group" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-dd4752c70d4ce71d.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e04840eda0100e05.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-16bfb4d182748e63.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-185d9b81685a2f08.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-4806247fe4c34e64.rlib" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-879310dc3b96af61.rlib" "-Wl,--end-group" "/home/truber/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d0572f7a936161bf.rlib" "-Wl,-Bdynamic" "-ldl" "-lutil" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
  = note: /usr/lib/gcc/x86_64-linux-gnu/6/libgcov.a(_gcov.o):function __gcov_init: error: undefined reference to 'atexit'
          collect2: error: ld returned 1 exit status


error: aborting due to previous error

error: Could not compile `baldrdash`.
Flags: needinfo?(mh+mozilla)

What is your build setup? (environment variables, configure flags, etc.)

Flags: needinfo?(mh+mozilla)

For Clang:

CC="clang-6.0 -g --coverage" \
CXX="clang++-6.0 -g --coverage" \
HOST_CC="clang-6.0 -g --coverage" \
HOST_CXX="clang++-6.0 -g --coverage" \
AR=ar \
$MC/js/src/configure \
--disable-debug \
--disable-jemalloc \
--disable-profiling \
--disable-tests \
--enable-address-sanitizer \
--enable-fuzzing \
--enable-gczeal \
--enable-optimize=-O2 \
--enable-posix-nspr-emulation \
--enable-valgrind

For GCC:

CC="gcc-6 --coverage -g" \
CXX="g++-6 --coverage -g" \
HOST_CC="gcc-6" \
HOST_CXX="g++-6" \
AR=ar \
$MC/js/src/configure \
--disable-debug \
--disable-profiling
--disable-tests \
--enable-coverage \
--enable-gczeal \
--enable-optimize \
--enable-posix-nspr-emulation \
--enable-valgrind

You're shooting yourself in the foot by having --coverage in CC/CXX/HOST_CC/HOST_CXX. You should use CFLAGS/CXXFLAGS/LDFLAGS instead (and avoid passing --coverage in HOST_CFLAGS/HOST_CXXFLAGS). You probably also need to pass --enable-coverage to your clang build. Eventually, bug 1476339 will remove the need to set CFLAGS. (You also don't need -g)

Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → INVALID

I've applied the fixes in our build configs and builds are green now. Thanks :glandium and :truber for figuring this out.

You need to log in before you can comment on or make changes to this bug.