bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#5942: 8.4 "kill" program fails to link on AIX 5.3


From: Pádraig Brady
Subject: bug#5942: 8.4 "kill" program fails to link on AIX 5.3
Date: Thu, 15 Apr 2010 10:44:42 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3

On 15/04/10 00:07, Daniel Richard G. wrote:
> Pádraig Brady wrote:
>>
>> That's very strange.
>> Is the `timeout` util built for example as that uses
>> much the samem functions as `kill`.
>> It's like kill was being built with a different
>> toolchain (like xlc_r or something).
> 
> The vendor compiler isn't even installed on this system; only GCC.
> 
>> Could you provide the build output from `make V=1`.
> 
> Of course. Here is the output from compiling and linking the "timeout" and 
> "kill" programs:
> 
> $ gmake V=1 timeout kill
> \
> #       source='/tmp/coreutils-8.4/src/timeout.c' object='timeout.o' 

> gcc -std=gnu99  -I. -I/tmp/coreutils-8.4/src -I../lib  
> -I/tmp/coreutils-8.4/lib 
>  -D_ALL_SOURCE -D_THREAD_SAFE  -D_THREAD_SAFE   -pedantic -pipe -fno-common 
> -W 
>  -Wall -Wcast-align -Wformat=2 -Wpointer-arith -Wundef -Waggregate-return 
> -Wcast-qual 
>  -Wmissing-declarations -Wnested-externs -Wstrict-prototypes -maix64 
> -mminimal-toc 
>  -O3 -c /tmp/coreutils-8.4/src/timeout.c
> gcc -std=gnu99   -pedantic -pipe -fno-common -W -Wall -Wcast-align -Wformat=2 
>  
> -Wpointer-arith -Wundef -Waggregate-return -Wcast-qual -Wmissing-declarations 
>  
> -Wnested-externs -Wstrict-prototypes -maix64 -mminimal-toc -O3   -o timeout 
> timeout.o operand2sig.o libver.a ../lib/libcoreutils.a  ../lib/libcoreutils.a

> gcc -std=gnu99  -I. -I/tmp/coreutils-8.4/src -I../lib  
> -I/tmp/coreutils-8.4/lib 
>  -D_ALL_SOURCE -D_THREAD_SAFE  -D_THREAD_SAFE   -pedantic -pipe -fno-common 
> -W 
>  -Wall -Wcast-align -Wformat=2 -Wpointer-arith -Wundef -Waggregate-return 
> -Wcast-qual 
>  -Wmissing-declarations -Wnested-externs -Wstrict-prototypes -maix64 
> -mminimal-toc 
>  -O3 -c /tmp/coreutils-8.4/src/kill.c
> gcc -std=gnu99   -pedantic -pipe -fno-common -W -Wall -Wcast-align -Wformat=2 
>  
> -Wpointer-arith -Wundef -Waggregate-return -Wcast-qual -Wmissing-declarations 
>  
> -Wnested-externs -Wstrict-prototypes -maix64 -mminimal-toc -O3   -o kill 
> kill.o operand2sig.o libver.a ../lib/libcoreutils.a  ../lib/libcoreutils.a

> ld: 0711-317 ERROR: Undefined symbol: .pthread_once
> ld: 0711-317 ERROR: Undefined symbol: .pthread_getspecific
> ld: 0711-317 ERROR: Undefined symbol: .pthread_setspecific
> ld: 0711-317 ERROR: Undefined symbol: .pthread_key_create
> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
> collect2: ld returned 8 exit status

So the above confirms that timeout and kill are being compiled and linked
with the same options. Therefore it must be something particular to kill.c
that's causing this.  A quick look shows that kill.c uses strsignal()
while timeout doesn't and I can now see that the gnulib replacement for
this function is implemented using thread local storage.

gnulib/modules/tls says to link $(LIBTHREAD), so could you try the following.
It that doesn't work, could you change $(LIBTHREAD) to $(LIBMULTITHREAD).

cheers,
Pádraig.

diff --git a/src/Makefile.am b/src/Makefile.am
index 44f1237..20b306d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -394,6 +394,9 @@ who_LDADD += $(GETADDRINFO_LIB)
 hostname_LDADD += $(GETHOSTNAME_LIB)
 uname_LDADD += $(GETHOSTNAME_LIB)

+# for strsignal
+kill_LDADD += $(LIBTHREAD)
+
 $(PROGRAMS): ../lib/libcoreutils.a

 # Get the release year from ../lib/version-etc.c.








reply via email to

[Prev in Thread] Current Thread [Next in Thread]