diff --git a/core/clang/mips.mk b/core/clang/mips.mk index 70832a33d..b2ea579ba 100644 --- a/core/clang/mips.mk +++ b/core/clang/mips.mk @@ -14,6 +14,9 @@ CLANG_CONFIG_mips_UNKNOWN_CFLAGS := \ -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 ba9c1d14b..0a904283f 100644 --- a/core/clang/mips64.mk +++ b/core/clang/mips64.mk @@ -14,6 +14,9 @@ CLANG_CONFIG_mips64_UNKNOWN_CFLAGS := \ -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 962aa4573..87a614441 100644 --- a/core/combo/TARGET_linux-mips.mk +++ b/core/combo/TARGET_linux-mips.mk @@ -79,6 +79,15 @@ ifeq ($(FORCE_MIPS_DEBUGGING),true) 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 1116f46eb..f01cdd1c0 100644 --- a/core/combo/TARGET_linux-mips64.mk +++ b/core/combo/TARGET_linux-mips64.mk @@ -79,6 +79,15 @@ ifeq ($(FORCE_MIPS_DEBUGGING),true) 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 += \