Bug #105488 the two question about compiling mysql on arm platform
Submitted: 8 Nov 2021 2:37 Modified: 8 Nov 2021 5:43
Reporter: silong zheng Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:8.0.25, 8.0.27 OS:CentOS (centos7)
Assigned to: CPU Architecture:ARM (Linux phy-212-120 4.14.0-115.el7a.0.1.aarch64 #1 SMP Tue Sep 24 08:53:46 CST 2019 aarch64 aarch64 aa)

[8 Nov 2021 2:37] silong zheng
Description:
1. when i compile mysql on my arm platform, on debug mode, with ENBALE_GCOV, it report error when CMAKE_C_LINK_FLAGS is empty

diff --git a/router/CMakeLists.txt b/router/CMakeLists.txt
index ff21156..fa21091 100644
--- a/router/CMakeLists.txt
+++ b/router/CMakeLists.txt
@@ -71,7 +71,7 @@ ENDIF()
 
 # ld.lld: error: corrupt input file:
 # version definition index 0 for symbol __gcov_var is out of bounds
-IF(ENABLE_GCOV)
+IF(ENABLE_GCOV AND CMAKE_C_LINK_FLAGS AND CMAKE_CXX_LINK_FLAGS)
   STRING(REPLACE "-fuse-ld=lld" ""
     CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS})
   STRING(REPLACE "-fuse-ld=lld" ""

the STRING function report error: we need 4 parameters, but only 3 parameters input

2. when i compile mysql on my arm platform, it break on error that: openssl: libssl.so ELF load command alignment not page-aligned

arm: get PAGESIZE 65536
X_86: get PAGESIZE 4096

diff --git a/cmake/copy_custom_library.cmake b/cmake/copy_custom_library.cmake
index 128932c..4436adb 100644
--- a/cmake/copy_custom_library.cmake
+++ b/cmake/copy_custom_library.cmake
@@ -47,14 +47,19 @@ ENDIF()
 EXECUTE_PROCESS(
   COMMAND chmod +x "./${library_version}")
 
+EXECUTE_PROCESS(COMMAND getconf PAGESIZE
+  TIMEOUT 5
+  OUTPUT_VARIABLE PAGEELF
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
 # Patch RPATH so that we find NEEDED libraries at load time.
 IF(subdir)
   EXECUTE_PROCESS(
-    COMMAND ${PATCHELF_EXECUTABLE} --set-rpath "$ORIGIN/.."
+    COMMAND ${PATCHELF_EXECUTABLE} --page-size ${PAGEELF} --set-rpath "$ORIGIN/.."
     "./${library_version}"
     )
 ELSE()
   EXECUTE_PROCESS(
-    COMMAND ${PATCHELF_EXECUTABLE} --set-rpath "$ORIGIN" "./${library_version}"
+    COMMAND ${PATCHELF_EXECUTABLE} --page-size ${PAGEELF} --set-rpath "$ORIGIN" "./${library_version}"
     )
 ENDIF()

How to repeat:
compile mysql on arm platform
[8 Nov 2021 5:43] MySQL Verification Team
Hello Silong zheng,

Thank you for the report and feedback.

regards,
Umesh