Date: Thu, 14 Jan 2010 12:07:31 GMT From: Keith Gaughan <k@stereochro.me> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/142828: databases/libmemcached: Fails to build due to missing atomic locking primitives in GCC Message-ID: <201001141207.o0EC7Vaw058938@www.freebsd.org> Resent-Message-ID: <201001141210.o0ECA1lT057004@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 142828 >Category: ports >Synopsis: databases/libmemcached: Fails to build due to missing atomic locking primitives in GCC >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jan 14 12:10:01 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Keith Gaughan >Release: 7.1 >Organization: >Environment: FreeBSD lir 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 14:37:25 UTC 2009 root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >Description: This was also tested under FreeBSD 8.0 with identical results. Building libmemcached fails due to a lack of support for GCC's __sync_fetch_and_add, &c., built-ins in any form. Here's the output from a build: ===> Extracting for libmemcached-0.37_1 => MD5 Checksum OK for libmemcached-0.37.tar.gz. => SHA256 Checksum OK for libmemcached-0.37.tar.gz. ===> libmemcached-0.37_1 depends on file: /usr/local/bin/perl5.10.1 - found ===> Patching for libmemcached-0.37_1 ===> libmemcached-0.37_1 depends on file: /usr/local/bin/perl5.10.1 - found ===> Applying FreeBSD patches for libmemcached-0.37_1 /usr/bin/sed -i.bak -e 's|^pkgconfigdir.*|pkgconfigdir = ${PREFIX}/libdata/pkgconfig|' /usr/ports/databases/libmemcached/work/libmemcached-0.37/Makefile.in ===> libmemcached-0.37_1 depends on executable: gmake - found ===> libmemcached-0.37_1 depends on file: /usr/local/bin/perl5.10.1 - found ===> libmemcached-0.37_1 depends on executable: pkg-config - found ===> libmemcached-0.37_1 depends on shared library: event-1.4 - found ===> Configuring for libmemcached-0.37_1 checking build system type... i386-portbld-freebsd7.1 checking host system type... i386-portbld-freebsd7.1 checking for a BSD-compatible install... /usr/bin/install -c -o root -g wheel checking whether build environment is sane... yes checking for a thread-safe mkdir -p... config/install-sh -c -d checking for gawk... gawk checking whether gmake sets $(MAKE)... yes checking for style of include used by gmake... GNU checking for gcc... cc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking dependency style of cc... gcc3 checking for isainfo... no checking whether we are using the GNU C++ compiler... yes checking whether c++ accepts -g... yes checking dependency style of c++... gcc3 checking how to run the C preprocessor... cc -E checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking whether cc understands -c and -o together... yes checking for a sed that does not truncate output... /usr/bin/sed checking for fgrep... /usr/bin/grep -F checking for ld used by cc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... (cached) 262144 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... no checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for ar... ar checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from cc object... ok checking for dlfcn.h... yes checking whether we are using the GNU C++ compiler... (cached) yes checking whether c++ accepts -g... (cached) yes checking dependency style of c++... (cached) gcc3 checking how to run the C++ preprocessor... c++ -E checking for objdir... .libs checking if cc supports -fno-rtti -fno-exceptions... no checking for cc option to produce PIC... -fPIC -DPIC checking if cc PIC flag -fPIC -DPIC works... yes checking if cc static flag -static works... yes checking if cc supports -c -o file.o... yes checking if cc supports -c -o file.o... (cached) yes checking whether the cc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... freebsd7.1 ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for ld used by c++... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking whether the c++ linker (/usr/bin/ld) supports shared libraries... yes checking for c++ option to produce PIC... -fPIC -DPIC checking if c++ PIC flag -fPIC -DPIC works... yes checking if c++ static flag -static works... yes checking if c++ supports -c -o file.o... yes checking if c++ supports -c -o file.o... (cached) yes checking whether the c++ linker (/usr/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... freebsd7.1 ld.so checking how to hardcode library paths into programs... immediate checking if g++ supports C++0x features without additional flags... no checking if g++ supports C++0x features with -std=c++0x... no checking if g++ supports C++0x features with -std=gnu++0x... no checking for working alloca.h... no checking for alloca... yes checking for stdlib.h... (cached) yes checking for GNU libc compatible malloc... yes checking for stdlib.h... (cached) yes checking for GNU libc compatible realloc... yes checking target system type... i386-portbld-freebsd7.1 checking whether __SUNPRO_C is declared... no checking whether __ICC is declared... no checking for ISO C++ 98 include files... yes checking memory usability... yes checking memory presence... yes checking for memory... yes checking tr1/memory usability... yes checking tr1/memory presence... yes checking for tr1/memory... yes checking boost/shared_ptr.hpp usability... no checking boost/shared_ptr.hpp presence... no checking for boost/shared_ptr.hpp... no checking the location of shared_ptr header file... checking "C Compiler version--yes"... "cc (GCC) 4.2.1 20070719 [FreeBSD]" checking "C++ Compiler version"... "c++ (GCC) 4.2.1 20070719 [FreeBSD]" checking whether byte ordering is bigendian... no checking for an ANSI C-conforming const... yes checking for inline... inline checking for working volatile... yes checking for C/C++ restrict keyword... __restrict checking whether time.h and sys/time.h may both be included... yes checking for size_t... yes checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... no checking size of off_t... 8 checking size of size_t... 4 checking size of long long... 8 checking if time_t is unsigned... no checking stack direction... -1 checking for cos in -lm... yes checking for setsockopt... yes checking for bind... yes checking whether madvise is declared... no checking whether the compiler provides atomic builtins... no checking for simple visibility declarations... yes checking assert.h usability... yes checking assert.h presence... yes checking for assert.h... yes checking whether to enable assertions... yes checking whether it is safe to use -fdiagnostics-show-option... yes checking whether it is safe to use -Wconversion... no checking whether it is safe to use -Wextra... yes checking whether it is safe to use -Wmissing-declarations from C++... no checking whether it is safe to use -Wlogical-op... no checking whether it is safe to use -Wredundant-decls from C++... yes checking whether it is safe to use -Wattributes from C++... no checking whether it is safe to use -Wno-attributes... no checking for doxygen... no checking for perl... perl checking for working -pipe... yes checking for library containing getopt_long... none required checking for library containing gethostbyname... none required checking for getline... no checking for ld used by GCC... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking for libevent... yes checking how to link with libevent... /usr/local/lib/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib checking for event_base_new... yes checking for event_base_free... yes checking for event_base_get_method... yes checking for the pthreads library -lpthreads... no checking whether pthreads work without any flags... no checking whether pthreads work with -Kthread... no checking whether pthreads work with -kthread... no checking for the pthreads library -llthread... no checking whether pthreads work with -pthread... yes checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE checking if more special flags are required for pthreads... -D_THREAD_SAFE checking for pthread_yield_np... no checking if pthread_yield takes zero arguments... yes checking if pthread_yield takes one argument... no checking for pthread_attr_getstacksize... yes checking for pthread_attr_setprio... no checking for pthread_attr_setschedparam... yes checking for pthread_attr_setstacksize... yes checking for pthread_condattr_create... no checking for pthread_getsequence_np... no checking for pthread_key_delete... yes checking for pthread_rwlock_rdlock... yes checking for pthread_setprio... yes checking for pthread_setprio_np... no checking for pthread_setschedparam... yes checking for pthread_sigmask... yes checking for pthread_attr_create... no checking for rwlock_init... no checking args to pthread_getspecific... POSIX checking args to pthread_mutex_init... POSIX checking args to readdir_r... POSIX checking style of sigwait... POSIX checking for pthread_attr_setscope... yes checking if pthread_yield takes zero arguments... yes checking if pthread_yield takes 1 argument... no checking cxxabi.h usability... yes checking cxxabi.h presence... yes checking for cxxabi.h... yes checking checking for abi::__cxa_demangle... yes checking for htonll... checking for pod2man... /usr/local/bin/pod2man checking for podchecker... /usr/local/bin/podchecker checking for libinnodb... no checking ucontext.h usability... yes checking ucontext.h presence... yes checking for ucontext.h... yes checking for printstack... no checking for dlfcn.h... (cached) yes checking execinfo.h usability... no checking execinfo.h presence... no checking for execinfo.h... no checking for backtrace... no checking for backtrace_symbols_fd... no checking atomic.h usability... no checking atomic.h presence... no checking for atomic.h... no configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating libmemcached/configure.h config.status: creating support/libmemcached.pc config.status: creating support/libmemcached.spec config.status: creating support/libmemcached-fc.spec config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands --- Configuration summary for libmemcached version 0.37 * Installation prefix: /usr/local * System type: portbld-freebsd7.1 * Host CPU: i386 * C Compiler: cc (GCC) 4.2.1 20070719 [FreeBSD] * Assertions enabled: yes * Debug enabled: no * Warnings as failure: no --- ===> Building for libmemcached-0.37_1 gmake all-recursive gmake[1]: Entering directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37' Making all in docs gmake[2]: Entering directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37/docs' ln -s ../docs/memcached_auto.pod ../docs/memcached_increment.pop ln -s ../docs/memcached_auto.pod ../docs/memcached_increment_with_initial.pop ln -s ../docs/memcached_auto.pod ../docs/memcached_decrement.pop ln -s ../docs/memcached_auto.pod ../docs/memcached_decrement_with_initial.pop ln -s ../docs/memcached_behavior.pod ../docs/memcached_behavior_get.pop ln -s ../docs/memcached_behavior.pod ../docs/memcached_behavior_set.pop ln -s ../docs/memcached_callback.pod ../docs/memcached_callback_get.pop ln -s ../docs/memcached_callback.pod ../docs/memcached_callback_set.pop ln -s ../docs/memcached_create.pod ../docs/memcached_clone.pop ln -s ../docs/memcached_create.pod ../docs/memcached_create.pop ln -s ../docs/memcached_create.pod ../docs/memcached_free.pop ln -s ../docs/memcached_create.pod ../docs/memcached_servers_reset.pop ln -s ../docs/memcached_delete.pod ../docs/memcached_delete.pop ln -s ../docs/memcached_delete.pod ../docs/memcached_delete_by_key.pop ln -s ../docs/libmemcached.pod ../docs/libmemcached.pop ln -s ../docs/libmemcached_examples.pod ../docs/libmemcached_examples.pop ln -s ../docs/libmemcachedutil.pod ../docs/libmemcachedutil.pop ln -s ../docs/memcached_analyze.pod ../docs/memcached_analyze.pop ln -s ../docs/memcached_dump.pod ../docs/memcached_dump.pop ln -s ../docs/memcached_flush.pod ../docs/memcached_flush.pop ln -s ../docs/memcached_flush_buffers.pod ../docs/memcached_flush_buffers.pop ln -s ../docs/memcached_generate_hash_value.pod ../docs/memcached_generate_hash_value.pop ln -s ../docs/memcached_quit.pod ../docs/memcached_quit.pop ln -s ../docs/memcached_strerror.pod ../docs/memcached_strerror.pop ln -s ../docs/memcached_verbosity.pod ../docs/memcached_verbosity.pop ln -s ../docs/memcapable.pod ../docs/memcapable.pop ln -s ../docs/memcat.pod ../docs/memcat.pop ln -s ../docs/memcp.pod ../docs/memcp.pop ln -s ../docs/memdump.pod ../docs/memdump.pop ln -s ../docs/memerror.pod ../docs/memerror.pop ln -s ../docs/memflush.pod ../docs/memflush.pop ln -s ../docs/memrm.pod ../docs/memrm.pop ln -s ../docs/memslap.pod ../docs/memslap.pop ln -s ../docs/memstat.pod ../docs/memstat.pop ln -s ../docs/memcached_get.pod ../docs/memcached_get.pop ln -s ../docs/memcached_get.pod ../docs/memcached_get_by_key.pop ln -s ../docs/memcached_get.pod ../docs/memcached_fetch_result.pop ln -s ../docs/memcached_get.pod ../docs/memcached_fetch_execute.pop ln -s ../docs/memcached_get.pod ../docs/memcached_mget.pop ln -s ../docs/memcached_get.pod ../docs/memcached_mget_by_key.pop ln -s ../docs/memcached_get.pod ../docs/memcached_mget_execute.pop ln -s ../docs/memcached_get.pod ../docs/memcached_mget_execute_by_key.pop ln -s ../docs/memcached_get.pod ../docs/memcached_fetch.pop ln -s ../docs/memcached_memory_allocators.pod ../docs/memcached_get_memory_allocators.pop ln -s ../docs/memcached_memory_allocators.pod ../docs/memcached_set_memory_allocators.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_behavior_get.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_behavior_set.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_create.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_destroy.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_pop.pop ln -s ../docs/memcached_pool.pod ../docs/memcached_pool_push.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_cas.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_create.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_flags.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_free.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_key_length.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_key_value.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_length.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_st.pop ln -s ../docs/memcached_result_st.pod ../docs/memcached_result_value.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_count.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_cursor.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_list.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_add.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_add_unix_socket.pop ln -s ../docs/memcached_servers.pod ../docs/memcached_server_push.pop ln -s ../docs/memcached_server_st.pod ../docs/memcached_server_list_free.pop ln -s ../docs/memcached_server_st.pod ../docs/memcached_server_list_count.pop ln -s ../docs/memcached_server_st.pod ../docs/memcached_server_list_append.pop ln -s ../docs/memcached_server_st.pod ../docs/memcached_servers_parse.pop ln -s ../docs/memcached_set.pod ../docs/memcached_set.pop ln -s ../docs/memcached_set.pod ../docs/memcached_set_by_key.pop ln -s ../docs/memcached_set.pod ../docs/memcached_cas.pop ln -s ../docs/memcached_set.pod ../docs/memcached_cas_by_key.pop ln -s ../docs/memcached_set.pod ../docs/memcached_replace.pop ln -s ../docs/memcached_set.pod ../docs/memcached_replace_by_key.pop ln -s ../docs/memcached_set.pod ../docs/memcached_add.pop ln -s ../docs/memcached_set.pod ../docs/memcached_add_by_key.pop ln -s ../docs/memcached_set.pod ../docs/memcached_prepend.pop ln -s ../docs/memcached_set.pod ../docs/memcached_prepend_by_key.pop ln -s ../docs/memcached_set.pod ../docs/memcached_append.pop ln -s ../docs/memcached_set.pod ../docs/memcached_append_by_key.pop ln -s ../docs/memcached_stats.pod ../docs/memcached_stat.pop ln -s ../docs/memcached_stats.pod ../docs/memcached_stat_get_keys.pop ln -s ../docs/memcached_stats.pod ../docs/.pop ln -s ../docs/memcached_stats.pod ../docs/memcached_stat_get_value.pop ln -s ../docs/memcached_stats.pod ../docs/memcached_stat_servername.pop ln -s ../docs/memcached_user_data.pod ../docs/memcached_get_user_data.pop ln -s ../docs/memcached_user_data.pod ../docs/memcached_set_user_data.pop ln -s ../docs/memcached_version.pod ../docs/memcached_version.pop ln -s ../docs/memcached_version.pod ../docs/memcached_lib_version.pop ln -s ../docs/hashkit_create.pod ../docs/hashkit_is_allocated.pop ln -s ../docs/hashkit_create.pod ../docs/hashkit_create.pop ln -s ../docs/hashkit_create.pod ../docs/hashkit_clone.pop ln -s ../docs/hashkit_create.pod ../docs/hashkit_free.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_crc32.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_fnv1_32.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_fnv1_64.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_fnv1a_32.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_fnv1a_64.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_functions.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_hsieh.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_jenkins.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_md5.pop ln -s ../docs/hashkit_functions.pod ../docs/hashkit_murmur.pop ln -s ../docs/hashkit_value.pod ../docs/hashkit_value.pop gmake all-am gmake[3]: Entering directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37/docs' /usr/local/bin/pod2man -c "hashkit_clone" -r "" -s 3 hashkit_clone.pop > hashkit_clone.3 /usr/local/bin/pod2man -c "hashkit_crc32" -r "" -s 3 hashkit_crc32.pop > hashkit_crc32.3 /usr/local/bin/pod2man -c "hashkit_create" -r "" -s 3 hashkit_create.pop > hashkit_create.3 /usr/local/bin/pod2man -c "hashkit_fnv1_32" -r "" -s 3 hashkit_fnv1_32.pop > hashkit_fnv1_32.3 /usr/local/bin/pod2man -c "hashkit_fnv1_64" -r "" -s 3 hashkit_fnv1_64.pop > hashkit_fnv1_64.3 /usr/local/bin/pod2man -c "hashkit_fnv1a_32" -r "" -s 3 hashkit_fnv1a_32.pop > hashkit_fnv1a_32.3 /usr/local/bin/pod2man -c "hashkit_fnv1a_64" -r "" -s 3 hashkit_fnv1a_64.pop > hashkit_fnv1a_64.3 /usr/local/bin/pod2man -c "hashkit_free" -r "" -s 3 hashkit_free.pop > hashkit_free.3 /usr/local/bin/pod2man -c "hashkit_functions" -r "" -s 3 hashkit_functions.pop > hashkit_functions.3 /usr/local/bin/pod2man -c "hashkit_hsieh" -r "" -s 3 hashkit_hsieh.pop > hashkit_hsieh.3 /usr/local/bin/pod2man -c "hashkit_is_allocated" -r "" -s 3 hashkit_is_allocated.pop > hashkit_is_allocated.3 /usr/local/bin/pod2man -c "hashkit_jenkins" -r "" -s 3 hashkit_jenkins.pop > hashkit_jenkins.3 /usr/local/bin/pod2man -c "hashkit_md5" -r "" -s 3 hashkit_md5.pop > hashkit_md5.3 /usr/local/bin/pod2man -c "hashkit_murmur" -r "" -s 3 hashkit_murmur.pop > hashkit_murmur.3 /usr/local/bin/pod2man -c "hashkit_value" -r "" -s 3 hashkit_value.pop > hashkit_value.3 /usr/local/bin/pod2man -c "libmemcached" -r "" -s 3 libmemcached.pop > libmemcached.3 /usr/local/bin/pod2man -c "libmemcached_examples" -r "" -s 3 libmemcached_examples.pop > libmemcached_examples.3 /usr/local/bin/pod2man -c "memcached_add" -r "" -s 3 memcached_add.pop > memcached_add.3 /usr/local/bin/pod2man -c "memcached_add_by_key" -r "" -s 3 memcached_add_by_key.pop > memcached_add_by_key.3 /usr/local/bin/pod2man -c "memcached_analyze" -r "" -s 3 memcached_analyze.pop > memcached_analyze.3 /usr/local/bin/pod2man -c "memcached_append" -r "" -s 3 memcached_append.pop > memcached_append.3 /usr/local/bin/pod2man -c "memcached_append_by_key" -r "" -s 3 memcached_append_by_key.pop > memcached_append_by_key.3 /usr/local/bin/pod2man -c "memcached_behavior_get" -r "" -s 3 memcached_behavior_get.pop > memcached_behavior_get.3 /usr/local/bin/pod2man -c "memcached_behavior_set" -r "" -s 3 memcached_behavior_set.pop > memcached_behavior_set.3 /usr/local/bin/pod2man -c "memcached_callback_get" -r "" -s 3 memcached_callback_get.pop > memcached_callback_get.3 /usr/local/bin/pod2man -c "memcached_callback_set" -r "" -s 3 memcached_callback_set.pop > memcached_callback_set.3 /usr/local/bin/pod2man -c "memcached_cas" -r "" -s 3 memcached_cas.pop > memcached_cas.3 /usr/local/bin/pod2man -c "memcached_cas_by_key" -r "" -s 3 memcached_cas_by_key.pop > memcached_cas_by_key.3 /usr/local/bin/pod2man -c "memcached_clone" -r "" -s 3 memcached_clone.pop > memcached_clone.3 /usr/local/bin/pod2man -c "memcached_create" -r "" -s 3 memcached_create.pop > memcached_create.3 /usr/local/bin/pod2man -c "memcached_decrement" -r "" -s 3 memcached_decrement.pop > memcached_decrement.3 /usr/local/bin/pod2man -c "memcached_decrement_with_initial" -r "" -s 3 memcached_decrement_with_initial.pop > memcached_decrement_with_initial.3 /usr/local/bin/pod2man -c "memcached_delete" -r "" -s 3 memcached_delete.pop > memcached_delete.3 /usr/local/bin/pod2man -c "memcached_delete_by_key" -r "" -s 3 memcached_delete_by_key.pop > memcached_delete_by_key.3 /usr/local/bin/pod2man -c "memcached_dump" -r "" -s 3 memcached_dump.pop > memcached_dump.3 /usr/local/bin/pod2man -c "memcached_fetch" -r "" -s 3 memcached_fetch.pop > memcached_fetch.3 /usr/local/bin/pod2man -c "memcached_fetch_execute" -r "" -s 3 memcached_fetch_execute.pop > memcached_fetch_execute.3 /usr/local/bin/pod2man -c "memcached_fetch_result" -r "" -s 3 memcached_fetch_result.pop > memcached_fetch_result.3 /usr/local/bin/pod2man -c "memcached_flush_buffers" -r "" -s 3 memcached_flush_buffers.pop > memcached_flush_buffers.3 /usr/local/bin/pod2man -c "memcached_free" -r "" -s 3 memcached_free.pop > memcached_free.3 /usr/local/bin/pod2man -c "memcached_generate_hash_value" -r "" -s 3 memcached_generate_hash_value.pop > memcached_generate_hash_value.3 /usr/local/bin/pod2man -c "memcached_get" -r "" -s 3 memcached_get.pop > memcached_get.3 /usr/local/bin/pod2man -c "memcached_get_by_key" -r "" -s 3 memcached_get_by_key.pop > memcached_get_by_key.3 /usr/local/bin/pod2man -c "memcached_get_memory_allocators" -r "" -s 3 memcached_get_memory_allocators.pop > memcached_get_memory_allocators.3 /usr/local/bin/pod2man -c "memcached_get_user_data" -r "" -s 3 memcached_get_user_data.pop > memcached_get_user_data.3 /usr/local/bin/pod2man -c "memcached_increment" -r "" -s 3 memcached_increment.pop > memcached_increment.3 /usr/local/bin/pod2man -c "memcached_increment_with_initial" -r "" -s 3 memcached_increment_with_initial.pop > memcached_increment_with_initial.3 /usr/local/bin/pod2man -c "memcached_lib_version" -r "" -s 3 memcached_lib_version.pop > memcached_lib_version.3 /usr/local/bin/pod2man -c "memcached_mget" -r "" -s 3 memcached_mget.pop > memcached_mget.3 /usr/local/bin/pod2man -c "memcached_mget_by_key" -r "" -s 3 memcached_mget_by_key.pop > memcached_mget_by_key.3 /usr/local/bin/pod2man -c "memcached_mget_execute" -r "" -s 3 memcached_mget_execute.pop > memcached_mget_execute.3 /usr/local/bin/pod2man -c "memcached_mget_execute_by_key" -r "" -s 3 memcached_mget_execute_by_key.pop > memcached_mget_execute_by_key.3 /usr/local/bin/pod2man -c "memcached_prepend" -r "" -s 3 memcached_prepend.pop > memcached_prepend.3 /usr/local/bin/pod2man -c "memcached_prepend_by_key" -r "" -s 3 memcached_prepend_by_key.pop > memcached_prepend_by_key.3 /usr/local/bin/pod2man -c "memcached_quit" -r "" -s 3 memcached_quit.pop > memcached_quit.3 /usr/local/bin/pod2man -c "memcached_replace" -r "" -s 3 memcached_replace.pop > memcached_replace.3 /usr/local/bin/pod2man -c "memcached_replace_by_key" -r "" -s 3 memcached_replace_by_key.pop > memcached_replace_by_key.3 /usr/local/bin/pod2man -c "memcached_server_add" -r "" -s 3 memcached_server_add.pop > memcached_server_add.3 /usr/local/bin/pod2man -c "memcached_server_count" -r "" -s 3 memcached_server_count.pop > memcached_server_count.3 /usr/local/bin/pod2man -c "memcached_server_cursor" -r "" -s 3 memcached_server_cursor.pop > memcached_server_cursor.3 /usr/local/bin/pod2man -c "memcached_server_list" -r "" -s 3 memcached_server_list.pop > memcached_server_list.3 /usr/local/bin/pod2man -c "memcached_server_list_append" -r "" -s 3 memcached_server_list_append.pop > memcached_server_list_append.3 /usr/local/bin/pod2man -c "memcached_server_list_count" -r "" -s 3 memcached_server_list_count.pop > memcached_server_list_count.3 /usr/local/bin/pod2man -c "memcached_server_list_free" -r "" -s 3 memcached_server_list_free.pop > memcached_server_list_free.3 /usr/local/bin/pod2man -c "memcached_server_push" -r "" -s 3 memcached_server_push.pop > memcached_server_push.3 /usr/local/bin/pod2man -c "memcached_servers_parse" -r "" -s 3 memcached_servers_parse.pop > memcached_servers_parse.3 /usr/local/bin/pod2man -c "memcached_set" -r "" -s 3 memcached_set.pop > memcached_set.3 /usr/local/bin/pod2man -c "memcached_set_by_key" -r "" -s 3 memcached_set_by_key.pop > memcached_set_by_key.3 /usr/local/bin/pod2man -c "memcached_set_memory_allocators" -r "" -s 3 memcached_set_memory_allocators.pop > memcached_set_memory_allocators.3 /usr/local/bin/pod2man -c "memcached_set_user_data" -r "" -s 3 memcached_set_user_data.pop > memcached_set_user_data.3 /usr/local/bin/pod2man -c "memcached_stat" -r "" -s 3 memcached_stat.pop > memcached_stat.3 /usr/local/bin/pod2man -c "memcached_stat_get_keys" -r "" -s 3 memcached_stat_get_keys.pop > memcached_stat_get_keys.3 /usr/local/bin/pod2man -c "memcached_stat_get_value" -r "" -s 3 memcached_stat_get_value.pop > memcached_stat_get_value.3 /usr/local/bin/pod2man -c "memcached_stat_servername" -r "" -s 3 memcached_stat_servername.pop > memcached_stat_servername.3 /usr/local/bin/pod2man -c "memcached_strerror" -r "" -s 3 memcached_strerror.pop > memcached_strerror.3 /usr/local/bin/pod2man -c "memcached_verbosity" -r "" -s 3 memcached_verbosity.pop > memcached_verbosity.3 /usr/local/bin/pod2man -c "memcached_version" -r "" -s 3 memcached_version.pop > memcached_version.3 /usr/local/bin/pod2man -c "memcapable" -r "" -s 1 memcapable.pop > memcapable.1 /usr/local/bin/pod2man -c "memcat" -r "" -s 1 memcat.pop > memcat.1 /usr/local/bin/pod2man -c "memcp" -r "" -s 1 memcp.pop > memcp.1 /usr/local/bin/pod2man -c "memdump" -r "" -s 1 memdump.pop > memdump.1 /usr/local/bin/pod2man -c "memerror" -r "" -s 1 memerror.pop > memerror.1 /usr/local/bin/pod2man -c "memflush" -r "" -s 1 memflush.pop > memflush.1 /usr/local/bin/pod2man -c "memrm" -r "" -s 1 memrm.pop > memrm.1 /usr/local/bin/pod2man -c "memslap" -r "" -s 1 memslap.pop > memslap.1 /usr/local/bin/pod2man -c "memstat" -r "" -s 1 memstat.pop > memstat.1 /usr/local/bin/pod2man -c "libmemcachedutil" -r "" -s 3 libmemcachedutil.pop > libmemcachedutil.3 /usr/local/bin/pod2man -c "memcached_pool_behavior_set" -r "" -s 3 memcached_pool_behavior_set.pop > memcached_pool_behavior_set.3 /usr/local/bin/pod2man -c "memcached_pool_behavior_get" -r "" -s 3 memcached_pool_behavior_get.pop > memcached_pool_behavior_get.3 /usr/local/bin/pod2man -c "memcached_pool_create" -r "" -s 3 memcached_pool_create.pop > memcached_pool_create.3 /usr/local/bin/pod2man -c "memcached_pool_destroy" -r "" -s 3 memcached_pool_destroy.pop > memcached_pool_destroy.3 /usr/local/bin/pod2man -c "memcached_pool_push" -r "" -s 3 memcached_pool_push.pop > memcached_pool_push.3 /usr/local/bin/pod2man -c "memcached_pool_pop" -r "" -s 3 memcached_pool_pop.pop > memcached_pool_pop.3 gmake[3]: Leaving directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37/docs' gmake[2]: Leaving directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37/docs' gmake[2]: Entering directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37' CC libmemcached/protocol/ascii_handler.lo CC libmemcached/protocol/binary_handler.lo CC libmemcached/protocol/cache.lo CC libmemcached/protocol/pedantic.lo CC libmemcached/protocol/protocol_handler.lo CC libmemcached/byteorder.lo CCLD libmemcached/libbyteorder.la CCLD libmemcached/libmemcachedprotocol.la CC libmemcached/libmemcached_libmemcached_la-allocators.lo CC libmemcached/libmemcached_libmemcached_la-analyze.lo CC libmemcached/libmemcached_libmemcached_la-auto.lo CC libmemcached/libmemcached_libmemcached_la-behavior.lo CC libmemcached/libmemcached_libmemcached_la-connect.lo CC libmemcached/libmemcached_libmemcached_la-crc.lo CC libmemcached/libmemcached_libmemcached_la-delete.lo CC libmemcached/libmemcached_libmemcached_la-do.lo CC libmemcached/libmemcached_libmemcached_la-dump.lo CC libmemcached/libmemcached_libmemcached_la-fetch.lo CC libmemcached/libmemcached_libmemcached_la-flush.lo CC libmemcached/libmemcached_libmemcached_la-flush_buffers.lo CC libmemcached/libmemcached_libmemcached_la-get.lo CC libmemcached/libmemcached_libmemcached_la-hash.lo CC libmemcached/libmemcached_libmemcached_la-hosts.lo CC libmemcached/libmemcached_libmemcached_la-io.lo CC libmemcached/libmemcached_libmemcached_la-jenkins_hash.lo CC libmemcached/libmemcached_libmemcached_la-key.lo CC libmemcached/libmemcached_libmemcached_la-md5.lo CC libmemcached/libmemcached_libmemcached_la-memcached.lo CC libmemcached/libmemcached_libmemcached_la-murmur_hash.lo CC libmemcached/libmemcached_libmemcached_la-parse.lo CC libmemcached/libmemcached_libmemcached_la-purge.lo CC libmemcached/libmemcached_libmemcached_la-quit.lo CC libmemcached/libmemcached_libmemcached_la-response.lo CC libmemcached/libmemcached_libmemcached_la-result.lo CC libmemcached/libmemcached_libmemcached_la-server.lo CC libmemcached/libmemcached_libmemcached_la-stats.lo CC libmemcached/libmemcached_libmemcached_la-storage.lo CC libmemcached/libmemcached_libmemcached_la-strerror.lo CC libmemcached/libmemcached_libmemcached_la-verbosity.lo CC libmemcached/libmemcached_libmemcached_la-version.lo CC libmemcached/libmemcached_libmemcachedcallbacks_la-callback.lo CCLD libmemcached/libmemcachedcallbacks.la CC libmemcached/string.lo CCLD libmemcached/libmemcachedinternal.la CCLD libmemcached/libmemcached.la CC libmemcached/util/pool.lo CCLD libmemcached/libmemcachedutil.la CC libhashkit/libhashkit_libhashkit_la-crc32.lo CC libhashkit/libhashkit_libhashkit_la-behavior.lo CC libhashkit/libhashkit_libhashkit_la-default.lo CC libhashkit/libhashkit_libhashkit_la-fnv.lo CC libhashkit/libhashkit_libhashkit_la-hashkit.lo CC libhashkit/libhashkit_libhashkit_la-jenkins.lo CC libhashkit/libhashkit_libhashkit_la-ketama.lo CC libhashkit/libhashkit_libhashkit_la-md5.lo CC libhashkit/libhashkit_libhashkit_la-murmur.lo CC libhashkit/libhashkit_libhashkit_la-strerror.lo CCLD libhashkit/libhashkit.la CC clients/utilities.lo CCLD clients/libutilities.la CC clients/generator.lo CC clients/execute.lo CCLD clients/libgenexec.la CC tests/server.lo CCLD tests/libserver.la CC tests/test.lo CCLD tests/libtest.la CC clients/memcapable.o CCLD clients/memcapable CC clients/memcat.o CCLD clients/memcat CC clients/memcp.o CCLD clients/memcp CC clients/memdump.o CCLD clients/memdump CC clients/memerror.o CCLD clients/memerror CC clients/memflush.o CCLD clients/memflush CC clients/memrm.o CCLD clients/memrm CC clients/memstat.o CCLD clients/memstat CC clients/memslap.o CC clients/ms_conn.o CC clients/ms_setting.o CC clients/ms_sigsegv.o CC clients/ms_stats.o CC clients/ms_task.o CC clients/ms_thread.o CCLD clients/memslap clients/ms_conn.o(.text+0x9c3): In function `ms_build_udp_headers': clients/ms_conn.c:184: undefined reference to `__sync_fetch_and_add_4' clients/ms_conn.o(.text+0x1bb7): In function `ms_reconn_socks': clients/ms_conn.c:1055: undefined reference to `__sync_fetch_and_add_4' clients/ms_conn.o(.text+0x2250): In function `ms_drive_machine': clients/ms_conn.c:924: undefined reference to `__sync_fetch_and_add_4' clients/ms_conn.o(.text+0x3375):clients/ms_conn.c:960: undefined reference to `__sync_fetch_and_add_4' clients/ms_thread.o(.text+0x496): In function `ms_worker_libevent': clients/ms_thread.c:215: undefined reference to `__sync_fetch_and_add_4' clients/ms_thread.o(.text+0x4fa):clients/ms_thread.c:198: more undefined references to `__sync_fetch_and_add_4' follow gmake[2]: *** [clients/memslap] Error 1 gmake[2]: Leaving directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37' gmake[1]: *** [all-recursive] Error 1 gmake[1]: Leaving directory `/usr/ports/databases/libmemcached/work/libmemcached-0.37' gmake: *** [all] Error 2 *** Error code 1 Stop in /usr/ports/databases/libmemcached. >How-To-Repeat: cd /usr/ports/databases/libmemcached && make >Fix: The patch attached contains a rather gross hack that pulls in machine/atomic.h and maps the macros in ms_atomic.h onto the macros and functions listed there. Unfortunately, due to machine/atomic.h not listing support for atomic updates of 64-bit integers, this patch will not work on 64-bit machines. It does, however, fix the problem on 32-bit machines. I will be doing some further work on improving the patch and will be submitting it upstream. Patch attached with submission follows: --- clients/ms_atomic.h 2009-12-19 00:22:53.000000000 +0000 +++ clients/ms_atomic.h.patched 2010-01-14 00:52:15.000000000 +0000 @@ -12,39 +12,19 @@ #ifndef CLIENTS_MS_ATOMIC_H #define CLIENTS_MS_ATOMIC_H -#if defined(__SUNPRO_C) -# define _KERNEL -# include <atomic.h> -# if SIZEOF_SIZE_T == 8 -# define atomic_add_size(X, Y) atomic_add_64((X), (Y)) -# define atomic_add_size_nv(X, Y) atomic_add_64((X), (Y)) -# define atomic_dec_size(X, Y) atomic_add_64((X), (Y)) -# define atomic_dec_size_nv(X, Y) atomic_add_64((X), (Y)) -# else -# define atomic_add_size(X, Y) atomic_add_32((X), (Y)) -# define atomic_add_size_nv(X, Y) atomic_add_32((X), (Y)) -# define atomic_dec_size(X, Y) atomic_add_32((X), (Y)) -# define atomic_dec_size_nv(X, Y) atomic_add_32((X), (Y)) -# endif -# undef _KERNEL -#else -# define atomic_add_8(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_16(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_32(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_size(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_dec_8(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_16(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_32(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_size(X) __sync_fetch_and_sub((X), 1) -/* The same as above, but these return the new value instead of void */ -# define atomic_add_8_nv(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_16_nv(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_32_nv(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_add_size_nv(X, Y) __sync_fetch_and_add((X), (Y)) -# define atomic_dec_8_nv(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_16_nv(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_32_nv(X) __sync_fetch_and_sub((X), 1) -# define atomic_dec_size_nv(X) __sync_fetch_and_sub((X), 1) -#endif /* defined(__SUNPRO_C) */ +#define _KERNEL +#include <sys/cdefs.h> +#include <machine/atomic.h> + +/* atomic_add_{8,16,32} already defined in machine/atomic.h */ +#define atomic_dec_8(X) atomic_subtract_8((X), 1) +#define atomic_dec_16(X) atomic_subtract_16((X), 1) +#define atomic_dec_32(X) atomic_subtract_32((X), 1) +#define atomic_add_size(X, Y) atomic_add_32((X), (Y)) +#define atomic_dec_size(X, Y) atomic_subtract_32((X), (Y)) +#define atomic_add_size_nv(X, Y) atomic_fetchadd_32((X), (Y)) +#define atomic_add_32_nv(X, Y) atomic_fetchadd_32((X), (Y)) + +#undef _KERNEL #endif /* CLIENTS_MS_ATOMIC_H */ >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001141207.o0EC7Vaw058938>