diff options
author | 2018-05-14 20:58:32 -0400 | |
---|---|---|
committer | 2018-05-14 20:58:32 -0400 | |
commit | 678eed98813b2485d9c4ab96421befb59b570a31 (patch) | |
tree | c81bbaa8b6b749ebd68af1cf0549759aeb25bab6 /20035_all_mariadb-10.1-atomic-detection.patch | |
parent | Respin client-libs patch for percona 5.6.39 (diff) | |
download | mysql-extras-678eed98813b2485d9c4ab96421befb59b570a31.tar.gz mysql-extras-678eed98813b2485d9c4ab96421befb59b570a31.tar.bz2 mysql-extras-678eed98813b2485d9c4ab96421befb59b570a31.zip |
Add atomic detection patch from Debianmysql-extras-20180515-0123Z
Diffstat (limited to '20035_all_mariadb-10.1-atomic-detection.patch')
-rw-r--r-- | 20035_all_mariadb-10.1-atomic-detection.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/20035_all_mariadb-10.1-atomic-detection.patch b/20035_all_mariadb-10.1-atomic-detection.patch new file mode 100644 index 0000000..b2545c0 --- /dev/null +++ b/20035_all_mariadb-10.1-atomic-detection.patch @@ -0,0 +1,140 @@ +Borrowed from Debian to make atomic detection easier + +From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org> +Date: Thu, 10 Aug 2017 20:40:29 +0200 +Subject: c11_atomics + +--- + configure.cmake | 23 +++++++++++++++++++++-- + include/atomic/gcc_builtins.h | 15 +++++++++++++++ + include/atomic/nolock.h | 4 ++-- + mysys/CMakeLists.txt | 4 ++++ + sql/CMakeLists.txt | 4 ++++ + 5 files changed, 46 insertions(+), 4 deletions(-) + +diff --git a/configure.cmake b/configure.cmake +index 0057c7f..43ad114 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -128,7 +128,7 @@ IF(UNIX) + ENDIF() + FIND_PACKAGE(Threads) + +- SET(CMAKE_REQUIRED_LIBRARIES ++ LIST(APPEND CMAKE_REQUIRED_LIBRARIES + ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO}) + # Need explicit pthread for gcc -fsanitize=address + IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=") +@@ -1028,7 +1028,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS) + long long int *ptr= &var; + return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST); + }" +- HAVE_GCC_C11_ATOMICS) ++ HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC) ++ IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC) ++ SET(HAVE_GCC_C11_ATOMICS True) ++ ELSE() ++ SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) ++ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") ++ CHECK_CXX_SOURCE_COMPILES(" ++ int main() ++ { ++ long long int var= 1; ++ long long int *ptr= &var; ++ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST); ++ }" ++ HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) ++ IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) ++ SET(HAVE_GCC_C11_ATOMICS True) ++ ELSE() ++ SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES}) ++ ENDIF() ++ ENDIF() + ELSE() + MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!") + ENDIF() +diff --git a/include/atomic/gcc_builtins.h b/include/atomic/gcc_builtins.h +index 56a0323..044be2e 100644 +--- a/include/atomic/gcc_builtins.h ++++ b/include/atomic/gcc_builtins.h +@@ -16,6 +16,7 @@ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + ++#if defined (HAVE_GCC_ATOMIC_BUILTINS) + #define make_atomic_add_body(S) \ + v= __sync_fetch_and_add(a, v); + #define make_atomic_fas_body(S) \ +@@ -26,6 +27,20 @@ + sav= __sync_val_compare_and_swap(a, cmp_val, set);\ + if (!(ret= (sav == cmp_val))) *cmp= sav + ++#elif defined(HAVE_GCC_C11_ATOMICS) ++ ++#define make_atomic_add_body(S) \ ++ v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST) ++#define make_atomic_fas_body(S) \ ++ v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST) ++#define make_atomic_cas_body(S) \ ++ int ## S sav; \ ++ ret= __atomic_compare_exchange_n(a, cmp, set, \ ++ 0, \ ++ __ATOMIC_SEQ_CST,\ ++ __ATOMIC_SEQ_CST); ++#endif ++ + #ifdef MY_ATOMIC_MODE_DUMMY + #define make_atomic_load_body(S) ret= *a + #define make_atomic_store_body(S) *a= v +diff --git a/include/atomic/nolock.h b/include/atomic/nolock.h +index 2137445..2ad7d98 100644 +--- a/include/atomic/nolock.h ++++ b/include/atomic/nolock.h +@@ -17,7 +17,7 @@ + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + + #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__) \ +- || defined(HAVE_GCC_ATOMIC_BUILTINS) \ ++ || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \ + || defined(HAVE_SOLARIS_ATOMIC) + + # ifdef MY_ATOMIC_MODE_DUMMY +@@ -41,7 +41,7 @@ + # elif __GNUC__ + # if defined(HAVE_SOLARIS_ATOMIC) + # include "solaris.h" +-# elif defined(HAVE_GCC_ATOMIC_BUILTINS) ++# elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) + # include "gcc_builtins.h" + # elif defined(__i386__) || defined(__x86_64__) + # include "x86-gcc.h" +diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt +index eb7f75e..a9221d7 100644 +--- a/mysys/CMakeLists.txt ++++ b/mysys/CMakeLists.txt +@@ -78,6 +78,10 @@ IF(HAVE_BFD_H) + TARGET_LINK_LIBRARIES(mysys bfd) + ENDIF(HAVE_BFD_H) + ++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) ++ TARGET_LINK_LIBRARIES(mysys atomic) ++ENDIF() ++ + IF (WIN32) + TARGET_LINK_LIBRARIES(mysys IPHLPAPI) + ENDIF(WIN32) +diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt +index b4acac5..8247714 100644 +--- a/sql/CMakeLists.txt ++++ b/sql/CMakeLists.txt +@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} + ${SSL_LIBRARIES} + ${LIBSYSTEMD}) + ++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) ++ TARGET_LINK_LIBRARIES(sql atomic) ++ENDIF() ++ + IF(WIN32) + SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc) + TARGET_LINK_LIBRARIES(sql psapi) |