[PATCH, GCC/ARM] Fix PR87374: ICE with -mslow-flash-data and -mword-relocations
Ramana Radhakrishnan
ramana.radhakrishnan@foss.arm.com
Thu Sep 27 10:16:00 GMT 2018
On 27/09/2018 09:26, Kyrill Tkachov wrote:
> Hi Thomas,
>
> On 26/09/18 18:39, Thomas Preudhomme wrote:
>> Hi,
>>
>> GCC ICEs under -mslow-flash-data and -mword-relocations because there
>> is no way to load an address, both literal pools and MOVW/MOVT being
>> forbidden. This patch gives an error message when both options are
>> specified by the user and adds the according dg-skip-if directives for
>> tests that use either of these options.
>>
>> ChangeLog entries are as follows:
>>
>> *** gcc/ChangeLog ***
>>
>> 2018-09-25 Thomas Preud'homme <thomas.preudhomme@linaro.org>
>>
>> PR target/87374
>> * config/arm/arm.c (arm_option_check_internal): Disable the combined
>> use of -mslow-flash-data and -mword-relocations.
>>
>> *** gcc/testsuite/ChangeLog ***
>>
>> 2018-09-25 Thomas Preud'homme <thomas.preudhomme@linaro.org>
>>
>> PR target/87374
>> * gcc.target/arm/movdi_movt.c: Skip if both -mslow-flash-data and
>> -mword-relocations would be passed when compiling the test.
>> * gcc.target/arm/movsi_movt.c: Likewise.
>> * gcc.target/arm/pr81863.c: Likewise.
>> * gcc.target/arm/thumb2-slow-flash-data-1.c: Likewise.
>> * gcc.target/arm/thumb2-slow-flash-data-2.c: Likewise.
>> * gcc.target/arm/thumb2-slow-flash-data-3.c: Likewise.
>> * gcc.target/arm/thumb2-slow-flash-data-4.c: Likewise.
>> * gcc.target/arm/thumb2-slow-flash-data-5.c: Likewise.
>> * gcc.target/arm/tls-disable-literal-pool.c: Likewise.
>>
>>
>> Testing: Bootstrapped in Thumb-2 mode. No testsuite regression when
>> targeting arm-none-eabi. Modified tests get skipped as expected when
>> running the testsuite with -mslow-flash-data (pr81863.c) or
>> -mword-relocations (all the others).
>>
>>
>> Is this ok for trunk? I'd also appreciate guidance on whether this is
>> worth a backport. It's a simple patch but on the other hand it only
>> prevents some option combination, it does not fix anything so I have
>> mixed feelings.
>
> In my opinion -mslow-flash-data is more of a tuning option rather than a security/ABI feature
> and therefore erroring out on its combination with -mword-relocations feels odd.
> I'm leaning more towards making -mword-relocations or any other option that really requires constant pools
> to bypass/disable the effects of -mslow-flash-data instead.
> For me, as a user, it would give a more friendly experience.
> That said, you have more familiarity with M-profile users. Would such users prefer a hard error when the -mslow-flash-data option
> has its effects bypassed? Maybe we could emit a warning rather than an error when this happens?
-mslow-flash-data and -mword-relocations are contradictory in their
expectations. mslow-flash-data is for not putting anything in the
literal pool whereas mword-relocations is purely around the use of movw
/ movt instructions for word sized values. I wish we had called
-mslow-flash-data something else (probably -mno-literal-pools).
-mslow-flash-data is used primarily by M-profile users and
-mword-relocations IIUC was a point fix for use in the Linux kernel for
module loads at a time when not all module loaders in the linux kernel
were fixed for the movw / movt relocations and armv7-a / thumb2 was in
it's infancy . Thus they are used by different constituencies in general
and I wouldn't see them used together by actual users.
Considering the above, I would prefer a hard error rather than a warning
as they are contradictory and I'd prefer that we error'd out. Further
this bugzilla entry is probably created with fuzzing with a variety of
options rather than from any real use case.
Oh and yes, lets update invoke.texi while here.
regards
Ramana
>
> Thanks,
> Kyrill
>
>> Best regards,
>>
>> Thomas
>
>
More information about the Gcc-patches
mailing list