Skip to content

-C link-arg is being ignored... maybe just in this specific case? #9089

Open
@saurik

Description

@saurik

I'm on macOS (64-bit 10.14.6, if you care) and I'm compiling to x86_64-apple-darwin. I'm trying (and very much failing) to use CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS to set -C link-arg= to something I need to be passed to the compiler for it to choose the correct linker (I'm using a version of clang that selects its own version of ld unless I override it to Apple's ld64 with -fuse-ld=/usr/bin/ld). While CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER does seem to override the linker, and while I know my rustflags are at least being parsed (as if I try to -C something invalid it throws an immediate error), -C link-args is being ignored, which makes me sad :(. (FWIW, using bare RUSTFLAGS doesn't seem to help.)

$ cargo --version
cargo 1.49.0 (d00d64df9 2020-12-05)
$ rustc --version
rustc 1.49.0 (e1884a8e3 2020-12-29)

Here is the repository I happen to be working with:

$ git clone https://github.com/brave-intl/challenge-bypass-ristretto-ffi.git
Cloning into 'challenge-bypass-ristretto-ffi'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 320 (delta 0), reused 0 (delta 0), pack-reused 314
Receiving objects: 100% (320/320), 100.41 KiB | 952.00 KiB/s, done.
Resolving deltas: 100% (174/174), done.
$ cd challenge-bypass-ristretto-ffi

This should fail with an error on --invalid from clang:

$ git clean -fxd && CARGO_TARGET_X86_64_APPLE_DARWIN_RUSTFLAGS='-C link-arg=--invalid' cargo build --verbose --lib --release --target x86_64-apple-darwin -j1
Removing target/
   Compiling typenum v1.12.0
     Running `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow`
   Compiling rand_core v0.4.2
...

I know the triple and CARGO_TARGET_* are "in play":

$ git clean -fxd && CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER=false cargo build --verbose --lib --release --target x86_64-apple-darwin -j1
Removing target/
   Compiling typenum v1.12.0
     Running `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -C linker=false -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow`
error: linking with `false` failed: exit code: 1
  |
  = note: "false" "-m64" "-arch" "x86_64" "-L" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.0.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.1.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.10.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.11.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.12.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.13.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.14.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.15.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.2.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.3.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.4.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.5.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.6.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.7.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.8.rcgu.o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.build_script_main.6p3nhvh5-cgu.9.rcgu.o" "-o" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c/build_script_main-43e81e5495885b7c.3odpmtn7sqjnz0bt.rcgu.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps" "-L" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-518979da66993550.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-f52081aedccc205f.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libobject-bad1c02788187328.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libaddr2line-6375d8dbf53aee9d.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libgimli-0ea8539778b0c0ab.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_demangle-64f30c6d69babb18.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libhashbrown-e27428d997fd2532.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_alloc-f02467a76e5a8054.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-9536efad7116d828.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcfg_if-5ca171f6ec11d7a5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-14b621861b38e51f.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-38f4a0c206512fa5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_core-99bca6ace58141c5.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-72a66f4c97a4c0c8.rlib" "/Users/saurik/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-e7cd9f0beed2fc0f.rlib" "-lSystem" "-lresolv" "-lc" "-lm"
  = note: 

error: aborting due to previous error

error: could not compile `typenum`

Caused by:
  process didn't exit successfully: `rustc --crate-name build_script_main /Users/saurik/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/build/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=43e81e5495885b7c -C extra-filename=-43e81e5495885b7c --out-dir /Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/build/typenum-43e81e5495885b7c -C linker=false -L dependency=/Users/saurik/qq/challenge-bypass-ristretto-ffi/target/release/deps --cap-lints allow` (exit code: 1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-configurationArea: cargo config files and env varsA-linkageArea: linker issues, dylib, cdylib, shared libraries, soC-bugCategory: bugS-triageStatus: This issue is waiting on initial triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions