Coder Social home page Coder Social logo

Comments (10)

rui314 avatar rui314 commented on July 18, 2024 11

It is actually pretty easy to use mold instead of /usr/bin/ld now thanks to the feature that I added recently. Please see https://github.com/rui314/mold#how-to-use. In short, if you run mold -run cargo build instead of cargo build, cargo starts using mold instead of /usr/bin/ld.

from mold.

luciusmagn avatar luciusmagn commented on July 18, 2024 7

that's certified poggers mate

from mold.

petr-tik avatar petr-tik commented on July 18, 2024 1

Curiouser and curioser.

I can successfully link and run tests for rust-analyzer with mold - which is amazing!

petr_tik@merluzon:~/Coding/rust/rust-analyzer master $
git log --oneline | head -1
4be4d2985 Merge #8332

The only thing I had to change was to add a .cargo/config line for clang-11 as the linker.

diff --git a/.cargo/config b/.cargo/config
index 1447614b7..d41b692ec 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -7,3 +7,6 @@ lint = "clippy --all-targets -- -Aclippy::collapsible_if -Aclippy::needless_pass

 [target.x86_64-pc-windows-msvc]
 linker = "rust-lld"
+
+[target.x86_64-unknown-linux-gnu]
+linker = "clang-11"

Build and run the tests like this

RUSTFLAGS='-C link-arg=-fuse-ld=/home/petr_tik/.local/bin/mold' cargo test

All tests pass (stdout truncated)! Just to check that all executables were linked with mold, I ran your readelf command on all executables in the build dir.

# get all executable files that aren't lock files
# use the heuristic that the linker version is inserted at offset (?) 0 in the .comment section of the executable
find target/debug/ -type f -executable -not -iname '*.lock' | xargs readelf -p .comment | rg "0\]"
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61

I would be happy to benchmark how much of an improvement this makes to overall build times. What's the best way to try benchmark build times when linking normally vs with mold?

Thanks again for all your work - the fact it's so simple to drop into the cargo workflow is amazing.

from mold.

petr-tik avatar petr-tik commented on July 18, 2024 1

that's certified poggers mate

rather! Can confirm though without using such venerable expressions

from mold.

rui314 avatar rui314 commented on July 18, 2024

I made a change so that at least the trivial test case of Rust and Cargo passes with mold.

Please pull mold again. Here is the .cargo/config.toml I'm using.

[target.x86_64-unknown-linux-gnu]
rustflags = [
    "-C", "link-arg=-fuse-ld=/home/ruiu/mold/mold",
]
linker = "clang"

from mold.

petr-tik avatar petr-tik commented on July 18, 2024

As mentioned, this is my failing case of linking with mold

cargo new a binary project and copy the cargo config file to it

[nix-shell:/tmp]$ cargo new rust_hello_world
     Created binary (application) `rust_hello_world` package

[nix-shell:/tmp]$ mkdir rust_hello_world/.cargo

[nix-shell:/tmp]$ cp rust_with_mold/.cargo/config.toml rust_hello_world/.cargo/

[nix-shell:/tmp]$ cd rust_hello_world/

[nix-shell:/tmp/rust_hello_world]$ tree src/
src/
└── main.rs

0 directories, 1 file

[nix-shell:/tmp/rust_hello_world]$ cat src/main.rs
fn main() {
    println!("Hello, world!");
}

This is the cargo config taken from your comment above

[nix-shell:/tmp/rust_hello_world]$ cat .cargo/config.toml
[target.x86_64-unknown-linux-gnu]
rustflags = [
    "-C", "link-arg=-fuse-ld=mold",
]
linker = "clang-10"

This is my version of mold and where it's located (i.e, in path)

[nix-shell:/tmp/rust_hello_world]$ which mold
/home/petr_tik/.local/bin/mold

[nix-shell:/tmp/rust_hello_world]$ mold --version
mold d90c0651c96d71dc72db90b219387f39be039b61 (compatible with GNU ld)

Let's cargo build the binary via mold. The RUSTC_WRAPPER env variable is unset to avoid sccache from interfering in compilation commands. build -vvv produces verbose output

[nix-shell:/tmp/rust_hello_world]$ RUSTC_WRAPPER= $HOME/.local/bin/mold -run cargo build -vvv
   Compiling rust_hello_world v0.1.0 (/tmp/rust_hello_world)
     Running `CARGO=/home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo CARGO_BIN_NAME=rust_hello_world CARGO_CRATE_NAME=rust_hello_world CARGO_MANIFEST_DIR=/tmp/rust_hello_world CARGO_PKG_AUTHORS='petr-tik <[email protected]>' CARGO_PKG_DESCRIPTION='' CARGO_PKG_HOMEPAGE='' CARGO_PKG_LICENSE='' CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=rust_hello_world CARGO_PKG_REPOSITORY='' CARGO_PKG_VERSION=0.1.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' CARGO_PRIMARY_PACKAGE=1 LD_LIBRARY_PATH='/tmp/rust_hello_world/target/debug/deps:/home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib:/home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib' rustc --crate-name rust_hello_world --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=43cbc5f5ca030fcc -C extra-filename=-43cbc5f5ca030fcc --out-dir /tmp/rust_hello_world/target/debug/deps -C linker=clang-10 -C incremental=/tmp/rust_hello_world/target/debug/incremental -L dependency=/tmp/rust_hello_world/target/debug/deps -C target-cpu=native`
    Finished dev [unoptimized + debuginfo] target(s) in 0.57s

Doesn't look like mold was used to link this executable though

[nix-shell:/tmp/rust_hello_world]$ readelf -p .comment target/debug/rust_hello_world

String dump of section '.comment':
  [     0]  GCC: (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0

Rust, cargo and ubuntu versions

[nix-shell:/tmp/rust_hello_world]$ rustc --version
rustc 1.51.0 (2fd73fabe 2021-03-23)

[nix-shell:/tmp/rust_hello_world]$ cargo --version
cargo 1.51.0 (43b129a20 2021-03-16)

[nix-shell:/tmp/rust_hello_world]$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic

[nix-shell:/tmp/rust_hello_world]$ uname -rv
5.4.0-70-generic #78~18.04.1-Ubuntu SMP Sat Mar 20 14:10:07 UTC 2021

from mold.

petr-tik avatar petr-tik commented on July 18, 2024

i got it to build and link by passing RUSTFLAGS as an env variable

Clean the target dir and remove the rustflags var from cargo config (only leave the linker)

[nix-shell:/tmp/rust_hello_world]$ cargo clean

[nix-shell:/tmp/rust_hello_world]$ cat .cargo/config.toml
[target.x86_64-unknown-linux-gnu]
linker = "clang-10"

cargo build with RUSTFLAGS set to what we deleted

[nix-shell:/tmp/rust_hello_world]$ RUSTFLAGS='-C link-arg=-fuse-ld=/home/petr_tik/.local/bin/mold' cargo build
   Compiling rust_hello_world v0.1.0 (/tmp/rust_hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.75s

[nix-shell:/tmp/rust_hello_world]$ readelf -p .comment target/debug/rust_hello_world

String dump of section '.comment':
  [     0]  mold d90c0651c96d71dc72db90b219387f39be039b61
  [    2e]  GCC: (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
  [    58]  mold command line: -pie -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o -L/home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib -L/tmp/rust_hello_world/target/debug/deps -L/home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib -L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../.. -L/nix/store/w8a9x07rai37srm9xyq827bspdvvb4xq-clang-10.0.1/bin/../lib -L/lib -L/usr/lib -L/usr/local/lib --as-needed -z noexecstack --eh-frame-hdr /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.1v1vdowuz0cmav3z.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.2jg4rewb8z6um9e8.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.2pq56rv83ttcfnq6.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.2zwni7t44zafjinr.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.30fri5vu6718lsgv.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.4ultb9tciqr6ex5i.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.5e14krxpmui2kg20.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.gwpcdy83y0x602j.rcgu.o /tmp/rust_hello_world/target/debug/deps/rust_hello_world-43cbc5f5ca030fcc.1z35npuqkcb2ax8e.rcgu.o --gc-sections -zrelro -znow --start-group -Bstatic /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b1047a2788193be4.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e8e399e2092f3b2a.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-c6b02b522c91c060.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-eaad965909c4200f.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-dca728ac8ed54d87.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-4b4efaa8c4601753.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-d36e07ed2cc56ee4.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-3855d04b1bb40ceb.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-58a065cdff5508a2.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-82aeeedcc8d1450a.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-5c4d6c9d7595f844.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-2642d2bccc00517a.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-760e48b3f782e7f5.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-d4ef8bf89076ed01.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-36070e2029bb21ea.rlib /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-3aaf8f932781f33e.rlib --end-group /home/petr_tik/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e2523c360f03ba10.rlib -Bdynamic -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc /usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o

Run the executable and watch it sefgault

[nix-shell:/tmp/rust_hello_world]$ ./target/debug/rust_hello_world
Segmentation fault (core dumped)

from mold.

petr-tik avatar petr-tik commented on July 18, 2024

Loading the segfaulting executable in rust-gdb

rust-gdb target/debug/rust_hello_world
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from target/debug/rust_hello_world...done.

Loaded successfully, but fails to run when I break on main (despite setting the breakpoint correctly)

(gdb) break main
Breakpoint 1 at 0x11190
(gdb) r
Starting program: /tmp/rust_hello_world/target/debug/rust_hello_world

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) n
Cannot find bounds of current function

Breaking on _start gives us a shortlived window of opportunity

(gdb) break _start
Breakpoint 1 at 0x11060
(gdb) run
Starting program: /tmp/rust_hello_world/target/debug/rust_hello_world

Breakpoint 1, 0x00007ffff7fc8060 in _start ()
(gdb) l
1	fn main() {
2	    println!("Hello, world!");
3	}
(gdb) n
Single stepping until exit from function _start,
which has no line number information.
0x0000000000000000 in ?? ()
(gdb) s
Cannot find bounds of current function

I am happy to debug this further and read about relevant info on linkers/compilers and I admit i am very much a beginner in linkers.

from mold.

rui314 avatar rui314 commented on July 18, 2024

I'm not a Rust user, so I don't have any specific program in my mind, but I'd just pick up a large project (at least a few hundred megabytes in executable size) and build it with or without mold. Then, delete the generated executable and re-run the same build command to see how much improvement you can observe for the incremental build case.

from mold.

luciusmagn avatar luciusmagn commented on July 18, 2024

I think rust-analyzer or rustc itself might be a good choice for a project. Other than that servo, but I am not sure how easy it would be to convince their build system to use mold instead for testing.

from mold.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.