-
Notifications
You must be signed in to change notification settings - Fork 526
Description
Between cc
1.0.79 and 1.0.80 the "no-std test with ASAN" CI test in rust-secp256k1 stopped working. There was a six-month gap in this release but nothing major or dramatic happened. Bisection tells me that the problem started occurring after the merge of #780.
The error I get is during build, and looks like
Compiling no_std_test v0.1.0 (/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test)
Running `/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name no_std_test src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=123 --crate-type bin --emit=dep-info,link -C opt-level=3 -C panic=abort -C embed-bitcode=no -C metadata=1293a4e6b7efff78 -C extra-filename=-1293a4e6b7efff78 --out-dir /store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps -L dependency=/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps --extern libc=/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/liblibc-5de6dfcb24ee9f89.rlib --extern secp256k1=/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libsecp256k1-5c90214252d1cafe.rlib --extern serde_cbor=/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libserde_cbor-b92effaf107035cb.rlib -L native=/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/build/secp256k1-sys-cfb84e400e95762c/out`
error: linking with `cc` failed: exit status: 1
|
= note: LC_ALL="C" PATH="/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/store/home/apoelstra/.cargo/bin:/store/home/apoelstra/bin:/store/home/apoelstra/.idris2/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/store/home/apoelstra/.local/bin:/store/home/apoelstra/.cabal/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustchhL2Pf/symbols.o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-1293a4e6b7efff78.no_std_test.87cf14f7b6e6638a-cgu.0.rcgu.o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-1293a4e6b7efff78.no_std_test.87cf14f7b6e6638a-cgu.1.rcgu.o" "-Wl,--as-needed" "-L" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps" "-L" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/build/secp256k1-sys-cfb84e400e95762c/out" "-L" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libserde_cbor-b92effaf107035cb.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libhalf-e6655c99ab38f9c5.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libbyteorder-5fc3ce4f7f805d99.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libsecp256k1-5c90214252d1cafe.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/librand-ebdb156e0d3d08a3.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/librand_core-aa5db4de6c0d4a69.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libsecp256k1_sys-a96dfb2f870f90d5.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libserde-084022b6fd934a86.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/liblibc-5de6dfcb24ee9f89.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-cd2f2bc505f56f50.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-ec02dd343723da85.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-00ae71943a8bc9aa.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-1293a4e6b7efff78" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs"
= note: /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../lib/Scrt1.o: in function `_start':
(.text+0x21): undefined reference to `__libc_start_main'
/usr/bin/ld: /store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-1293a4e6b7efff78.no_std_test.87cf14f7b6e6638a-cgu.1.rcgu.o: in function `core::fmt::Write::write_char':
no_std_test.87cf14f7b6e6638a-cgu.1:(.text._ZN4core3fmt5Write10write_char17h3bde70e0b60d9d00E+0xda): undefined reference to `memcpy'
<snip>
where the snipped output is a pile of more "cannot find memcpy
" type errors from various crates, including libcore. If I compile with 57853c4, the previous commit before this one, and force a linker error by adding an unimplemented function (not sure how else to get the exact cc
command), the outputt looks like
= note: LC_ALL="C" PATH="/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/store/home/apoelstra/.cargo/bin:/store/home/apoelstra/bin:/store/home/apoelstra/.idris2/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/store/home/apoelstra/.local/bin:/store/home/apoelstra/.cabal/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustc3zNS0N/symbols.o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-2f327716e2f5651f.no_std_test.a728628877dda375-cgu.0.rcgu.o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-2f327716e2f5651f.no_std_test.a728628877dda375-cgu.1.rcgu.o" "-Wl,--as-needed" "-L" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps" "-L" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/build/secp256k1-sys-9dd44ba92659f6c7/out" "-L" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libserde_cbor-b92effaf107035cb.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libhalf-e6655c99ab38f9c5.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libbyteorder-5fc3ce4f7f805d99.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libsecp256k1-b0ad93fc3995ce88.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/librand-ebdb156e0d3d08a3.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/librand_core-aa5db4de6c0d4a69.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libsecp256k1_sys-eacd782dd019dfc5.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/libserde-084022b6fd934a86.rlib" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/liblibc-3070fa89807530f5.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-cd2f2bc505f56f50.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-ec02dd343723da85.rlib" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-00ae71943a8bc9aa.rlib" "-Wl,-Bdynamic" "-lc" "-lm" "-lrt" "-lpthread" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/store/home/apoelstra/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/store/home/apoelstra/code/rust-bitcoin/rust-secp256k1/pr-review/no_std_test/target/release/deps/no_std_test-2f327716e2f5651f" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs"
If you compare these two invocations you will see that the latter has -lc
-lm
-lrt
-lpthread
while the former does not. I guess that -lc
is what's causing errors related to memcpy being undefined.
I've read the code in this PR a few times and can't see any way that it would cause these linker flags to get dropped, but empirically that's what appears to be happening.
Originally posted by @apoelstra in #780 (comment)