Since -Wl,-fuse-ld=gold addition, this happens on IA64 arch where binutils's ld 
gold doesn't support --gc-sections yet:

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 <ssuomi...@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
-- 
1.9.0

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to