Skip to content

Bad relocation on x86_64-apple-darwin with reqwest #338

@nicholascioli

Description

@nicholascioli

Given the following Cargo.toml

[package]
name = "minimal"
version = "0.1.0"
edition = "2024"

[dependencies]
reqwest = { version = "0.12.15", default-features = false, features = [] }

And minimal main.rs:

fn main() {
    let client = reqwest::Client::new();
}

When compiling a release build targeting x86_64-apple-darwin, I get the following error:

$ cargo zigbuild --release --target x86_64-apple-darwin
error: linking with `/tmp/cache/cargo-zigbuild/cargo-zigbuild/0.20.0/zigcc-x86_64-apple-darwin-ceb.sh` failed: exit status: 1
  |
  = note:  "/tmp/cache/cargo-zigbuild/cargo-zigbuild/0.20.0/zigcc-x86_64-apple-darwin-ceb.sh" "/var/folders/qf/hsgg8cb555dd0bstk25nx20h0000gp/T/rustcRyxrxF/symbols.o" "<2 object files omitted>" "/Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps/{libreqwest-77290ca4f0d47d0d.rlib,libserde_urlencoded-5f054be064d6ced5.rlib,libryu-c6452b8c272acc08.rlib,libbase64-1b7b3df991b0a9fb.rlib,libipnet-cc4db0699de5b7b3.rlib,libserde-73db20060fd58701.rlib,libtower-11c851bc8d88f37c.rlib,libsync_wrapper-9e1e5ebf21c761cb.rlib,libtower_layer-0eeb490daafc502f.rlib,libhyper_util-cca6bf10c4e558aa.rlib,libtower_service-a45514e194c24e96.rlib,libtracing-99a6ed94f1415194.rlib,libtracing_core-c18676a639748149.rlib,libonce_cell-f1ba7f093cb9ed57.rlib,libhyper-c6f31e944c507a65.rlib,libwant-06e5169961ea777a.rlib,libtry_lock-a0930aeeba444251.rlib,libhttparse-1d1bba6f6f485e49.rlib,libfutures_channel-4c4a16b9924d8207.rlib,libfutures_util-9ed7b170dcbebcb2.rlib,libfutures_task-d4f5e8a704203c34.rlib,libpin_utils-616fdece8a10ad96.rlib,libtokio-0b87380e67b0e4c3.rlib,libsocket2-4f6d4928a2315a9b.rlib,libmio-26d295626173ebf4.rlib,liblibc-eb3d359fc90cd9c9.rlib,libhttp_body_util-ab2806c530659850.rlib,libpin_project_lite-6b42e079266c8c86.rlib,libfutures_core-5366e903ffea48ca.rlib,libhttp_body-9843abac0da22329.rlib,liblog-69e2e26827333add.rlib,liburl-57b946ee5b4c87c1.rlib,libidna-58706e264f158ed5.rlib,libutf8_iter-6dc8b7e42a14cffc.rlib,libidna_adapter-cc5e8ded268b0a91.rlib,libicu_properties-5f514d9cc83078ae.rlib,libicu_properties_data-162eb24bb3fe524a.rlib,libicu_normalizer-1da3fb1aeb698a87.rlib,libsmallvec-0d08d4bf282d1f87.rlib,libicu_normalizer_data-14daa7b6178d4ea2.rlib,libicu_collections-5d7aa27669becc11.rlib,libpotential_utf-88b734770b41740b.rlib,libicu_provider-233b377e75234250.rlib,libicu_locale_core-346d1de8041ee586.rlib,libtinystr-56be0867b56566c2.rlib,liblitemap-93cdb18194369113.rlib,libwriteable-1f39bb6053e03557.rlib,libzerovec-5901d21b63e75d9a.rlib,libzerotrie-5d3fdb0db84c29f0.rlib,libyoke-d1828568178ce75f.rlib,libstable_deref_trait-82895dfbf59df924.rlib,libzerofrom-7a741bf683da3002.rlib,libform_urlencoded-5f94c6bd543c93aa.rlib,libpercent_encoding-acc8388481ec2df0.rlib,libhttp-74431e2ad3df3ffd.rlib,libitoa-6eb8f6d164525d22.rlib,libbytes-9e8a4c9f774a6c41.rlib,libfnv-8c5d784aff52517a.rlib}.rlib" "<sysroot>/lib/rustlib/x86_64-apple-darwin/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,libcfg_if-*,liblibc-*,liballoc-*,librustc_std_workspace_core-*,libcore-*,libcompiler_builtins-*}.rlib" "-liconv" "-lSystem" "-lc" "-lm" "-arch" "x86_64" "-mmacosx-version-min=10.12.0" "-o" "/Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps/minimal-23beaa379306239c" "-Wl,-dead_strip" "-nodefaultlibs"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
          error: __TEXT,__const: 0x74c: bad relocation
              note: while parsing /Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps/libhyper-c6f31e944c507a65.rlib(hyper-c6f31e944c507a65.hyper.27398baab093d338-cgu.00.rcgu.o)


warning: `minimal` (bin "minimal") generated 1 warning
error: could not compile `minimal` (bin "minimal") due to 1 previous error; 1 warning emitted

Caused by:
  process didn't exit successfully: `/nix/store/hxylwnn6sr0f6h88qrj3kr0s5pawnwn2-sccache-0.10.0/bin/sccache /Users/local/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rustc --crate-name minimal --edition=2024 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=197 --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=efab1efecfac19b0 -C extra-filename=-23beaa379306239c --out-dir /Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps --target x86_64-apple-darwin -C linker=/tmp/cache/cargo-zigbuild/cargo-zigbuild/0.20.0/zigcc-x86_64-apple-darwin-ceb.sh -C strip=debuginfo -L dependency=/Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps -L dependency=/Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/release/deps --extern reqwest=/Users/local/Documents/Code/x86_64-minimal-repro/crates/minimal/target/x86_64-apple-darwin/release/deps/libreqwest-77290ca4f0d47d0d.rlib` (exit status: 1)

Interestingly enough, compiling a non-release build works without issue.

Version Dump

$ cargo --version
cargo 1.86.0 (adf9b6ad1 2025-02-28)

$ rustc --version
rustc 1.86.0 (05f9846f8 2025-03-31)

$ zig version
0.14.0

$ cargo-zigbuild --version
cargo-zigbuild 0.20.0

$ /usr/libexec/PlistBuddy \
  -c "Print:ProductName" \
  -c "Print:ProductVersion" /System/Library/CoreServices/SystemVersion.plist
macOS
15.4.1

$ uname -m
arm64

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions