Skip to content

zig cc: unsupported linker args (--as-needed, -Bstatic, -Bdynamic, and more) #10050

Closed
@philipahlberg

Description

@philipahlberg

Zig Version

0.9.0-dev.1444+e2a2e6c14

Steps to Reproduce

In a nutshell:

$ CC=zig-cc; cargo install ripgrep --target aarch64-unknown-linux-gnu

zig-cc:

#! /bin/sh
zig cc -target aarch64-linux-gnu $@

The list of unsupported linker args is:

  • --as-needed
  • -Bstatic
  • -Bdynamic
  • -znoexecstack
  • -zrelro
  • -znow

See philipahlberg/rust-zig-cc-docker for exact steps to reproduce.

Expected Behavior

It compiles succesfully, installing the binary onto the machine.

Actual Behavior

error: linking with `zig-cc` failed: exit status: 1
  |
  = note: "zig-cc" "-m64" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.0.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.1.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.10.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.11.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.12.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.13.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.14.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.15.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.2.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.3.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.4.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.5.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.6.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.7.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.8.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.rg.06b2166d-cgu.9.rcgu.o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01.3zb7x5h83gps4ewl.rcgu.o" "-Wl,--as-needed" "-L" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps" "-L" "/tmp/cargo-installnriGM3/release/deps" "-L" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libnum_cpus-36e4020310cff317.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep-d44cdc2a83b6f418.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep_regex-d3e18b4a1f63be0a.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep_printer-40ab05ecd46c3ff5.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libbase64-29cc4e04355e990f.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libserde_json-c6b34b534a688d52.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libryu-79e8a334f9d41d46.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libitoa-3ea878dd6c3f39ef.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libserde-2d356b4c07cc2654.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep_searcher-a66c46bc63e18545.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libmemmap2-695259d505f60861.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libencoding_rs_io-05f12fb3fe3540d1.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libencoding_rs-4f1d034d1dfea496.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libbytecount-c6aba2f4e9097a9f.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep_matcher-f2de09a669ddc60b.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libgrep_cli-09f0a207944dc72c.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libatty-6c32e73a59db6c45.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/liblibc-deb81cd183bf489b.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libtermcolor-54eec0f2c345eb5e.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libclap-5740de3b7c246e71.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libtextwrap-76be0833b16f4ded.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libunicode_width-61ed1d1c4af228f1.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libstrsim-87afea28899fb881.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libbitflags-346b928a6373e84f.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libignore-a48e2e9b2c1b9c37.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libcrossbeam_utils-0d4890e416d4cc48.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libwalkdir-041010beb3f43ac9.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libsame_file-e06f8f37e672ac4e.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libthread_local-fe1e38e113f0cc37.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libonce_cell-6bc255586f692b5c.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libglobset-f0dd44c472a216b8.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libfnv-f7ba8d2c0d18870a.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/liblog-d62c0c501a4c0277.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libcfg_if-bce0c30997effda1.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libregex-2cb84b6b69f0a69c.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libregex_syntax-6d75059dd0b825d0.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libbstr-e68ccf328a38811c.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/liblazy_static-9adf3f02eb04fff8.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libregex_automata-17697a180156e98d.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-b2524b2f2f5c9e50.rlib" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/libmemchr-1304c82c3851ad91.rlib" "-Wl,--start-group" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-8adcca4f1427867b.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-8e7e86a00adbd98f.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-b69fd8507c8409af.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-2dff396b99681a6b.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-a78bd5aa183c7115.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-846c64d5a2fbc5ee.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-24c09062b6dc787b.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-ce93f351ca41a57b.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-6db383740f17d227.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-514cb174319eb6d4.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-37c1534c42bc4f8c.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-06d0f7780fda2fd9.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-a847e4fa8cfb7240.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-88bb1ba4dd271224.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-08dbb7feabf67599.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-0b5a376b429677a6.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-2a6a2797f7a73818.rlib" "/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-0e3656b1fda5fd7b.rlib" "-Wl,--end-group" "/usr/local/rustup/toolchains/nightly-aarch64-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-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/tmp/cargo-installnriGM3/x86_64-unknown-linux-gnu/release/deps/rg-963575bbbc333e01" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs"
  = note: warning: unsupported linker arg: --as-needed
          warning: unsupported linker arg: -Bstatic
          warning: unsupported linker arg: -Bdynamic
          warning: unsupported linker arg: -znoexecstack
          warning: unsupported linker arg: -zrelro
          warning: unsupported linker arg: -znow
          ld.lld: error: unable to find library -lgcc_s


error: failed to compile `ripgrep v13.0.0`, intermediate artifacts can be found at `/tmp/cargo-installnriGM3`

Caused by:
  could not compile `ripgrep` due to previous error

Note: the error message is with an aarch64 host targeting x86_64. The description swaps these arround, assuming that is the more common case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementSolving this issue will likely involve adding new logic or components to the codebase.zig ccZig as a drop-in C compiler feature

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions