Control: tags +patch On 11/30/18 1:05 PM, John Paul Adrian Glaubitz wrote: > Attaching a proof-of-concept patch which fixes the issue for me. > > The patch shouldn't be used as-is as it links against libatomic > unconditionally while it should only link against it when necessary.
Attaching a cleaned-up patch which does the -latomic linking conditionally. I'll try to upstream it. Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - glaub...@debian.org `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Description: Link against libatomic where necessary Author: John Paul Adrian Glaubitz <glaub...@physik.fu-berlin.de> Last-Update: 2018-11-30 Index: mariadb-10.3-10.3.0/configure.cmake =================================================================== --- mariadb-10.3-10.3.0.orig/configure.cmake +++ mariadb-10.3-10.3.0/configure.cmake @@ -932,6 +932,21 @@ int main() }" HAVE_GCC_ATOMIC_BUILTINS) CHECK_CXX_SOURCE_COMPILES(" +#include <cstdint> +int main() { + uint64_t x = 1; + __atomic_add_fetch(&x, 0, __ATOMIC_RELAXED); + return x; +} +" HAVE__ATOMIC_ADD_FETCH) +if (NOT HAVE__ATOMIC_ADD_FETCH) + check_library_exists(atomic __atomic_add_fetch_8 "" HAVE_LIBATOMIC) + if (HAVE_LIBATOMIC) + SET(CMAKE_REQUIRED_LIBRARIES atomic) + SET(LIBATOMIC atomic) + endif() +endif() +CHECK_CXX_SOURCE_COMPILES(" int main() { long long int var= 1; Index: mariadb-10.3-10.3.0/unittest/mysys/CMakeLists.txt =================================================================== --- mariadb-10.3-10.3.0.orig/unittest/mysys/CMakeLists.txt +++ mariadb-10.3-10.3.0/unittest/mysys/CMakeLists.txt @@ -15,7 +15,7 @@ MY_ADD_TESTS(bitmap base64 my_atomic my_rdtsc lf my_malloc my_getopt dynstring aes - LINK_LIBRARIES mysys) + LINK_LIBRARIES mysys ${LIBATOMIC}) MY_ADD_TESTS(my_vsnprintf LINK_LIBRARIES strings mysys) ADD_DEFINITIONS(${SSL_DEFINES}) Index: mariadb-10.3-10.3.0/storage/perfschema/unittest/CMakeLists.txt =================================================================== --- mariadb-10.3-10.3.0.orig/storage/perfschema/unittest/CMakeLists.txt +++ mariadb-10.3-10.3.0/storage/perfschema/unittest/CMakeLists.txt @@ -29,4 +29,4 @@ ADD_DEPENDENCIES(pfs_server_stubs GenErr MY_ADD_TESTS(pfs_instr_class pfs_instr_class-oom pfs_instr pfs_instr-oom pfs_account-oom pfs_host-oom pfs_timer pfs_user-oom pfs pfs_misc - EXT "cc" LINK_LIBRARIES perfschema mysys pfs_server_stubs) + EXT "cc" LINK_LIBRARIES perfschema mysys pfs_server_stubs ${LIBATOMIC}) Index: mariadb-10.3-10.3.0/unittest/sql/CMakeLists.txt =================================================================== --- mariadb-10.3-10.3.0.orig/unittest/sql/CMakeLists.txt +++ mariadb-10.3-10.3.0/unittest/sql/CMakeLists.txt @@ -27,7 +27,7 @@ ELSE() ADD_EXECUTABLE(explain_filename-t explain_filename-t.cc) ENDIF() -TARGET_LINK_LIBRARIES(explain_filename-t sql mytap) +TARGET_LINK_LIBRARIES(explain_filename-t sql mytap ${LIBATOMIC}) MY_ADD_TEST(explain_filename) ADD_EXECUTABLE(mf_iocache-t mf_iocache-t.cc ../../sql/mf_iocache_encr.cc) Index: mariadb-10.3-10.3.0/sql/CMakeLists.txt =================================================================== --- mariadb-10.3-10.3.0.orig/sql/CMakeLists.txt +++ mariadb-10.3-10.3.0/sql/CMakeLists.txt @@ -178,7 +178,8 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${WSREP_LIB} ${SSL_LIBRARIES} - ${LIBSYSTEMD}) + ${LIBSYSTEMD} + ${LIBATOMIC}) IF(WIN32) SET(MYSQLD_SOURCE main.cc nt_servc.cc nt_servc.h message.rc) Index: mariadb-10.3-10.3.0/libmysqld/CMakeLists.txt =================================================================== --- mariadb-10.3-10.3.0.orig/libmysqld/CMakeLists.txt +++ mariadb-10.3-10.3.0/libmysqld/CMakeLists.txt @@ -140,7 +140,7 @@ ENDIF() SET(LIBS - dbug strings mysys mysys_ssl pcre vio + dbug strings mysys mysys_ssl pcre vio ${LIBATOMIC} ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${MYSQLD_STATIC_PLUGIN_LIBS}