From e79d06b0e852c5ae854bb27de9c9de7f29b4343d Mon Sep 17 00:00:00 2001 From: Chih-Hung Hsieh Date: Tue, 23 Jun 2015 14:18:14 -0700 Subject: [PATCH] Use gcc to build and test x86_64 long double code. Clang/llvm x86_64 configuration of long double is still incompatible with gcc. https://llvm.org/bugs/show_bug.cgi?id=23897 BUG: 21899249 Change-Id: I47fd6d0ce2daa84ae0035e7885a4d90e4c3056f7 --- libc/Android.mk | 7 +++++++ libm/Android.mk | 10 ++++++++-- tests/Android.mk | 5 +++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libc/Android.mk b/libc/Android.mk index 2c8f55483..de0bb4174 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -580,6 +580,13 @@ libc_common_cflags += -DTARGET_USES_LOGD endif use_clang := $(USE_CLANG_PLATFORM_BUILD) + +# Clang/llvm has incompatible long double (fp128) for x86_64. +# https://llvm.org/bugs/show_bug.cgi?id=23897 +ifeq ($(TARGET_ARCH),x86_64) + use_clang := false +endif + ifeq ($(use_clang),) use_clang := false endif diff --git a/libm/Android.mk b/libm/Android.mk index bc4c86d18..7a7e3b05f 100644 --- a/libm/Android.mk +++ b/libm/Android.mk @@ -3,6 +3,12 @@ LOCAL_PATH:= $(call my-dir) bionic_coverage := false +# Clang/llvm has incompatible long double (fp128) for x86_64. +# https://llvm.org/bugs/show_bug.cgi?id=23897 +ifeq ($(TARGET_ARCH),x86_64) +libm_clang := false +endif + # ----------------------------------------------------------------------------- # libm.a # ----------------------------------------------------------------------------- @@ -473,7 +479,7 @@ LOCAL_C_INCLUDES_x86 += $(LOCAL_PATH)/i387 LOCAL_C_INCLUDES += $(LOCAL_PATH)/upstream-freebsd/lib/msun/src/ LOCAL_C_INCLUDES_64 += $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/ -LOCAL_CLANG := true +LOCAL_CLANG := $(libm_clang) LOCAL_ARM_MODE := arm LOCAL_CFLAGS := \ -DFLT_EVAL_METHOD=0 \ @@ -514,7 +520,7 @@ LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both LOCAL_LDFLAGS := -Wl,--version-script,$(LOCAL_PATH)/libm.map LOCAL_MODULE := libm -LOCAL_CLANG := true +LOCAL_CLANG := $(libm_clang) LOCAL_SYSTEM_SHARED_LIBRARIES := libc LOCAL_WHOLE_STATIC_LIBRARIES := libm diff --git a/tests/Android.mk b/tests/Android.mk index 84d342674..8aba70bbf 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -137,6 +137,11 @@ libBionicStandardTests_static_libraries := \ libBionicStandardTests_ldlibs_host := \ -lrt \ +# Clang/llvm has incompatible long double (fp128) for x86_64. +# https://llvm.org/bugs/show_bug.cgi?id=23897 +# This affects most of math_test.cpp. +libBionicStandardTests_clang_target := false + module := libBionicStandardTests module_tag := optional build_type := target