Ported from svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch * config.gcc (--with-multilib-list): Accept arm embedded cores. * configure.ac (with_multilib_list): Export for being used in arm embedded multilib fragment. * configure: Regenerated. * Makefile.in (with_multilib_list): Import for being used in multilib fragment. * config/arm/t-rmprofile: New multilib fragment for arm embedded cores.
Signed-off-by: Jasmin Jessich <jas...@anw.at> --- gcc/ChangeLog | 13 ++++++ gcc/Makefile.in | 1 + gcc/config.gcc | 12 ++++++ gcc/config/arm/t-rmprofile | 99 ++++++++++++++++++++++++++++++++++++++++++++++ gcc/configure | 6 ++- gcc/configure.ac | 1 + 6 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 gcc/config/arm/t-rmprofile diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 38e21a3..7af5e3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2015-11-04 Jasmin Jessich <jas...@anw.at> + + Add support for ARM embedded multilibs. Ported from + svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch + * config.gcc (--with-multilib-list): Accept arm embedded cores. + * configure.ac (with_multilib_list): Export for being used in arm + embedded multilib fragment. + * configure: Regenerated. + * Makefile.in (with_multilib_list): Import for being used in + multilib fragment. + * config/arm/t-rmprofile: New multilib fragment for arm embedded + cores. + 2015-11-03 Eric Botcazou <ebotca...@adacore.com> * gimple-expr.c (useless_type_conversion_p): Reinstate type canonical diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 34d2356..5aff5de 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -546,6 +546,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 4a7cbd2..8decf35 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3796,6 +3796,18 @@ case "${target}" in tmake_file="${tmake_file} arm/t-aprofile" break ;; + armv6-m | armv7-m | armv7e-m | armv7-r | armv7-a) + 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=${with_multilib_list}" 1>&2 + exit 1 + fi + tmake_file="${tmake_file} arm/t-rmprofile" + break + ;; default) ;; *) diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile new file mode 100644 index 0000000..3939461 --- /dev/null +++ b/gcc/config/arm/t-rmprofile @@ -0,0 +1,99 @@ +# 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/mcpu=cortex-m7 +MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar cortex-m7 +MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard +MULTILIB_DIRNAMES += softfp fpu +MULTILIB_OPTIONS += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16/mfpu=fpv5-sp-d16/mfpu=fpv5-d16 +MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16 fpv5-sp-d16 fpv5-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?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?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 (,$(findstring cortex-m7,$(subst $(comma),$(space),$(with_multilib_list)))) +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfloat-abi=softfp/mfpu=fpv5-sp-d16 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfloat-abi=hard/mfpu=fpv5-sp-d16 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfloat-abi=softfp/mfpu=fpv5-d16 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfloat-abi=hard/mfpu=fpv5-d16 +MULTILIB_OSDIRNAMES += mthumb/mcpu.cortex-m7=!cortex-m7 +MULTILIB_OSDIRNAMES += mthumb/mcpu.cortex-m7/mfloat-abi.hard/mfpu.fpv5-sp-d16=!cortex-m7/fpu/fpv5-sp-d16 +MULTILIB_OSDIRNAMES += mthumb/mcpu.cortex-m7/mfloat-abi.softfp/mfpu.fpv5-sp-d16=!cortex-m7/softfp/fpv5-sp-d16 +MULTILIB_OSDIRNAMES += mthumb/mcpu.cortex-m7/mfloat-abi.hard/mfpu.fpv5-d16=!cortex-m7/fpu/fpv5-d16 +MULTILIB_OSDIRNAMES += mthumb/mcpu.cortex-m7/mfloat-abi.softfp/mfpu.fpv5-d16=!cortex-m7/softfp/fpv5-d16 +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 92bda6c..8ced7ae 100755 --- a/gcc/configure +++ b/gcc/configure @@ -767,6 +767,7 @@ LN LN_S AWK SET_MAKE +with_multilib_list accel_dir_suffix real_target_noncanonical enable_as_accelerator @@ -7729,6 +7730,7 @@ else fi + # ------------------------- # Checks for other programs # ------------------------- @@ -18405,7 +18407,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18408 "configure" +#line 18410 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18511,7 +18513,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18514 "configure" +#line 18516 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index 7e22267..7a04162 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -960,6 +960,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 -- 1.9.1