tech-toolchain archive

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

re: __sync builtins on macppc



Valery Ushakov writes:
> I cannot build recent www/apache24 on macppcc 8.1-STABLE b/c 
> 
> /bin/sh /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/httpd-2.4.39/build/libtool --silent --mode=link gcc  -pthread  -pipe -O2 -D_FORTIFY_SOU
> RCE=2 -I/usr/pkg/include/apr-1 -I/usr/pkg/include -I/usr/include -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -o htpasswd  htpasswd.lo passwd_
> common.lo /usr/pkg/lib/libaprutil-1.la -lexpat /usr/pkg/lib/libapr-1.la -lrt -lcrypt -lpthread -lcrypt
> /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/.buildlink/lib/libapr-1.so: undefined reference to `__sync_fetch_and_add_8'
> /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/.buildlink/lib/libapr-1.so: undefined reference to `__sync_val_compare_and_swap_8'
> /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/.buildlink/lib/libapr-1.so: undefined reference to `__sync_lock_test_and_set_8'
> /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/.buildlink/lib/libapr-1.so: undefined reference to `__sync_fetch_and_sub_8'
> /export/netbsd/cvs/pkgsrc-quarterly/www/apache24/work.powerpc/.buildlink/lib/libapr-1.so: undefined reference to `__sync_sub_and_fetch_8'
> *** Error code 1
> 
> gcc manual says about __sync builtins:
> 
>    Not all operations are supported by all target processors.  If a
>   particular operation cannot be implemented on the target processor, a
>   warning is generated and a call to an external function is generated.
>   The external function carries the same name as the built-in version,
>   with an additional suffix `_N' where N is the size of the data type.
> 
> so these must come from somewhere and from a (very) quick look it
> looks like they should be in libgcc (libgcc/sync.c), but they are not
> in the one we build.

basically, these are not available because the hardware does
not support 64 bit atomic operations.

apr should be fixed to not try to use them where they don't
exist...  solutions depend upon the application at hand, as
not all methods work across all requirements.  eg, hash-based
locks don't work across virtual address spaces without setup
to make sure the same locks are mapped in all.


.mrg.


Home | Main Index | Thread Index | Old Index