glibc source from cvs fails to compile.

root@server.boros.com root@server.boros.com
Tue Jan 23 17:58:00 GMT 2007


The latest glibc from cvs has failed to compile atleast a week now and 
here are the errors when attempting to compile.

make[3]: Leaving directory `/tmp/glibc-2.4/elf'
gcc   -nostdlib -nostartfiles -shared   \
                   -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both 
-Wl,-z,defs -Wl,--verbose 2>&1 |  \
                   LC_ALL=C \
                   sed -e '/^=========/,/^=========/!d;/^=========/d'    \
                       -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
                   > /tmp/glibc-build/elf/ld.so.lds
gcc   -nostdlib -nostartfiles -shared -o /tmp/glibc-build/elf/ld.so 
\
                   -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both 
-Wl,-z,defs       \
                   /tmp/glibc-build/elf/librtld.os 
-Wl,--version-script=/tmp/glibc-build/ld.map          \
                   -Wl,-soname=ld-linux.so.2 -T 
/tmp/glibc-build/elf/ld.so.lds
/tmp/glibc-build/elf/librtld.os: In function `add_dependency':
/tmp/glibc-2.4/elf/dl-lookup.c:106: undefined reference to 
`__sync_fetch_and_add_4'
/tmp/glibc-2.4/elf/dl-lookup.c:110: undefined reference to 
`__sync_val_compare_and_swap_4'
/tmp/glibc-build/elf/librtld.os: In function `_dl_profile_fixup':
/tmp/glibc-2.4/elf/dl-runtime.c:196: undefined reference to 
`__sync_val_compare_and_swap_4'
/tmp/glibc-2.4/elf/dl-runtime.c:205: undefined reference to 
`__sync_fetch_and_add_4'
/tmp/glibc-build/elf/librtld.os: In function `_dl_fixup':
/tmp/glibc-2.4/elf/dl-runtime.c:102: undefined reference to 
`__sync_val_compare_and_swap_4'
/tmp/glibc-2.4/elf/dl-runtime.c:110: undefined reference to 
`__sync_fetch_and_add_4'
/tmp/glibc-build/elf/librtld.os: In function `dl_open_worker':
/tmp/glibc-2.4/elf/dl-open.c:424: undefined reference to 
`__sync_val_compare_and_swap_4'
/tmp/glibc-2.4/elf/dl-open.c:426: undefined reference to 
`__sync_fetch_and_add_4'
/tmp/glibc-build/elf/librtld.os: In function `_dl_close_worker':
/tmp/glibc-2.4/elf/dl-close.c:406: undefined reference to 
`__sync_val_compare_and_swap_4'
/tmp/glibc-2.4/elf/dl-close.c:408: undefined reference to 
`__sync_fetch_and_add_4'
collect2: ld returned 1 exit status
make[2]: *** [/tmp/glibc-build/elf/ld.so] Error 1
make[2]: Leaving directory `/tmp/glibc-2.4/elf'
make[1]: *** [elf/subdir_lib] Error 2
make[1]: Leaving directory `/tmp/glibc-2.4'
make: *** [all] Error 2


Looking through the change, I think it might be the following that breaks 
it.

2007-01-15  Ulrich Drepper  <drepper@redhat.com>
* elf/dl-lookup.c (add_dependency): If scope map is locked, unlock
         it before getting dl_load_lock and then relock.
         (_dl_lookup_symbol_x): Pass flags to add_dependency.
         When rerunning _dl_lookup_symbol_x, compute symbol_scope again in
         case we unlocked the scope.
         * elf/dl-runtime.c (_dl_fixup): Pass DL_LOOKUP_SCOPE_LOCK to
         _dl_lookup_symbol_x in case we locked the scope.
         (_dl_profile_fixup): Likewise.
         * elf/dl-sym.c (do_sym): In flags passed to call_dl_lookup, also
         set DL_LOOKUP_SCOPE_LOCK.x



More information about the Libc-alpha mailing list