summarylogtreecommitdiffstats
path: root/enable-with-multilib-list-for-arm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'enable-with-multilib-list-for-arm.patch')
-rw-r--r--enable-with-multilib-list-for-arm.patch196
1 files changed, 196 insertions, 0 deletions
diff --git a/enable-with-multilib-list-for-arm.patch b/enable-with-multilib-list-for-arm.patch
new file mode 100644
index 00000000000..5af76c541b7
--- /dev/null
+++ b/enable-with-multilib-list-for-arm.patch
@@ -0,0 +1,196 @@
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index f675e073ecc..cced5329b47 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -558,6 +558,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
+ lang_specs_files=@lang_specs_files@
+ lang_tree_files=@lang_tree_files@
+ target_cpu_default=@target_cpu_default@
++with_multilib_list=@with_multilib_list@
+ OBJC_BOEHM_GC=@objc_boehm_gc@
+ extra_modes_file=@extra_modes_file@
+ extra_opt_files=@extra_opt_files@
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index b8bb4d65825..713e35b62af 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -1140,7 +1140,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
+ case ${target} in
+ arm*-*-eabi*)
+ tm_file="$tm_file newlib-stdint.h"
+- tmake_file="${tmake_file} arm/t-bpabi"
++ tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
+ use_gcc_stdint=wrap
+ ;;
+ arm*-*-fuchsia*)
+@@ -3787,43 +3787,6 @@ case "${target}" in
+ echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
+ exit 1
+ fi
+-
+- # Add extra multilibs
+- if test "x$with_multilib_list" != x; then
+- arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
+- for arm_multilib in ${arm_multilibs}; do
+- case ${arm_multilib} in
+- aprofile)
+- # Note that arm/t-aprofile is a
+- # stand-alone make file fragment to be
+- # used only with itself. We do not
+- # specifically use the
+- # TM_MULTILIB_OPTION framework because
+- # this shorthand is more
+- # pragmatic. Additionally it is only
+- # designed to work without any
+- # with-cpu, with-arch with-mode
+- # with-fpu or with-float options.
+- if test "x$with_arch" != x \
+- || test "x$with_cpu" != x \
+- || test "x$with_float" != x \
+- || test "x$with_fpu" != x \
+- || test "x$with_mode" != x ; then
+- echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
+- exit 1
+- fi
+- tmake_file="${tmake_file} arm/t-aprofile"
+- break
+- ;;
+- default)
+- ;;
+- *)
+- echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
+- exit 1
+- ;;
+- esac
+- done
+- fi
+ ;;
+
+ fr*-*-*linux*)
+diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
+new file mode 100644
+index 00000000000..5720cf7503d
+--- /dev/null
++++ b/gcc/config/arm/t-mlibs
+@@ -0,0 +1,89 @@
++# A set of predefined MULTILIB which can be used for different ARM targets.
++# Via the configure option --with-multilib-list, user can customize the
++# final MULTILIB implementation.
++
++comma := ,
++space :=
++space +=
++
++MULTILIB_OPTIONS = mthumb/marm
++MULTILIB_DIRNAMES = thumb arm
++MULTILIB_OPTIONS += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
++MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
++MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES += softfp fpu
++MULTILIB_OPTIONS += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
++MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
++
++MULTILIB_MATCHES = march?armv6s-m=mcpu?cortex-m0
++MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0plus
++MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m1
++MULTILIB_MATCHES += march?armv6s-m=march?armv6-m
++MULTILIB_MATCHES += march?armv7-m=mcpu?cortex-m3
++MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m4
++MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m7
++MULTILIB_MATCHES += march?armv7=march?armv7-r
++MULTILIB_MATCHES += march?armv7=march?armv7-a
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r5
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r7
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a7
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9
++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a15
++MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
++MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4-d16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-fp16
++MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-vfpv4
++
++MULTILIB_EXCEPTIONS =
++MULTILIB_REUSE =
++
++MULTILIB_REQUIRED = mthumb
++MULTILIB_REQUIRED += marm
++MULTILIB_REQUIRED += mfloat-abi=hard
++
++MULTILIB_OSDIRNAMES = mthumb=!thumb
++MULTILIB_OSDIRNAMES += marm=!arm
++MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
++
++ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
++MULTILIB_REQUIRED += mthumb/march=armv6s-m
++MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
++endif
++
++ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
++MULTILIB_REQUIRED += mthumb/march=armv7-m
++MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
++endif
++
++ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
++MULTILIB_REQUIRED += mthumb/march=armv7e-m
++MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
++MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
++MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
++MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
++MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
++endif
++
++ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
++MULTILIB_REQUIRED += mthumb/march=armv7
++MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
++MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
++MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
++MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
++MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
++MULTILIB_REUSE += mthumb/march.armv7=marm/march.armv7
++MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
++MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
++endif
+diff --git a/gcc/configure b/gcc/configure
+index ea73b151a4e..c609f25e50c 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -772,6 +772,7 @@ SET_MAKE
+ accel_dir_suffix
+ real_target_noncanonical
+ enable_as_accelerator
++with_multilib_list
+ REPORT_BUGS_TEXI
+ REPORT_BUGS_TO
+ PKGVERSION
+@@ -7763,6 +7764,7 @@ else
+ fi
+
+
++
+ # -------------------------
+ # Checks for other programs
+ # -------------------------
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 9d4c792a33f..abd988eb113 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1007,6 +1007,7 @@ AC_ARG_WITH(multilib-list,
+ [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
+ :,
+ with_multilib_list=default)
++AC_SUBST(with_multilib_list)
+
+ # -------------------------
+ # Checks for other programs