Skip to content

feat: Add support for --trace#1699

Merged
mati865 merged 3 commits into
wild-linker:mainfrom
mati865:push-kruslnuuzrmx
Mar 16, 2026
Merged

feat: Add support for --trace#1699
mati865 merged 3 commits into
wild-linker:mainfrom
mati865:push-kruslnuuzrmx

Conversation

@mati865

@mati865 mati865 commented Mar 16, 2026

Copy link
Copy Markdown
Member

Used by Gentoo's sandbox library: https://github.com/gentoo/sandbox/blob/5ac4b15175ae8cc096b6a3d861b54b6e2a882367/configure.ac#L345

There is a difference in a way Wild transforms the paths compared to other linkers, but I think it should be irrelevant:

❯ ./run-with ld.bfd --trace
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/Scrt1.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/crti.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o
./home/mateusz/tmp/hello.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/libgcc_s.so
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/libgcc_s.so.1
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/libc.so
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/../lib/libc.so.6
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/../lib/libc_nonshared.a
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/../lib/ld-linux-x86-64.so.2
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/../lib/libc_nonshared.a
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/../lib/ld-linux-x86-64.so.2
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/crtn.o

❯ ./run-with ~/Projects/wild/target/debug/wild --trace
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/Scrt1.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/crti.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o
./home/mateusz/tmp/hello.o
/tmp/trace/usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a
/tmp/trace/usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/libgcc_s.so
/tmp/trace/usr/lib/libgcc_s.so.1
/tmp/trace/usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/libc.so
/tmp/trace/usr/lib/../lib/libc.so.6
/tmp/trace/usr/lib/../lib/libc_nonshared.a
/tmp/trace/usr/lib/../lib/ld-linux-x86-64.so.2
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o
./usr/lib64/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib64/crtn.o

This appears to be due to how Wild canonicalizes paths from linker scripts:

InputFile {
    filename: "/tmp/trace/usr/lib/../lib/ld-linux-x86-64.so.2",
    original_filename: "../lib/ld-linux-x86-64.so.2",
...
}

original_filename here is what WILD_SAVE_DIR put in the linker script.

Dunno if we can reliably test it as the files and their paths vary a lot between distributions.

@mati865 mati865 merged commit c003c2c into wild-linker:main Mar 16, 2026
22 checks passed
@mati865 mati865 deleted the push-kruslnuuzrmx branch March 16, 2026 22:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants