public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Add support for ARM embedded multilibs
@ 2015-11-04  0:29 Jasmin J.
  2015-11-04  7:47 ` Ramana Radhakrishnan
  0 siblings, 1 reply; 7+ messages in thread
From: Jasmin J. @ 2015-11-04  0:29 UTC (permalink / raw)
  To: gcc-patches

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 <jasmin@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  <jasmin@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  <ebotcazou@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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add support for ARM embedded multilibs
  2015-11-04  0:29 [PATCH] Add support for ARM embedded multilibs Jasmin J.
@ 2015-11-04  7:47 ` Ramana Radhakrishnan
  2015-11-04  8:44   ` Jasmin J.
  0 siblings, 1 reply; 7+ messages in thread
From: Ramana Radhakrishnan @ 2015-11-04  7:47 UTC (permalink / raw)
  To: Jasmin J.; +Cc: gcc-patches

On Wed, Nov 4, 2015 at 12:29 AM, Jasmin J. <jasmin@anw.at> wrote:

>

Thank you for your patch - In this case before you make any more
changes to this patch - comparing your patch and Terry's patch here
https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00729.html shows no real
differences, I would like to ask if  you have a copyright assignment
on file with the FSF - Please also read
https://gcc.gnu.org/contribute.html for more context on this.

How was your patch tested  - see for example how I added t-aprofile to
the backend and the kind of testing it underwent - I would prefer
something like that to be done for all the cpus listed in t-rmprofile
(https://gcc.gnu.org/ml/gcc-patches/2013-10/msg00659.html).

> 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.

This is already being used in config.gcc - why do you need this
additional hunk ?

>  * configure: Regenerated.
>  * Makefile.in (with_multilib_list): Import for being used in
>    multilib fragment.

Again why ?

>  * config/arm/t-rmprofile: New multilib fragment for arm embedded
>    cores.

New file is sufficient here in the Changelog entry.


The t-rmprofile file will need updating to newer values for -mcpu and
march as well as comments up top to explain what multilibs are being
built .

Ramana

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add support for ARM embedded multilibs
  2015-11-04  7:47 ` Ramana Radhakrishnan
@ 2015-11-04  8:44   ` Jasmin J.
  2015-11-04  9:43     ` Ramana Radhakrishnan
  0 siblings, 1 reply; 7+ messages in thread
From: Jasmin J. @ 2015-11-04  8:44 UTC (permalink / raw)
  To: Ramana Radhakrishnan; +Cc: gcc-patches

Hello Ramana!

> Thank you for your patch - In this case before you make any more
> changes to this patch - comparing your patch and Terry's patch here
> https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00729.html shows no real
> differences
As I wrote in the patch, it is a port from the embedded-4_9-branch and it
is exactly what Terry did. I didn't know this patch. I extracted it from
the branch.

All other stuff required to build a gcc for the ARM embedded CPUs are already
on gcc trunk. This last piece is missing to get rid of the embedded-X_X-branch!
I would love to see it in mainline GCC.

> I would like to ask if  you have a copyright assignment on file with the FSF
I will do that.

> How was your patch tested
The patch is old an doesn't contain any real GCC change, but support for the
library building process only. This was used since 15 months by many people
and I used it to build an ARM embedded compiler based on gcc-5-branch.

> see for example how I added t-aprofile to the backend and the kind of
> testing it underwent
I will look on that, if it is really required.

>>  * configure.ac (with_multilib_list): Export for being used in arm
>>    embedded multilib fragment.
>>  * Makefile.in (with_multilib_list): Import for being used in
>>    multilib fragment.
>
> This is already being used in config.gcc - why do you need this
> additional hunk ?
To be hones, I ported the patch and checked if it works. I will analyse it more
detailed, if this is really required.

> The t-rmprofile file will need updating to newer values for -mcpu and
> march as well as comments up top to explain what multilibs are being
> built .
Where can I find them?

BR
   Jasmin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add support for ARM embedded multilibs
  2015-11-04  8:44   ` Jasmin J.
@ 2015-11-04  9:43     ` Ramana Radhakrishnan
  2015-11-04 19:31       ` Jasmin J.
                         ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Ramana Radhakrishnan @ 2015-11-04  9:43 UTC (permalink / raw)
  To: Jasmin J., Ramana Radhakrishnan; +Cc: gcc-patches, Tejas Belagod



On 04/11/15 08:43, Jasmin J. wrote:
> Hello Ramana!
> 
>> Thank you for your patch - In this case before you make any more
>> changes to this patch - comparing your patch and Terry's patch here
>> https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00729.html shows no real
>> differences
> As I wrote in the patch, it is a port from the embedded-4_9-branch and it
> is exactly what Terry did. I didn't know this patch. I extracted it from
> the branch.

> 
> All other stuff required to build a gcc for the ARM embedded CPUs are already
> on gcc trunk. This last piece is missing to get rid of the embedded-X_X-branch!
> I would love to see it in mainline GCC.

CC'ing Tejas as he now looks after this branch internally at ARM. There are usually features on the embedded-X_X-branch used to create releases that may not be on an FSF release branch.

> 
>> I would like to ask if  you have a copyright assignment on file with the FSF
> I will do that.

So, you don't have one ? In which case it may make more sense for Tejas to deal with this given he can handle it under ARM's copyright assignment. If you make changes to this without a copyright assignment on file and submit it, it may be difficult to review this from a copyright position.

> 
>> How was your patch tested
> The patch is old an doesn't contain any real GCC change, but support for the
> library building process only. This was used since 15 months by many people
> and I used it to build an ARM embedded compiler based on gcc-5-branch.

Changing the way in which you build GCC is a real change to GCC that affects many developers. Not testing your change by building and checking that it does what it says on the tin is unacceptable.

> 
>> see for example how I added t-aprofile to the backend and the kind of
>> testing it underwent
> I will look on that, if it is really required.
> 
>>>  * configure.ac (with_multilib_list): Export for being used in arm
>>>    embedded multilib fragment.
>>>  * Makefile.in (with_multilib_list): Import for being used in
>>>    multilib fragment.
>>
>> This is already being used in config.gcc - why do you need this
>> additional hunk ?
> To be hones, I ported the patch and checked if it works. I will analyse it more
> detailed, if this is really required.
> 
>> The t-rmprofile file will need updating to newer values for -mcpu and
>> march as well as comments up top to explain what multilibs are being
>> built .
> Where can I find them?

gcc/doc/invoke.texi should document the rest.. I think mapping all the remaining -mcpu=cortex-a* cores and -mcpu=cortex-m* cores in there would be a sensible first step.


regards
Ramana


> 
> BR
>    Jasmin
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add support for ARM embedded multilibs
  2015-11-04  9:43     ` Ramana Radhakrishnan
@ 2015-11-04 19:31       ` Jasmin J.
  2015-11-08  0:24       ` Jasmin J.
  2015-11-27 22:43       ` [PATCH] [ping] " Jasmin J.
  2 siblings, 0 replies; 7+ messages in thread
From: Jasmin J. @ 2015-11-04 19:31 UTC (permalink / raw)
  To: Ramana Radhakrishnan, Ramana Radhakrishnan; +Cc: gcc-patches, Tejas Belagod

Hello Ramana!

> There are usually features on the embedded-X_X-branch used to create
> releases that may not be on an FSF release branch.
Not on the embedded-5 branch and as far as I analysed it, all changes of
embedded-4.9 branch are now at Trunk.

>> I would like to ask if  you have a copyright assignment on file with the
>> FSF
> So, you don't have one ? In which case it may make more sense for Tejas to
> deal with this given he can handle it under ARM's copyright assignment. If
> you make changes to this without a copyright assignment on file and submit
> it, it may be difficult to review this from a copyright position.
So shall I communicate with Tejas instead of gcc-patches?

On the other hand I just read
" Small changes can be accepted without a copyright disclaimer or a copyright
  assignment on file. "
And at the end, it is the same code as Terry's patch. But I will investigate
the things you mentioned in your first answer, if they are really required and
if no simplify the patch.

> Changing the way in which you build GCC is a real change to GCC that affects
> many developers.
Does it really? It is enabled only, if you use the "--with-multilib-list"
configure option. Without the option, gcc is build exactly the same.
Without the patch "--with-multilib-list" even to allowed for any ARM target.

> I think mapping all the remaining -mcpu=cortex-a* cores and -mcpu=cortex-m*
> cores in there would be a sensible first step.
THX for the hint.

BR
   Jasmin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Add support for ARM embedded multilibs
  2015-11-04  9:43     ` Ramana Radhakrishnan
  2015-11-04 19:31       ` Jasmin J.
@ 2015-11-08  0:24       ` Jasmin J.
  2015-11-27 22:43       ` [PATCH] [ping] " Jasmin J.
  2 siblings, 0 replies; 7+ messages in thread
From: Jasmin J. @ 2015-11-08  0:24 UTC (permalink / raw)
  To: Ramana Radhakrishnan, Ramana Radhakrishnan; +Cc: gcc-patches, Tejas Belagod

[-- Attachment #1: Type: text/plain, Size: 1635 bytes --]

Hello Ramana and Tejas!

The patch is originally from Terry Guo
(see https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00729.html).
SVN commit r210320 on svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch .

The original was using "with_multilib_list" instead of TM_MULTILIB_CONFIG.
Moreover, it did not check each argument of "$with_multilib_list".

I simplified the patch and reworked it to use TM_MULTILIB_CONFIG. Additionally
each argument of "$with_multilib_list" is now checked.
I added missing "armv7".

I added the FSF header to t-rmprofile and a little explanation.

Concerning the copyright assignment:

I found this sentence on the gcc contribute page:
  ... a copyright disclaimer to put the change in the public domain is
  acceptable as well.
and
  Small changes can be accepted without a copyright disclaimer or a copyright
  assignment on file.

So here it is:
****************
*
* I submit this change in the public domain.
*
****************

In the meantime, I found the copyright assignment form. I will send it soon
to gnu.org.

Concerning testing:

> see for example how I added t-aprofile to the backend and the kind of 
> testing it underwent
If this patch is now in principle acceptable, I will start working on your
suggested test scripts.

> The t-rmprofile file will need updating to newer values for -mcpu and 
> march
I will let this for open for other people, because I am not familiar with
the different CPU and ARCH variants. Keep in mind, that I am porting
Terry's patch only. But if someone it telling me what is required, I can add
it now and include it to the test scripts.

Regards,
   Jasmin

[-- Attachment #2: 0001-Add-support-for-ARM-embedded-multilibs.patch --]
[-- Type: text/x-patch, Size: 9231 bytes --]

From cfe11cfdfbe3c7655bac246bbf503ac0f5c7114d Mon Sep 17 00:00:00 2001
From: Jasmin Jessich <jasmin@anw.at>
Date: Sat, 24 Oct 2015 00:43:48 +0200
Subject: [PATCH] Add support for ARM embedded multilibs

Based on svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch
commit r210320 from Terry Guo <terry.guo@arm.com> .

 * config.gcc (--with-multilib-list): Accept arm embedded cores.
 * configure/configure.ac: Helptext.
 * config/arm/t-rmprofile: New file.

Signed-off-by: Terry Guo <terry.guo@arm.com>
Signed-off-by: Jasmin Jessich <jasmin@anw.at>
---
 gcc/config.gcc             |  14 ++++++
 gcc/config/arm/t-rmprofile | 121 +++++++++++++++++++++++++++++++++++++++++++++
 gcc/configure              |   2 +-
 gcc/configure.ac           |   2 +-
 4 files changed, 137 insertions(+), 2 deletions(-)
 create mode 100644 gcc/config/arm/t-rmprofile

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 9cc765e..57f333d 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|armv7-m|armv7e-m|armv7-r|armv7-a|cortex-m7)
+					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_ml=" arm/t-rmprofile"
+					TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${arm_multilib}"
+					;;
 				default)
 					;;
 				*)
@@ -3804,6 +3816,8 @@ case "${target}" in
 					;;
 				esac
 			done
+			tmake_file="${tmake_file}${tmake_file_ml}"
+			TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
 		fi
 		;;
 
diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile
new file mode 100644
index 0000000..65d60c0
--- /dev/null
+++ b/gcc/config/arm/t-rmprofile
@@ -0,0 +1,121 @@
+# Copyright (C) 2012-2015 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/>.
+
+# This is a target makefile fragment that attempts to get
+# multilibs built for the range of CPU's, FPU's and ABI's the user did
+# customize via the configure option --with-multilib-list.
+# It should not be used in conjunction with another make file fragment and
+# assumes --with-arch, --with-cpu, --with-fpu, --with-float, --with-mode
+# have their default values during the configure step.  We enforce
+# this during the top-level configury.
+
+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),$(TM_MULTILIB_CONFIG))))
+MULTILIB_REQUIRED   += mthumb/march=armv6s-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
+endif
+
+ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(TM_MULTILIB_CONFIG))))
+MULTILIB_REQUIRED   += mthumb/march=armv7-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
+endif
+
+ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(TM_MULTILIB_CONFIG))))
+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),$(TM_MULTILIB_CONFIG))))
+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),$(TM_MULTILIB_CONFIG))))
+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 1d2e8f2..199053e 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -1713,7 +1713,7 @@ Optional Packages:
   --with-specs=SPECS      add SPECS to driver command-line processing
   --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
   --with-bugurl=URL       Direct users to URL to report a bug
-  --with-multilib-list    select multilibs (AArch64, SH and x86-64 only)
+  --with-multilib-list    select multilibs (AArch64, ARM, SH and x86-64 only)
   --with-gnu-ld           assume the C compiler uses GNU ld default=no
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d03a0bd..709bfa8 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -954,7 +954,7 @@ if test x"$offload_targets" != x; then
 fi
 
 AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, SH and x86-64 only)])],
 :,
 with_multilib_list=default)
 
-- 
1.9.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] [ping] Add support for ARM embedded multilibs
  2015-11-04  9:43     ` Ramana Radhakrishnan
  2015-11-04 19:31       ` Jasmin J.
  2015-11-08  0:24       ` Jasmin J.
@ 2015-11-27 22:43       ` Jasmin J.
  2 siblings, 0 replies; 7+ messages in thread
From: Jasmin J. @ 2015-11-27 22:43 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1282 bytes --]

Hello !

Did rebase the patch (sent at 11/08/2015 01:24 AM) to latest trunk
(335ce86cb6cea8046993ab93d573316fd9ff798c).

The patch is originally from Terry Guo
(see https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00729.html).
SVN commit r210320 on svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch .

The original was using "with_multilib_list" instead of TM_MULTILIB_CONFIG.
Moreover, it did not check each argument of "$with_multilib_list".

I simplified the patch and reworked it to use TM_MULTILIB_CONFIG. Additionally
each argument of "$with_multilib_list" is now checked.
I added missing "armv7".

I added the FSF header to t-rmprofile and a little explanation.

I have now a copyright assignment: #1059920

> see for example how I added t-aprofile to the backend and the kind of 
> testing it underwent
If this patch is now in principle acceptable, I will start working on your
suggested test scripts.

> The t-rmprofile file will need updating to newer values for -mcpu and 
> march
I will let this for open for other people, because I am not familiar with
the different CPU and ARCH variants. Keep in mind, that I am porting
Terry's patch only. But if someone it telling me what is required, I can add
it now and include it to the test scripts.

Regards,
   Jasmin


[-- Attachment #2: 0001-Add-support-for-ARM-embedded-multilibs.patch --]
[-- Type: text/x-patch, Size: 9197 bytes --]

From 69e0a3852b2c1adb9648ae5c5725d63f6e16b488 Mon Sep 17 00:00:00 2001
From: Jasmin Jessich <jasmin@anw.at>
Date: Sat, 24 Oct 2015 00:43:48 +0200
Subject: [PATCH] Add support for ARM embedded multilibs

Based on svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch
commit r210320 from Terry Guo <terry.guo@arm.com> .

 * config.gcc (--with-multilib-list): Accept arm embedded cores.
 * configure/configure.ac: Helptext.
 * config/arm/t-rmprofile: New file.

Signed-off-by: Terry Guo <terry.guo@arm.com>
Signed-off-by: Jasmin Jessich <jasmin@anw.at>
---
 gcc/config.gcc             |  14 ++++++
 gcc/config/arm/t-rmprofile | 121 +++++++++++++++++++++++++++++++++++++++++++++
 gcc/configure              |   2 +-
 gcc/configure.ac           |   2 +-
 4 files changed, 137 insertions(+), 2 deletions(-)
 create mode 100644 gcc/config/arm/t-rmprofile

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 59aee2c..63841d2 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|armv7-m|armv7e-m|armv7-r|armv7-a|cortex-m7)
+					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_ml=" arm/t-rmprofile"
+					TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${arm_multilib}"
+					;;
 				default)
 					;;
 				*)
@@ -3804,6 +3816,8 @@ case "${target}" in
 					;;
 				esac
 			done
+			tmake_file="${tmake_file}${tmake_file_ml}"
+			TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
 		fi
 		;;
 
diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile
new file mode 100644
index 0000000..65d60c0
--- /dev/null
+++ b/gcc/config/arm/t-rmprofile
@@ -0,0 +1,121 @@
+# Copyright (C) 2012-2015 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/>.
+
+# This is a target makefile fragment that attempts to get
+# multilibs built for the range of CPU's, FPU's and ABI's the user did
+# customize via the configure option --with-multilib-list.
+# It should not be used in conjunction with another make file fragment and
+# assumes --with-arch, --with-cpu, --with-fpu, --with-float, --with-mode
+# have their default values during the configure step.  We enforce
+# this during the top-level configury.
+
+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),$(TM_MULTILIB_CONFIG))))
+MULTILIB_REQUIRED   += mthumb/march=armv6s-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
+endif
+
+ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(TM_MULTILIB_CONFIG))))
+MULTILIB_REQUIRED   += mthumb/march=armv7-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
+endif
+
+ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(TM_MULTILIB_CONFIG))))
+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),$(TM_MULTILIB_CONFIG))))
+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),$(TM_MULTILIB_CONFIG))))
+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 bb5e02b..be5ff24 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -1713,7 +1713,7 @@ Optional Packages:
   --with-specs=SPECS      add SPECS to driver command-line processing
   --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
   --with-bugurl=URL       Direct users to URL to report a bug
-  --with-multilib-list    select multilibs (AArch64, SH and x86-64 only)
+  --with-multilib-list    select multilibs (AArch64, ARM, SH and x86-64 only)
   --with-gnu-ld           assume the C compiler uses GNU ld default=no
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 5990b7c..da36282 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -957,7 +957,7 @@ else
 fi
 
 AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, SH and x86-64 only)])],
 :,
 with_multilib_list=default)
 
-- 
1.9.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-11-27 22:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-04  0:29 [PATCH] Add support for ARM embedded multilibs Jasmin J.
2015-11-04  7:47 ` Ramana Radhakrishnan
2015-11-04  8:44   ` Jasmin J.
2015-11-04  9:43     ` Ramana Radhakrishnan
2015-11-04 19:31       ` Jasmin J.
2015-11-08  0:24       ` Jasmin J.
2015-11-27 22:43       ` [PATCH] [ping] " Jasmin J.

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).