aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Ellcey <Steve.Ellcey@imgtec.com>2014-07-15 15:10:50 -0700
committerAndrew Hsieh <andrewhsieh@google.com>2014-07-17 18:03:00 +0800
commitc231900e5dcc14d8296bd9f62b45997a49d4d5e7 (patch)
treeab4a183eee7cca336825e7c45b58c99638d31f83
parent1a6666161c7e53383194203abfbe0367a804416f (diff)
downloadtoolchain_gcc-c231900e5dcc14d8296bd9f62b45997a49d4d5e7.tar.gz
toolchain_gcc-c231900e5dcc14d8296bd9f62b45997a49d4d5e7.tar.bz2
toolchain_gcc-c231900e5dcc14d8296bd9f62b45997a49d4d5e7.zip
Modify multilib usage for MIPS android platforms.
Fix mips32r6 multilib for mipsel-*android* target and create new multilib config for mips64el-*android* target. Also modify default ABI and FPXX settings for android based on -mips* flags. Change-Id: Ib7b232182f3e4507f3804443f83a63b882af57da
-rw-r--r--gcc-4.9/gcc/config.gcc4
-rw-r--r--gcc-4.9/gcc/config/mips/android.h45
-rw-r--r--gcc-4.9/gcc/config/mips/t-linux-android4
-rw-r--r--gcc-4.9/gcc/config/mips/t-linux-android644
4 files changed, 54 insertions, 3 deletions
diff --git a/gcc-4.9/gcc/config.gcc b/gcc-4.9/gcc/config.gcc
index 3d687d2e8..79f57de55 100644
--- a/gcc-4.9/gcc/config.gcc
+++ b/gcc-4.9/gcc/config.gcc
@@ -1969,14 +1969,16 @@ mips*-mti-linux*)
mips64*-*-linux* | mipsisa64*-*-linux*)
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h"
extra_options="${extra_options} linux-android.opt"
- tmake_file="${tmake_file} mips/t-linux64"
case ${target} in
*android*)
# Default to ABI_64 for MIPS64 Android
+ tm_file="${tm_file} mips/android.h"
+ tmake_file="${tmake_file} mips/t-linux-android64"
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=69"
;;
*)
+ tmake_file="${tmake_file} mips/t-linux64"
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
;;
esac
diff --git a/gcc-4.9/gcc/config/mips/android.h b/gcc-4.9/gcc/config/mips/android.h
new file mode 100644
index 000000000..00eac095d
--- /dev/null
+++ b/gcc-4.9/gcc/config/mips/android.h
@@ -0,0 +1,45 @@
+/* Target macros for mips*-*android* targets.
+ Copyright (C) 2014 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+ /* Make sure a -mips option is present. This helps us to pick \
+ the right multilib, and also makes the later specs easier \
+ to write. */ \
+ MIPS_ISA_LEVEL_SPEC, \
+ \
+ /* Infer the default float setting (hard or soft) from -march. */ \
+ MIPS_ARCH_FLOAT_SPEC, \
+ \
+ /* Infer the -msynci setting from -march if not explicitly set. */ \
+ MIPS_ISA_SYNCI_SPEC, \
+ \
+ /* If no ABI option is specified, infer one from the ISA level \
+ or -mgp setting. */ \
+ "%{!mabi=*: %{" MIPS_32BIT_OPTION_SPEC ": -mabi=32;: -mabi=64}}", \
+ \
+ /* If no FP option is specified, infer one from the ABI/ISA level. */\
+ "%{!mfp*: %{mabi=32: \
+ %{" MIPS_FPXX_OPTION_SPEC ": -mfpxx -mno-odd-spreg }}}", \
+ \
+ /* Base SPECs. */ \
+ BASE_DRIVER_SELF_SPECS \
+ \
+ /* Use the standard linux specs for everything else. */ \
+ LINUX64_DRIVER_SELF_SPECS
diff --git a/gcc-4.9/gcc/config/mips/t-linux-android b/gcc-4.9/gcc/config/mips/t-linux-android
index 00b4e3ac2..39f512c81 100644
--- a/gcc-4.9/gcc/config/mips/t-linux-android
+++ b/gcc-4.9/gcc/config/mips/t-linux-android
@@ -1,3 +1,3 @@
-MULTILIB_OPTIONS = mips32r2 mips32r6
+MULTILIB_OPTIONS = mips32r2/mips32r6
MULTILIB_DIRNAMES = mips-r2 mips-r6
-MULTILIB_EXCLUSIONS :=
+MULTILIB_OSDIRNAMES = ../libr2 ../libr6
diff --git a/gcc-4.9/gcc/config/mips/t-linux-android64 b/gcc-4.9/gcc/config/mips/t-linux-android64
new file mode 100644
index 000000000..55cab7d62
--- /dev/null
+++ b/gcc-4.9/gcc/config/mips/t-linux-android64
@@ -0,0 +1,4 @@
+MULTILIB_OPTIONS = mabi=32 mips32/mips32r2/mips32r6/mips64r2/mips64r6
+MULTILIB_DIRNAMES = 32 mips-r1 mips-r2 mips-r6 mips64-r2 mips64-r6
+MULTILIB_OSDIRNAMES = ../lib ../lib ../libr2 ../libr6 ../lib64r2 ../lib64
+MULTILIB_REQUIRED = mabi=32/mips32 mabi=32/mips32r2 mabi=32/mips32r6 mips64r2 mips64r6