Merge "[MIPS] Do not use compact branches until GDB supports them"
diff --git a/core/clang/mips.mk b/core/clang/mips.mk
index 70832a3..b2ea579 100644
--- a/core/clang/mips.mk
+++ b/core/clang/mips.mk
@@ -14,6 +14,9 @@
-msynci \
-mno-fused-madd
+# Temporary workaround until GDB supports compact branches.
+CLANG_CONFIG_mips_UNKNOWN_CFLAGS += -mcompact-branches=never
+
# Temporary workaround for Mips clang++ problem, creates
# relocated ptrs in read-only pic .gcc_exception_table;
# permanent fix pending at http://reviews.llvm.org/D9669
diff --git a/core/clang/mips64.mk b/core/clang/mips64.mk
index ba9c1d1..0a90428 100644
--- a/core/clang/mips64.mk
+++ b/core/clang/mips64.mk
@@ -14,6 +14,9 @@
-msynci \
-mno-fused-madd
+# Temporary workaround until GDB supports compact branches.
+CLANG_CONFIG_mips64_UNKNOWN_CFLAGS += -mcompact-branches=never
+
# Temporary workaround for Mips clang++ problem creating
# relocated ptrs in read-only pic .gcc_exception_table;
# permanent fix pending at http://reviews.llvm.org/D9669
diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk
index 962aa45..87a6144 100644
--- a/core/combo/TARGET_linux-mips.mk
+++ b/core/combo/TARGET_linux-mips.mk
@@ -79,6 +79,15 @@
TARGET_mips_CFLAGS += -fno-omit-frame-pointer
endif
+# For mips r6 (both 32bit and 64bit), GDB cannot stop on a breakpoint
+# if it is set on a compact branch. Turn generation of compact
+# branches off, to allow GDB to work properly.
+# Note: JIC instruction is not affected by this flag.
+# TODO: Remove this after GDB is fixed.
+ifeq ($(TARGET_ARCH),mips64)
+TARGET_mips_CFLAGS += -mcompact-branches=never
+endif
+
android_config_h := $(call select-android-config-h,linux-mips)
$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += \
diff --git a/core/combo/TARGET_linux-mips64.mk b/core/combo/TARGET_linux-mips64.mk
index 1116f46..f01cdd1 100644
--- a/core/combo/TARGET_linux-mips64.mk
+++ b/core/combo/TARGET_linux-mips64.mk
@@ -79,6 +79,15 @@
TARGET_mips_CFLAGS += -fno-omit-frame-pointer
endif
+# For mips r6 (both 32bit and 64bit), GDB cannot stop on a breakpoint
+# if it is set on a compact branch. Turn generation of compact
+# branches off, to allow GDB to work properly.
+# Note: JIC instruction is not affected by this flag.
+# TODO: Remove this after GDB is fixed.
+ifeq ($(TARGET_ARCH),mips64)
+TARGET_mips_CFLAGS += -mcompact-branches=never
+endif
+
android_config_h := $(call select-android-config-h,linux-mips64)
TARGET_GLOBAL_CFLAGS += \