From 62139dc2e27080fe8e557d4a46ce5dbc1534ef33 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 28 Aug 2017 17:11:33 +0200 Subject: [PATCH] MDEV-13656 10.3 does not build on CentOS 5 x86 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Force -march=i686 (just like innodb used to do for years). And disable query_response_time plugin, it fails to compile with /mnt/server/plugin/query_response_time/query_response_time.cc:279: error: unable to find a register to spill in class ‘GENERAL_REGS’ /mnt/server/plugin/query_response_time/query_response_time.cc:279: error: this is the insn: (insn:HI 70 69 71 9 /mnt/server/include/my_atomic.h:194 (parallel [ (set (reg:DI 82) (mem/v:DI (plus:SI (reg/f:SI 79) (reg:SI 78)) [-1 S8 A32])) (set (mem/v:DI (plus:SI (reg/f:SI 79) (reg:SI 78)) [-1 S8 A32]) (unspec_volatile:DI [ (mem/v:DI (plus:SI (reg/f:SI 79) (reg:SI 78)) [-1 S8 A32]) (reg:DI 82) (reg:SI 83) (reg:SI 84) ] 10)) (set (reg:CCZ 17 flags) (compare:CCZ (unspec_volatile:DI [ (mem/v:DI (plus:SI (reg/f:SI 79) (reg:SI 78)) [-1 S8 A32]) (reg:DI 82) (reg:SI 83) (reg:SI 84) ] 11) (reg:DI 82))) ]) 1101 {*sync_double_compare_and_swap_ccdi_pic} (insn_list:REG_DEP_TRUE 68 (insn_list:REG_DEP_TRUE 69 (nil))) (expr_list:REG_DEAD (reg:SI 84) (expr_list:REG_DEAD (reg:SI 83) (nil)))) --- configure.cmake | 8 ++++++++ storage/innobase/innodb.cmake | 7 ------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/configure.cmake b/configure.cmake index 76e91bce4c0..079e0c1540c 100644 --- a/configure.cmake +++ b/configure.cmake @@ -65,6 +65,14 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") ENDIF() ENDIF() +# workaround for old gcc on x86, gcc atomic ops only work under -march=i686 +IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND CMAKE_COMPILER_IS_GNUCC AND + CMAKE_C_COMPILER_VERSION VERSION_LESS "4.4.0") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686") + SET(PLUGIN_QUERY_RESPONSE_TIME NO) # "error: unable to find a register to spill" +ENDIF() + IF(WITHOUT_DYNAMIC_PLUGINS) MESSAGE("Dynamic plugins are disabled.") ENDIF(WITHOUT_DYNAMIC_PLUGINS) diff --git a/storage/innobase/innodb.cmake b/storage/innobase/innodb.cmake index d916d8b4160..b3e52fa10b1 100644 --- a/storage/innobase/innodb.cmake +++ b/storage/innobase/innodb.cmake @@ -156,13 +156,6 @@ IF(HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE) ENDIF() IF(NOT MSVC) - # workaround for old gcc on x86, gcc atomic ops only work under -march=i686 - IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND CMAKE_COMPILER_IS_GNUCC AND - CMAKE_C_COMPILER_VERSION VERSION_LESS "4.4.0") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686") - ENDIF() - # Only use futexes on Linux if GCC atomics are available IF(NOT MSVC AND NOT CMAKE_CROSSCOMPILING) CHECK_C_SOURCE_RUNS(