[compiler-rt] Add platform detection support for x32
authorJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Fri, 11 Jun 2021 18:44:04 +0000 (19:44 +0100)
committerHarald van Dijk <harald@gigawatt.nl>
Fri, 11 Jun 2021 18:44:04 +0000 (19:44 +0100)
Currently, the compiler-rt build system checks only whether __X86_64
is defined to determine whether the default compiler-rt target arch
is x86_64. Since x32 defines __X86_64 as well, we must also check that
the default pointer size is eight bytes and not four bytes to properly
detect a 64-bit x86_64 compiler-rt default target arch.

Reviewed By: hvdijk, vitalybuka

Differential Revision: https://reviews.llvm.org/D99988

compiler-rt/cmake/Modules/CompilerRTUtils.cmake

index e8e0ec20af290cabfda36284421f75d9664dec45..88ee021fe68c9ed466062a7e2b43b8d867b85843 100644 (file)
@@ -173,7 +173,13 @@ macro(detect_target_arch)
   elseif(__AARCH64)
     add_default_target_arch(aarch64)
   elseif(__X86_64)
-    add_default_target_arch(x86_64)
+    if(CMAKE_SIZEOF_VOID_P EQUAL "4")
+      add_default_target_arch(x32)
+    elseif(CMAKE_SIZEOF_VOID_P EQUAL "8")
+      add_default_target_arch(x86_64)
+    else()
+      message(FATAL_ERROR "Unsupported pointer size for X86_64")
+    endif()
   elseif(__I386)
     add_default_target_arch(i386)
   elseif(__MIPS64) # must be checked before __MIPS