make check fails on AIX 5.3

Gavin Sherry swm at alcove.com.au
Thu Aug 20 02:51:59 EDT 2009


2009/8/18 Gavin Sherry <swm at alcove.com.au>

> 2009/8/18 Gavin Sherry <swm at alcove.com.au>
>
>>
>> It does not break inside pthread_once() here, when it detects the data
>> change. I think your theory looks correct. At the first call to
>> com_err_initialize__aux:
>>
>> (gdb) print &com_err_initialize__once
>> $6 = (k5_init_t *) 0xf08d600c
>>
>> And the second time:
>>
>> (gdb) print &com_err_initialize__once
>> $7 = (k5_init_t *) 0xf08df10c
>>
>> Oh, and this:
>>
>> (gdb) break error_message
>> Breakpoint 4 at 0xd21f48d0: file error_message.c, line 121. (2 locations)
>>
>> (gdb) info watchpoints
>> Num     Type           Disp Enb Address    What
>> 1       breakpoint     keep y   <MULTIPLE> 0xd21f3ec8
>>         breakpoint already hit 1 time
>> 1.1                         y     0xd21f3ec8 in com_err_initialize__aux at
>> error_message.c:126
>> 1.2                         y     0xd21eefc8 in com_err_initialize__aux at
>> error_message.c:126
>> ...
>>
>> So, it seems that the libraries are loaded twice. I'm not sure how to fix
>> this though.
>>
>
> The actual GCC command line being run is:
>
> gcc -L../../../lib
> -Wl,-blibpath:/home/build/gsherry/tools/krb5/1.6.2/dist/aix5_ppc_32/lib::/usr/lib:/lib
> -g -O0 -D_THREAD_SAFE  -L/usr/lib/threads
> -DLIBDIR=\"/home/build/gsherry/tools/krb5/1.6.2/dist/aix5_ppc_32/lib\"
> -I../../../include -I./../../../include -I./../../../util/profile
> -DKRB5_DEPRECATED=1 -DKRB5_PRIVATE=1  -g -O0 -D_THREAD_SAFE   -o
> t_locate_kdc t_locate_kdc.o \
>         -lkrb5 -lk5crypto -lcom_err -lkrb5support  -lpthreads_compat
> -lpthreads
>
> The -lpthreads_compat was added by me at the recommendation of a IBM
> threading support list but it has no effect. The reasons are the same with
> and without it.
>
> Removing the -Wl,-blibpath string doesn't help either.
>

Running with the duplicate library idea, I arranged for LDFLAGS to be set to
-Xlinker -brtl. This tells the linker to prefer shared over non-shared
libraries and presumably prevents linking against both formats. -brtl is
used already in the build process, but only when generating shared libraries
themselves. Having this argument passed to the linker for executables fixes
the problem, with all checks now passing on AIX 5.3.

Thanks,
Gavin



More information about the krbdev mailing list