configure: Disable movw/movt with clang.
authorVladimir Serbinenko <phcoder@gmail.com>
Sun, 22 Jan 2017 21:52:32 +0000 (00:52 +0300)
committerVladimir Serbinenko <phcoder@gmail.com>
Fri, 27 Jan 2017 18:48:23 +0000 (18:48 +0000)
Those relocations are not compatible with PE and also
not compatible with custom uboot relocator.
Disable them.

configure.ac

index 4e980c5..ab7fa92 100644 (file)
@@ -1152,6 +1152,16 @@ if test "$target_cpu"-"$platform" = x86_64-efi; then
 fi
 
 if test "x$target_cpu" = xarm; then
+  AC_CACHE_CHECK([whether option -mllvm -arm-use-movt=0 works], grub_cv_cc_mllvm_arm_use_movt, [
+    CPPFLAGS="$TARGET_CPPFLAGS -mllvm -arm-use-movt=0 -Werror"
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+                     [grub_cv_cc_mllvm_arm_use_movt=yes],
+                     [grub_cv_cc_mllvm_arm_use_movt=no])
+  ])
+  if test "x$grub_cv_cc_mllvm_arm_use_movt" = xyes; then
+    # A trick so that clang doesn't see it on link stage
+    TARGET_CPPFLAGS="$TARGET_CPPFLAGS -mllvm -arm-use-movt=0"
+  fi
   AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
     CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],