Skip to content

Conversation

greenhat
Copy link
Contributor

@greenhat greenhat commented Aug 28, 2025

Close #532
Close #531
Close #341

Corresponding template repo PR - 0xMiden/rust-templates#20

Changes in this PR:

  • Add lowering for Rust “linker stubs” (functions whose body is just unreachable) to MASM calls. Stubs are identified by fully qualified MASM symbol names.
  • Remove legacy Wasm CM import rewriting: imports of intrinsics/SDK/stdlib are now expected to flow through linker stubs rather than Wasm CM imports.
  • SDK sys crates: retarget extern link names to canonical MASM symbols. Provide unreachable stubs exporting those symbols; add build.rs to emit small static archives. Allocator now links to intrinsics::mem::heap_base; adds its own unreachable stub + build.rs archive;
  • Miden SDK crates have separate versioning with their versions set to v0.5.0.

Note: I recommend reviewing this PR per commit. Keep in mind that initially I did one big stub library linking in cargo-miden and then moved it to the build.rs in the relevant crates with bindings.

@greenhat
Copy link
Contributor Author

@bitwalker I've tried with add_asset as an example. I'm pretty sure it should all work out. Let me know if I missed something.

…g from

the `cargo-miden` to the `miden-stdlib-sys`, `miden-base-sys` and `miden-sdk-alloc` crates build.rs build script.
@greenhat greenhat force-pushed the greenhat/i532-undefined-stub branch from 1688716 to 23a1345 Compare September 5, 2025 11:16
@greenhat greenhat marked this pull request as ready for review September 5, 2025 15:06
@greenhat greenhat requested a review from bitwalker September 5, 2025 15:06
@greenhat greenhat marked this pull request as draft September 8, 2025 15:22
@greenhat
Copy link
Contributor Author

greenhat commented Sep 9, 2025

@bitwalker I've tried putting the absolute path in cargo:rustc-link-lib= and got:

= note: "wasm-component-ld" "-flavor" "wasm" "--export" "miden:counter-contract/[email protected]#get-count" "--export" "miden:counter-contract/[email protected]#increment-count" "-z" "stack-size=1048576" "--stack-first" "--allow-undefined" "--no-demangle" "<2 object files omitted>" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/deps/{libwit_bindgen_rt-16ff1bd05fdeee75,libmiden-20facf7236ffc3a2,libmiden_sdk_alloc-6d1aad4ffaeee370,libmiden_base-3d0244c6049bc738,libmiden_base_sys-77d5e9ccdd08b24c,libmiden_stdlib_sys-05e41bc6bf31c083,liballoc-183a8ae8f4dddade,libcore-0f8b392b2a22cb35,libcompiler_builtins-bcac1ff194d77167}.rlib" "-l" "wit_bindgen_cabi_realloc0_28_0" "-l" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/build/miden-base-sys-57d0d33cd85a9b78/out/miden_base_sys_stubs.rlib" "-L" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/build/miden-stdlib-sys-f0725d73fbde8b3a/out" "-L" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/build/miden-sdk-alloc-ba2bef2eebd34832/out" "-L" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/build/wit-bindgen-rt-80618d9455efd17a/out" "-L" "<sysroot>/lib/rustlib/wasm32-wasip2/lib/self-contained" "-o" "/Users/green/src/miden/compiler/target/wasm32-wasip2/release/deps/counter_contract.wasm" "--gc-sections" "--no-entry" "-O2" "--strip-debug"
= note: some arguments are omitted. use --verbose to show all linker arguments
= note: rust-lld: error: unable to find library -l/Users/green/src/miden/compiler/target/wasm32-wasip2/release/build/miden-base-sys-57d0d33cd85a9b78/out/miden_base_sys_stubs.rlib
error: failed to invoke LLD: exit status: 1

Disabling cargo:rustc-link-search=native= does not help. I'm out of ideas.

@greenhat greenhat marked this pull request as ready for review September 9, 2025 06:38
@greenhat
Copy link
Contributor Author

@bitwalker WARNING: When this PR is merged the new miden crate will break the users projects due to the new project templates using miden dependency specifying only git and not version. We need to either do #628 before merging this PR or publish a new version v0.4.2 of the compiler ASAP after we merge it.

@greenhat
Copy link
Contributor Author

@bitwalker WARNING: When this PR is merged the new miden crate will break the users projects due to the new project templates using miden dependency specifying only git and not version. We need to either do #628 before merging this PR or publish a new version v0.4.2 of the compiler ASAP after we merge it.

I think I found a better solution. I described it in #628 (comment)

@greenhat greenhat marked this pull request as draft September 16, 2025 06:55
@greenhat
Copy link
Contributor Author

@bitwalker Still, no luck. When I put the .rlib absolute path in miden-base-sys crate's build.rs println!("cargo:rustc-link-lib=static={}", out_rlib.display()); I got the error:

error: could not find native static library
`/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-base-sys-a4a1d6c79b9d004c/out/miden_base_sys_stubs.a`,
perhaps an -L flag is missing?`

And the cargo log:

--------------------------------------------------------------------------
0.349385916s DEBUG main:exec:compile_ws:compile:execute:
cargo::core::compiler::job_queue: end (Unit { pkg: Package { id: PackageId {
name: "miden-base-sys", version: "0.4.1", source:
"/Users/green/src/miden/compiler2/sdk/base-sys" }, ..: ".." }, target:
TargetInner { name_inferred: true, ..: lib_target("miden_base_sys", ["lib"],
"/Users/green/src/miden/compiler2/sdk/base-sys/src/lib.rs", Edition2021) },
profile: Profile { opt_level: "z", panic: Abort, strip:
Resolved(Named("debuginfo")), trim_paths: Some(Values([Diagnostics, Object])),
..: default_release() }, kind: Target(CompileTarget { name: "wasm32-wasip2" }),
mode: Build, features: ["default"], rustflags: ["-C", "link-args=--verbose",
"-C", "target-feature=+bulk-memory,+wide-arithmetic,", "-C",
"link-args=--fatal-warnings", "-C", "link-args=--verbose"], rustdocflags: [],
links_overrides: {}, artifact: false, artifact_target_for_features: None,
is_std: false, dep_hash: 580520302262064201 }): Err(could not compile
`miden-base-sys` (lib) due to 1 previous error; 1 warning emitted

Caused by: process didn't exit successfully:
`/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/bin/rustc
--crate-name miden_base_sys --edition=2021
/Users/green/src/miden/compiler2/sdk/base-sys/src/lib.rs --error-format=json
--json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib
--emit=dep-info,metadata,link -C opt-level=z -C panic=abort -C embed-bitcode=no
-Zunstable-options -Zremap-path-scope=diagnostics,object
--remap-path-prefix=/Users/green/src/miden/compiler2/sdk/base-sys=miden-base-sys-0.4.1
--remap-path-prefix=/Users/green/src/miden/compiler2/target=/cargo/build-dir
--remap-path-prefix=/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/lib/rustlib/src/rust=/rustc/0d9592026226f5a667a0da60c13b955e0b486a07
--cfg 'feature="default"' --check-cfg 'cfg(docsrs,test)' --check-cfg
'cfg(feature, values("default"))' -C metadata=9c6c332283690b5e -C
extra-filename=-4a2851a9c04e7cb7 --out-dir
/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps --target
wasm32-wasip2 -C strip=debuginfo -L
dependency=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps
-L dependency=/Users/green/src/miden/compiler2/target/release/deps --extern
'noprelude:alloc=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/liballoc-c69821826601cd14.rmeta'
--extern
'noprelude:compiler_builtins=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libcompiler_builtins-4c161fbe627aa826.rmeta'
--extern
'noprelude:core=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libcore-d83d12a7ee4bdefc.rmeta'
--extern
miden_stdlib_sys=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libmiden_stdlib_sys-cc7f949cd28e28bd.rmeta
--extern
'noprelude:panic_abort=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libpanic_abort-5c8af94dc019c5ff.rmeta'
--extern
'noprelude:panic_unwind=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libpanic_unwind-b23077f911778778.rmeta'
--extern
'noprelude:proc_macro=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libproc_macro-0cf7a065e609483f.rmeta'
--extern
'noprelude:std=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libstd-2313fdf2e48bc220.rmeta'
-Z unstable-options -C link-args=--verbose -C
target-feature=+bulk-memory,+wide-arithmetic, -C link-args=--fatal-warnings -C
link-args=--verbose -L
native=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-base-sys-a4a1d6c79b9d004c/out
-L
native=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-stdlib-sys-11b1f8e55f41377c/out
-l
static=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-base-sys-a4a1d6c79b9d004c/out/miden_base_sys_stubs.rlib`
(exit status: 1)) 0.349427625s DEBUG main:exec:compile_ws:compile:execute:
cargo: display_error; err=could not compile `miden-base-sys` (lib) due to 1
previous error; 1 warning emitted

Caused by: process didn't exit successfully:
`/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/bin/rustc
--crate-name miden_base_sys --edition=2021
/Users/green/src/miden/compiler2/sdk/base-sys/src/lib.rs --error-format=json
--json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib
--emit=dep-info,metadata,link -C opt-level=z -C panic=abort -C embed-bitcode=no
-Zunstable-options -Zremap-path-scope=diagnostics,object
--remap-path-prefix=/Users/green/src/miden/compiler2/sdk/base-sys=miden-base-sys-0.4.1
--remap-path-prefix=/Users/green/src/miden/compiler2/target=/cargo/build-dir
--remap-path-prefix=/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/lib/rustlib/src/rust=/rustc/0d9592026226f5a667a0da60c13b955e0b486a07
--cfg 'feature="default"' --check-cfg 'cfg(docsrs,test)' --check-cfg
'cfg(feature, values("default"))' -C metadata=9c6c332283690b5e -C
extra-filename=-4a2851a9c04e7cb7 --out-dir
/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps --target
wasm32-wasip2 -C strip=debuginfo -L
dependency=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps
-L dependency=/Users/green/src/miden/compiler2/target/release/deps --extern
'noprelude:alloc=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/liballoc-c69821826601cd14.rmeta'
--extern
'noprelude:compiler_builtins=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libcompiler_builtins-4c161fbe627aa826.rmeta'
--extern
'noprelude:core=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libcore-d83d12a7ee4bdefc.rmeta'
--extern
miden_stdlib_sys=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libmiden_stdlib_sys-cc7f949cd28e28bd.rmeta
--extern
'noprelude:panic_abort=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libpanic_abort-5c8af94dc019c5ff.rmeta'
--extern
'noprelude:panic_unwind=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libpanic_unwind-b23077f911778778.rmeta'
--extern
'noprelude:proc_macro=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libproc_macro-0cf7a065e609483f.rmeta'
--extern
'noprelude:std=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/deps/libstd-2313fdf2e48bc220.rmeta'
-Z unstable-options -C link-args=--verbose -C
target-feature=+bulk-memory,+wide-arithmetic, -C link-args=--fatal-warnings -C
link-args=--verbose -L
native=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-base-sys-a4a1d6c79b9d004c/out
-L
native=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-stdlib-sys-11b1f8e55f41377c/out
-l
static=/Users/green/src/miden/compiler2/target/wasm32-wasip2/release/build/miden-base-sys-a4a1d6c79b9d004c/out/miden_base_sys_stubs.rlib`
(exit status: 1) error: could not compile `miden-base-sys` (lib) due to 1
previous error; 1 warning emitted
--------------------------------------------------------------------------

Which seems to be happening during the miden-base build. Changing the .rlib extension to .a does not change the error.
To reproduce, patch sdk/base-sys/build.rs with the patch below and run cargo test basic_wallet_and_p2id.

diff --git a/sdk/base-sys/build.rs b/sdk/base-sys/build.rs
index 3589991b..34bf7002 100644
--- a/sdk/base-sys/build.rs
+++ b/sdk/base-sys/build.rs
@@ -79,6 +79,7 @@ fn main() {
     // bringing in panic symbols.
     let out_static = out_dir.join("libmiden_base_sys_stubs.a");
     let out_obj = out_dir.join("miden_base_sys_stubs.o");
+    let out_rlib = out_dir.join("miden_base_sys_stubs.a");
 
     // Ensure tools are present before invoking them.
     ensure_rust_ar();
@@ -114,9 +115,10 @@ fn main() {
         .arg("merge-functions=disabled")
         .arg("-C")
         .arg("target-feature=+bulk-memory,+wide-arithmetic")
-        .arg("--emit=obj")
+        // .arg("--emit=obj")
         .arg("-o")
-        .arg(&out_obj)
+        // .arg(&out_obj)
+        .arg(&out_rlib)
         .arg(&src_root)
         .status()
         .expect("failed to spawn rustc for base stubs object");
@@ -125,17 +127,18 @@ fn main() {
     }
 
     // 2) Archive
-    let status = Command::new("rust-ar")
-        .arg("crs")
-        .arg(&out_static)
-        .arg(&out_obj)
-        .status()
-        .expect("failed to spawn ar for base stubs");
-    if !status.success() {
-        panic!("failed to archive miden-base-sys stubs: {status}");
-    }
+    // let status = Command::new("rust-ar")
+    //     .arg("crs")
+    //     .arg(&out_static)
+    //     .arg(&out_obj)
+    //     .status()
+    //     .expect("failed to spawn ar for base stubs");
+    // if !status.success() {
+    //     panic!("failed to archive miden-base-sys stubs: {status}");
+    // }
 
     // Emit link directives for dependents
     println!("cargo:rustc-link-search=native={}", out_dir.display());
-    println!("cargo:rustc-link-lib=static=miden_base_sys_stubs");
+    // println!("cargo:rustc-link-lib=static=miden_base_sys_stubs");
+    println!("cargo:rustc-link-lib=static={}", out_rlib.display());
 }

@greenhat greenhat marked this pull request as ready for review September 16, 2025 10:56
@greenhat greenhat marked this pull request as draft September 16, 2025 11:07
@greenhat greenhat marked this pull request as ready for review September 16, 2025 12:12
@bitwalker bitwalker merged commit f4caede into next Sep 17, 2025
12 checks passed
@bitwalker bitwalker deleted the greenhat/i532-undefined-stub branch September 17, 2025 11:53
@greenhat
Copy link
Contributor Author

@bitwalker

static

I tried renaming the .rlib to .a as we discussed on Friday and got the following error:

    error: could not find native static library `libmiden_base_sys_stubs`, perhaps an -L flag is missing?

       0.379340292s TRACE main:exec:compile_ws:compile:execute: cargo::core::compiler::job_queue: end: JobId(184)
    warning: `miden-base-sys` (lib) generated 1 warning (1 duplicate)

    Caused by:
        process didn't exit successfully:
`/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/bin/rustc
--crate-name miden_base_sys --edition=2021
/Users/green/src/miden/compiler5/sdk/base-sys/src/lib.rs --error-format=json
--json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib
--emit=dep-info,metadata,link -C opt-level=z -C panic=abort -C embed-bitcode=no
-Zunstable-options -Zremap-path-scope=diagnostics,object
--remap-path-prefix=/Users/green/src/miden/compiler5/sdk/base-sys=miden-base-sys-0.5.0
--remap-path-prefix=/Users/green/src/miden/compiler5/target=/cargo/build-dir
--remap-path-prefix=/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/lib/rustlib/src/rust=/rustc/0d9592026226f5a667a0da60c13b955e0b486a07
--cfg 'feature="default"' --check-cfg 'cfg(docsrs,test)' --check-cfg
'cfg(feature, values("default"))' -C metadata=f83af781750ae591 -C
extra-filename=-ac3e92d5c037fa5c --out-dir
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps --target
wasm32-wasip2 -C strip=debuginfo -L
dependency=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps
-L dependency=/Users/green/src/miden/compiler5/target/release/deps --extern
'noprelude:alloc=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/liballoc-39944980c9756e99.rmeta'
--extern
'noprelude:compiler_builtins=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcompiler_builtins-c9a6f218d9f26a5e.rmeta'
--extern
'noprelude:core=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcore-d4db4a6654ec6cd4.rmeta'
--extern
miden_stdlib_sys=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_stdlib_sys-2e8a2e083de38950.rmeta
--extern
'noprelude:panic_abort=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libpanic_abort-b65e2e4f7703e37d.rmeta'
--extern
'noprelude:panic_unwind=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libpanic_unwind-e0d33a2eb993afb7.rmeta'
--extern
'noprelude:proc_macro=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libproc_macro-1c2c87fff9dd95bd.rmeta'
--extern
'noprelude:std=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libstd-d68c6270f546cb89.rmeta'
-Z unstable-options -C link-args=--verbose -C
target-feature=+bulk-memory,+wide-arithmetic -C link-args=--fatal-warnings -L
native=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/miden-base-sys-d325d6aa8f52b31a/out
-L
native=/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/miden-stdlib-sys-8ece94c08bda2090/out
-l static=libmiden_base_sys_stubs` (exit status: 1))

I checked and -L points to the correct folder and there is an "rlib" file libmiden_base_sys_stubs.a. Apparently, it does not recognize .rlib as .a.

No static

I tried removing static and got the following error:

= note: running "rust-lld" "-flavor" "wasm"
"--export=miden:basic-wallet/[email protected]#move-asset-to-note"
"--export=miden:basic-wallet/[email protected]#receive-asset" "-z"
"stack-size=1048576" "--stack-first" "--allow-undefined" "--no-demangle"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/basic_wallet.basic_wallet.296c049e3394c64-cgu.0.rcgu.o"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/basic_wallet.5d2r0alq3mq61t4rk2uuak6fk.rcgu.o"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libwit_bindgen_rt-9fb98d885a63aa6e.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden-69f243becc43cf32.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_sdk_alloc-ed1e9835ff3ce3ce.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_base-e261fda1f75d85c5.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_base_sys-ac3e92d5c037fa5c.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_stdlib_sys-2e8a2e083de38950.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/liballoc-39944980c9756e99.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcore-d4db4a6654ec6cd4.rlib"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcompiler_builtins-c9a6f218d9f26a5e.rlib"
"-l" "wit_bindgen_cabi_realloc0_28_0" "-l" "libmiden_base_sys_stubs" "-L"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/miden-base-sys-d325d6aa8f52b31a/out"
"-L"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/miden-stdlib-sys-8ece94c08bda2090/out"
"-L"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/miden-sdk-alloc-1751467864c80e56/out"
"-L"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/wit-bindgen-rt-7422d1a6148caa16/out"
"-L"
"/Users/green/.rustup/toolchains/nightly-2025-07-20-aarch64-apple-darwin/lib/rustlib/wasm32-wasip2/lib/self-contained"
"--gc-sections" "--no-entry" "-O" "2" "--strip-debug" "--fatal-warnings"
"--verbose" "-o"
"/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/.tmp4kPrz0/basic_wallet.wasm"
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/basic_wallet.basic_wallet.296c049e3394c64-cgu.0.rcgu.o
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/basic_wallet.5d2r0alq3mq61t4rk2uuak6fk.rcgu.o
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libwit_bindgen_rt-9fb98d885a63aa6e.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden-69f243becc43cf32.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_sdk_alloc-ed1e9835ff3ce3ce.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_base-e261fda1f75d85c5.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_base_sys-ac3e92d5c037fa5c.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libmiden_stdlib_sys-2e8a2e083de38950.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/liballoc-39944980c9756e99.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcore-d4db4a6654ec6cd4.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/deps/libcompiler_builtins-c9a6f218d9f26a5e.rlib
rust-lld: Loading:
/Users/green/src/miden/compiler5/target/wasm32-wasip2/release/build/wit-bindgen-rt-7422d1a6148caa16/out/libwit_bindgen_cabi_realloc0_28_0.a
rust-lld: error: unable to find library -llibmiden_base_sys_stubs error: failed
to invoke LLD: exit status: 1

@bitwalker
Copy link
Collaborator

Just following up here with my comment from Slack, but the issue here is that we're specifying the wrong library name, it should be -l static=miden_base_sys_stubs rather than -l static=libmiden_base_sys_stubs, because rustc is adding in the lib prefix (and .a suffix) itself.

To disable that behavior and control the full filename ourselves, we'd want to do -l static:+verbatim=libmiden_base_sys_stubs.a, but that would likely only be desirable if we want to specify the .rlib filename and avoid renaming the .rlib to .a manually.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants