[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/31904] New: libdep.so plugin does not register search path in bf
From: |
me at harmenstoppels dot nl |
Subject: |
[Bug ld/31904] New: libdep.so plugin does not register search path in bfd linker |
Date: |
Tue, 18 Jun 2024 15:07:55 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=31904
Bug ID: 31904
Summary: libdep.so plugin does not register search path in bfd
linker
Product: binutils
Version: 2.42
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: me at harmenstoppels dot nl
Target Milestone: ---
I've created two static libraries `f/libf.a` and `g/libg.a`. The first
registers a dependency on the second: `-L/path/to/g -lg` using the following
command:
ar crl '-L/path/to/g -lg' f/libf.a f/f.o
Then I link my main program again libf using `-Lf -lf` and expect that the
linker locates and links libg.a too.
This fails for the default linker ld.bfd from binutils 2.36 to latest.
It succeeds with the gold linker.
Here is a self-contained minimal example as Makefile:
> LDFLAGS := -Wl,--plugin,/usr/lib/x86_64-linux-gnu/bfd-plugins/libdep.so
>
> .PHONY: all clean
>
> all: exe
>
> f/f.o:
> mkdir -p f
> printf 'extern int g(); int f(){ return g(); }' | $(CC) -c -xc - -o $@
>
> f/libf.a: f/f.o g/libg.a
> $(AR) crl '-L$(CURDIR)/g -lg' $@ $<
>
> g/g.o:
> mkdir -p g
> printf 'int g(){ return 4; }' | $(CC) -c -xc - -o $@
>
> g/libg.a: g/g.o
> $(AR) cr $@ $<
>
> exe: f/libf.a
> printf 'extern int f(); int main() { return f(); }' | $(CC) $(LDFLAGS)
> -xc - -o $@ -Lf -lf
>
> clean:
> rm -f exe f/f.o f/libf.a g/g.o g/libg.a
Run make and it outputs
> mkdir -p f
> printf 'extern int g(); int f(){ return g(); }' | cc -c -xc - -o f/f.o
> mkdir -p g
> printf 'int g(){ return 4; }' | cc -c -xc - -o g/g.o
> ar cr g/libg.a g/g.o
> ar crl '-L/tmp/tmp.iR9g9xEukO/g -lg' f/libf.a f/f.o
> printf 'extern int f(); int main() { return f(); }' | cc
> -Wl,--plugin,/usr/lib/x86_64-linux-gnu/bfd-plugins/libdep.so -xc - -o exe -Lf
> -lf
> got deps for library f/libf.a: -L/tmp/tmp.iR9g9xEukO/g -lg
> /usr/bin/ld: f/libf.a(f.o): in function `f':
> <stdin>:(.text+0xe): undefined reference to `g'
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:22: exe] Error 1
So, it fails to register `-L/tmp/tmp.iR9g9xEukO/g` as a link dir.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/31904] New: libdep.so plugin does not register search path in bfd linker,
me at harmenstoppels dot nl <=
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, me at harmenstoppels dot nl, 2024/06/20
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/21
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, me at harmenstoppels dot nl, 2024/06/21
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/24
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, me at harmenstoppels dot nl, 2024/06/25
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/25
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/25
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/26
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, me at harmenstoppels dot nl, 2024/06/26
- [Bug ld/31904] libdep.so plugin registers search path after default paths in bfd linker, nickc at redhat dot com, 2024/06/27