1 commit 71587241301d28b68bbe2f41c5eb2856053c750c
2 Author: Anatol Pomozov <anatol.pomozov@gmail.com>
3 Date: Tue May 9 21:19:27 2017 -0700
5 ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch
7 diff --git a/gcc/Makefile.in b/gcc/Makefile.in
8 index f675e073ecc..cced5329b47 100644
11 @@ -558,6 +558,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
12 lang_specs_files=@lang_specs_files@
13 lang_tree_files=@lang_tree_files@
14 target_cpu_default=@target_cpu_default@
15 +with_multilib_list=@with_multilib_list@
16 OBJC_BOEHM_GC=@objc_boehm_gc@
17 extra_modes_file=@extra_modes_file@
18 extra_opt_files=@extra_opt_files@
19 diff --git a/gcc/config.gcc b/gcc/config.gcc
20 index b8bb4d65825..713e35b62af 100644
23 @@ -1140,7 +1140,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
26 tm_file="$tm_file newlib-stdint.h"
27 - tmake_file="${tmake_file} arm/t-bpabi"
28 + tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
32 @@ -3787,56 +3787,6 @@ case "${target}" in
33 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
37 - # Add extra multilibs
38 - if test "x$with_multilib_list" != x; then
39 - arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
40 - case ${arm_multilibs} in
42 - # Note that arm/t-aprofile is a
43 - # stand-alone make file fragment to be
44 - # used only with itself. We do not
45 - # specifically use the
46 - # TM_MULTILIB_OPTION framework because
47 - # this shorthand is more
49 - tmake_profile_file="arm/t-aprofile"
52 - # Note that arm/t-rmprofile is a
53 - # stand-alone make file fragment to be
54 - # used only with itself. We do not
55 - # specifically use the
56 - # TM_MULTILIB_OPTION framework because
57 - # this shorthand is more
59 - tmake_profile_file="arm/t-rmprofile"
64 - echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
69 - if test "x${tmake_profile_file}" != x ; then
70 - # arm/t-aprofile and arm/t-rmprofile are only
71 - # designed to work without any with-cpu,
72 - # with-arch, with-mode, with-fpu or with-float
74 - if test "x$with_arch" != x \
75 - || test "x$with_cpu" != x \
76 - || test "x$with_float" != x \
77 - || test "x$with_fpu" != x \
78 - || test "x$with_mode" != x ; then
79 - echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
83 - tmake_file="${tmake_file} ${tmake_profile_file}"
89 diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
91 index 00000000000..5720cf7503d
93 +++ b/gcc/config/arm/t-mlibs
95 +# A set of predefined MULTILIB which can be used for different ARM targets.
96 +# Via the configure option --with-multilib-list, user can customize the
97 +# final MULTILIB implementation.
103 +MULTILIB_OPTIONS = mthumb/marm
104 +MULTILIB_DIRNAMES = thumb arm
105 +MULTILIB_OPTIONS += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
106 +MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
107 +MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard
108 +MULTILIB_DIRNAMES += softfp fpu
109 +MULTILIB_OPTIONS += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
110 +MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
112 +MULTILIB_MATCHES = march?armv6s-m=mcpu?cortex-m0
113 +MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0plus
114 +MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m1
115 +MULTILIB_MATCHES += march?armv6s-m=march?armv6-m
116 +MULTILIB_MATCHES += march?armv7-m=mcpu?cortex-m3
117 +MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m4
118 +MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m7
119 +MULTILIB_MATCHES += march?armv7=march?armv7-r
120 +MULTILIB_MATCHES += march?armv7=march?armv7-a
121 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
122 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f
123 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r5
124 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r7
125 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5
126 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a7
127 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
128 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9
129 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a15
130 +MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
131 +MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
132 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3
133 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
134 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
135 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd
136 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
137 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4
138 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4-d16
139 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon
140 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-fp16
141 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-vfpv4
143 +MULTILIB_EXCEPTIONS =
146 +MULTILIB_REQUIRED = mthumb
147 +MULTILIB_REQUIRED += marm
148 +MULTILIB_REQUIRED += mfloat-abi=hard
150 +MULTILIB_OSDIRNAMES = mthumb=!thumb
151 +MULTILIB_OSDIRNAMES += marm=!arm
152 +MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
154 +ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
155 +MULTILIB_REQUIRED += mthumb/march=armv6s-m
156 +MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
159 +ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
160 +MULTILIB_REQUIRED += mthumb/march=armv7-m
161 +MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
164 +ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
165 +MULTILIB_REQUIRED += mthumb/march=armv7e-m
166 +MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
167 +MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
168 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
169 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
170 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
173 +ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
174 +MULTILIB_REQUIRED += mthumb/march=armv7
175 +MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
176 +MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
177 +MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
178 +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
179 +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
180 +MULTILIB_REUSE += mthumb/march.armv7=marm/march.armv7
181 +MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
182 +MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
184 diff --git a/gcc/configure b/gcc/configure
185 index ea73b151a4e..c609f25e50c 100755
188 @@ -772,6 +772,7 @@ SET_MAKE
190 real_target_noncanonical
191 enable_as_accelerator
196 @@ -7763,6 +7764,7 @@ else
201 # -------------------------
202 # Checks for other programs
203 # -------------------------
204 diff --git a/gcc/configure.ac b/gcc/configure.ac
205 index 9d4c792a33f..abd988eb113 100644
206 --- a/gcc/configure.ac
207 +++ b/gcc/configure.ac
208 @@ -1007,6 +1007,7 @@ AC_ARG_WITH(multilib-list,
209 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
211 with_multilib_list=default)
212 +AC_SUBST(with_multilib_list)
214 # -------------------------
215 # Checks for other programs