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 += \