This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix checking of ld.so undefined symbols on sparc64


Hi!

The nm -u ld.so | cmp -s /dev/null -
test fails on sparc64, because ld.so (and other shared libs) on sparc64
have STT_REGISTER SHN_UNDEF symbols which are supposed to be undefined
per psABI and are not really any kind of errors, just notes about
each library's use of global registers.
Using readelf -s allows us to filter symbols which can be SHN_UNDEF
(symbol 0 and STT_REGISTER).
Ok?

2007-08-16  Jakub Jelinek  <jakub@redhat.com>

	* elf/Makefile ($(objpfx)ld.so): Use readelf -s and awk instead of nm -u
	to check for undefined symbols.

--- libc/elf/Makefile.jj	2007-08-10 15:31:49.000000000 +0200
+++ libc/elf/Makefile	2007-08-16 22:08:21.000000000 +0200
@@ -307,7 +307,9 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
 		  $(filter-out $(map-file),$^) $(load-map-file)		\
 		  -Wl,-soname=$(rtld-installed-name) -T $@.lds
 	rm -f $@.lds
-	nm -u $@ | cmp -s /dev/null -
+	readelf -s $@ \
+	  | awk '($7 ~ /^UND(|EF)$/ && $1 != "0:" && $4 != "REGISTER") { print }' \
+	  | cmp -s /dev/null -
 
 # interp.c exists just to get this string into the libraries.
 CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]