[systemd-devel] [patch] Add -lresolv to libsystemd_intenal_la_LIBADD to prevent underlinking issues

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Sun Mar 16 06:52:28 PDT 2014


On Sun, Mar 16, 2014 at 10:10:15AM +0200, Samuli Suominen wrote:
> Since -Wl,-fuse-ld=gold addition, this happens on IA64 arch where binutils's ld gold doesn't support --gc-sections yet:

Maybe you should just use bfd linker then? Gold was only necessary for the
ifunc stuff, which is gone anyway. This might to be a better solution, since
otherwise everything gets an extra lib.

LDFLAGS=-Wl,-fuse=bfd ?

Zbyszek

> libtool: link: ia64-unknown-linux-gnu-gcc -shared  -fPIC -DPIC  src/libudev/.libs/libudev_la-libudev.o src/libudev/.libs/libudev_la-libudev-list.o src/libudev/.libs/libudev_la-libu
> dev-util.o src/libudev/.libs/libudev_la-libudev-device.o src/libudev/.libs/libudev_la-libudev-enumerate.o src/libudev/.libs/libudev_la-libudev-monitor.o src/libudev/.libs/libudev_l
> a-libudev-queue.o src/libudev/.libs/libudev_la-libudev-hwdb.o  -Wl,--whole-archive ./.libs/libsystemd-internal.a ./.libs/libsystemd-shared.a -Wl,--no-whole-archive  -Wl,--as-needed
>  -lrt -ldl  -O2 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,-fuse-ld=gold -Wl,--version-script=/tmp/systemd-211/src/libudev/libudev.sym -Wl,-O1
> -pthread -Wl,-soname -Wl,libudev.so.1 -o .libs/libudev.so.1.4.0
> cc1: warning: ./src/core: No such file or directory [enabled by default]
> /usr/lib/gcc/ia64-unknown-linux-gnu/4.7.3/../../../../ia64-unknown-linux-gnu/bin/ld: Warning: gc-sections option ignored
> ./.libs/libsystemd-internal.a(libsystemd_internal_la-sd-resolve.o): In function `handle_request':
> /tmp/systemd-211/src/libsystemd/sd-resolve/sd-resolve.c:432: undefined reference to `__res_search'
> /tmp/systemd-211/src/libsystemd/sd-resolve/sd-resolve.c:430: undefined reference to `__res_query'
> collect2: error: ld returned 1 exit status
> make: *** [libudev.la] Error 1
> 
> Patch adds -lresolv to libsystemd_internal_la_LIBADD = accordingly, so building works with or without --gc-sections working properly.
> 
> See also, http://bugs.gentoo.org/show_bug.cgi?id=504700
> 
> 

> From 2b9ae40d830596eda80cc5bc5252c6685cb75eaa Mon Sep 17 00:00:00 2001
> From: Samuli Suominen <ssuominen at gentoo.org>
> Date: Sat, 15 Mar 2014 20:40:24 +0200
> Subject: [PATCH] Link against -lresolv to prevent linker errors like:
>  /usr/lib/gcc/ia64-unknown-linux-gnu/4.7.3/../../../../ia64-unknown-
>  linux-gnu/bin/ld: Warning: gc-sections option ignored
>  ./.libs/libsystemd-internal.a(libsystemd_internal_la-sd-resolve.o):
>  In function `handle_request':
>  /tmp/systemd-211/src/libsystemd/sd-resolve/sd-resolve.c:432: undefined
>  reference to '__res_search'
>  /tmp/systemd-211/src/libsystemd/sd-resolve/sd-resolve.c:430: undefined
>  reference to '__res_query'
>  
>  IA64 arch with -fuse-ld=gold doesn't support --gc-sections, which
>  revealed the underlinking. See Gentoo bug 504700.
> 
> ---
>  Makefile.am | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile.am b/Makefile.am
> index 9e01cd5..4b8a081 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -2121,7 +2121,8 @@ libsystemd_internal_la_CFLAGS = \
>  	-pthread
>  
>  libsystemd_internal_la_LIBADD = \
> -	$(RT_LIBS)
> +	$(RT_LIBS) \
> +	-lresolv
>  
>  noinst_LTLIBRARIES += \
>  	libsystemd-internal.la
> -- 


More information about the systemd-devel mailing list