[OE-core] [PATCH 2/2] gcc: fix miscompilation on mips64

ChenQi Qi.Chen at windriver.com
Mon Oct 30 09:45:06 UTC 2017


On 10/28/2017 01:40 AM, Khem Raj wrote:
> On Fri, Oct 27, 2017 at 2:43 AM, Chen Qi <Qi.Chen at windriver.com> wrote:
>> We've observed strange behaviour of `systemctl status <xxx> on qemumips64.
>> The output of the command is like `systemctl show <xxx>', which is incorrect.
>>
>> This patch is from gcc bugzilla's attachment.
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81803
>>
>> The patch hasn't been merged into gcc. But it does solve the above problem.
>>
> This looks ok. Can you help by providing your testing results to gcc bugzilla
> so the patch can then be submitted to gcc ml.

Some updates in this issue.

1) I've provided information in gcc bugzilla. The author says that he's 
going to submit the patch to gcc mailing list.

2) I've update remote branch to fix a typo ('mips4' --> 'mips64').

   git://git.pokylinux.org/poky-contrib ChenQi/bug12266
   http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/bug12266


3) 'core-image-sato + testimage' has been tested on other qemu machines 
including qemux86-64, qemux86, qemumips, qemuppc, qemuarm64.

Best Regards,
Chen Qi

>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>> ---
>>   meta/recipes-devtools/gcc/gcc-7.2.inc              |  1 +
>>   .../fix-miscompilation-for-O1-on-mips64el.patch    | 35 ++++++++++++++++++++++
>>   2 files changed, 36 insertions(+)
>>   create mode 100644 meta/recipes-devtools/gcc/gcc-7.2/fix-miscompilation-for-O1-on-mips64el.patch
>>
>> diff --git a/meta/recipes-devtools/gcc/gcc-7.2.inc b/meta/recipes-devtools/gcc/gcc-7.2.inc
>> index 5883bc6..04edad7 100644
>> --- a/meta/recipes-devtools/gcc/gcc-7.2.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-7.2.inc
>> @@ -75,6 +75,7 @@ SRC_URI = "\
>>              file://0048-gcc-Enable-static-PIE.patch \
>>              file://fix-segmentation-fault-precompiled-hdr.patch \
>>              file://0050-RISC-V-Handle-non-legitimate-address-in-riscv_legiti.patch \
>> +           file://fix-miscompilation-for-O1-on-mips64el.patch \
>>              ${BACKPORTS} \
>>   "
>>   BACKPORTS = "\
>> diff --git a/meta/recipes-devtools/gcc/gcc-7.2/fix-miscompilation-for-O1-on-mips64el.patch b/meta/recipes-devtools/gcc/gcc-7.2/fix-miscompilation-for-O1-on-mips64el.patch
>> new file mode 100644
>> index 0000000..28020b0
>> --- /dev/null
>> +++ b/meta/recipes-devtools/gcc/gcc-7.2/fix-miscompilation-for-O1-on-mips64el.patch
>> @@ -0,0 +1,35 @@
>> +This patch comes from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81803
>> +
>> +Author: mpf <mpf at 138bc75d-0d04-0410-961f-82ee72b054a4>
>> +
>> +This patch hasn't been merged into gcc. But it does solve the problem of
>> +strange behaviour of `systemd status <xxx>' on qemumips64.
>> +
>> +Upstream-Status: Pending [Taken from gcc bugzilla's attachment]
>> +
>> +Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>> +---
>> + gcc/lra-constraints.c | 7 ++++++-
>> + 1 file changed, 6 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
>> +index c8bc9b9a66f..6d319662b09 100644
>> +--- a/gcc/lra-constraints.c
>> ++++ b/gcc/lra-constraints.c
>> +@@ -4235,7 +4235,12 @@ curr_insn_transform (bool check_only_p)
>> +                         && (goal_alt[i] == NO_REGS
>> +                             || (simplify_subreg_regno
>> +                                 (ira_class_hard_regs[goal_alt[i]][0],
>> +-                                 GET_MODE (reg), byte, mode) >= 0)))))
>> ++                                 GET_MODE (reg), byte, mode) >= 0))))
>> ++                    || (type != OP_IN
>> ++                        && GET_MODE_PRECISION (mode)
>> ++                        < GET_MODE_PRECISION (GET_MODE (reg))
>> ++                        && GET_MODE_SIZE (GET_MODE (reg)) <= UNITS_PER_WORD
>> ++                        && WORD_REGISTER_OPERATIONS))
>> +               {
>> +                 /* An OP_INOUT is required when reloading a subreg of a
>> +                    mode wider than a word to ensure that data beyond the
>> +--
>> +2.13.0
>> +
>> --
>> 1.9.1
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20171030/4febcf71/attachment-0002.html>


More information about the Openembedded-core mailing list