1 From Anatol Pomozov <anatol.pomozov@gmail.com>
2 Taken from Arch Linux arm-none-eabi-gcc package.
4 Modified version of ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch
6 This patch enables the use of the "--with-multilib-list" flag, when
7 configuring GCC 6.2. It makes GCC 6 compatible with the configure flags used
8 in the "gcc-arm-none-eabi-4.9" package.
11 diff --git a/gcc/Makefile.in b/gcc/Makefile.in
12 index 4ab7405..6e1ea2c 100644
15 @@ -535,6 +535,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
16 lang_specs_files=@lang_specs_files@
17 lang_tree_files=@lang_tree_files@
18 target_cpu_default=@target_cpu_default@
19 +with_multilib_list=@with_multilib_list@
20 OBJC_BOEHM_GC=@objc_boehm_gc@
21 extra_modes_file=@extra_modes_file@
22 extra_opt_files=@extra_opt_files@
23 diff --git a/gcc/config.gcc b/gcc/config.gcc
24 index cb08a5c..7bded02 100644
27 @@ -1072,7 +1072,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
30 tm_file="$tm_file newlib-stdint.h"
31 - tmake_file="${tmake_file} arm/t-bpabi"
32 + tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
36 @@ -3684,42 +3684,6 @@ case "${target}" in
40 - # Add extra multilibs
41 - if test "x$with_multilib_list" != x; then
42 - arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
43 - for arm_multilib in ${arm_multilibs}; do
44 - case ${arm_multilib} in
46 - # Note that arm/t-aprofile is a
47 - # stand-alone make file fragment to be
48 - # used only with itself. We do not
49 - # specifically use the
50 - # TM_MULTILIB_OPTION framework because
51 - # this shorthand is more
52 - # pragmatic. Additionally it is only
53 - # designed to work without any
54 - # with-cpu, with-arch with-mode
55 - # with-fpu or with-float options.
56 - if test "x$with_arch" != x \
57 - || test "x$with_cpu" != x \
58 - || test "x$with_float" != x \
59 - || test "x$with_fpu" != x \
60 - || test "x$with_mode" != x ; then
61 - echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
64 - tmake_file="${tmake_file} arm/t-aprofile"
70 - echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
79 diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
81 index 0000000..5720cf7
83 +++ b/gcc/config/arm/t-mlibs
85 +# A set of predefined MULTILIB which can be used for different ARM targets.
86 +# Via the configure option --with-multilib-list, user can customize the
87 +# final MULTILIB implementation.
93 +MULTILIB_OPTIONS = mthumb/marm
94 +MULTILIB_DIRNAMES = thumb arm
95 +MULTILIB_OPTIONS += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
96 +MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
97 +MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard
98 +MULTILIB_DIRNAMES += softfp fpu
99 +MULTILIB_OPTIONS += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
100 +MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
102 +MULTILIB_MATCHES = march?armv6s-m=mcpu?cortex-m0
103 +MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0plus
104 +MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m1
105 +MULTILIB_MATCHES += march?armv6s-m=march?armv6-m
106 +MULTILIB_MATCHES += march?armv7-m=mcpu?cortex-m3
107 +MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m4
108 +MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m7
109 +MULTILIB_MATCHES += march?armv7=march?armv7-r
110 +MULTILIB_MATCHES += march?armv7=march?armv7-a
111 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
112 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f
113 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r5
114 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-r7
115 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5
116 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a7
117 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
118 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9
119 +MULTILIB_MATCHES += march?armv7=mcpu?cortex-a15
120 +MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
121 +MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
122 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3
123 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
124 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
125 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd
126 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
127 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4
128 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4-d16
129 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon
130 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-fp16
131 +MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-vfpv4
133 +MULTILIB_EXCEPTIONS =
136 +MULTILIB_REQUIRED = mthumb
137 +MULTILIB_REQUIRED += marm
138 +MULTILIB_REQUIRED += mfloat-abi=hard
140 +MULTILIB_OSDIRNAMES = mthumb=!thumb
141 +MULTILIB_OSDIRNAMES += marm=!arm
142 +MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
144 +ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
145 +MULTILIB_REQUIRED += mthumb/march=armv6s-m
146 +MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
149 +ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
150 +MULTILIB_REQUIRED += mthumb/march=armv7-m
151 +MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
154 +ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
155 +MULTILIB_REQUIRED += mthumb/march=armv7e-m
156 +MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
157 +MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
158 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
159 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
160 +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
163 +ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
164 +MULTILIB_REQUIRED += mthumb/march=armv7
165 +MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
166 +MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
167 +MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
168 +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
169 +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
170 +MULTILIB_REUSE += mthumb/march.armv7=marm/march.armv7
171 +MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
172 +MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
174 diff --git a/gcc/configure b/gcc/configure
175 index 9523773..24952e3 100755
178 @@ -763,6 +763,7 @@ SET_MAKE
180 real_target_noncanonical
181 enable_as_accelerator
186 @@ -7462,6 +7463,7 @@ else
191 # -------------------------
192 # Checks for other programs
193 # -------------------------
194 diff --git a/gcc/configure.ac b/gcc/configure.ac
195 index 68b0ee8..f8a1097 100644
196 --- a/gcc/configure.ac
197 +++ b/gcc/configure.ac
198 @@ -925,6 +925,7 @@ AC_ARG_WITH(multilib-list,
199 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
201 with_multilib_list=default)
202 +AC_SUBST(with_multilib_list)
204 # -------------------------
205 # Checks for other programs