[OE-core] [PATCH 2/2] gcc: Avoid non-aligned access for ARM5e

Jens Rehsack rehsack at gmail.com
Mon Oct 12 16:01:45 UTC 2015


> Am 08.10.2015 um 18:40 schrieb Khem Raj <raj.khem at gmail.com>:
> 
>> 
>> On Oct 8, 2015, at 9:07 AM, Jens Rehsack <rehsack at gmail.com> wrote:
>> 
>> 
>>> Am 08.10.2015 um 16:46 schrieb Khem Raj <raj.khem at gmail.com>:
>>> 
>>> 
>>>> On Oct 8, 2015, at 7:33 AM, Jens Rehsack <rehsack at gmail.com> wrote:
>>>> 
>>>> 
>>>> [Icedtee Ticket #2153] -- see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2153
>>>> 
>>>> This patch prevents gcc generate code on ARM5e accessing 64 bit values, because gcc doesn't ensure they're 64 bit aligned.
>>>> Accessing a 64 bit value from a 32 bit alignment causes segmentation faults.
>>>> 
>>>> Patch is taken from https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/gcc/0001-ARMv5-disable-LDRD-STRD.patch
>>> 
>>> Can you try using -mfix-cortex-m3-ldrd, does that help ?
>> 
>> Well, I have a marvel-kirkwood - I'll give it a shot but don't know whether it works at all.
>> 
>>> The patch is a workaround to gcc, as it seems real problem is in defining instruction constraints
>>> please open a gcc bug for this.
>> 
>> Dunno whether I want to have all that stress. When neither ARCH linux guys did that nor Icedtea
>> maintainers, how could I succeed there?
>> 
>> Best I can do is (if -mfix-cortex-m3-ldrd doesn't help), keep it private. When -mfix-cortex-m3-ldrd
>> helps, is adding it to ./meta/conf/machine/include/tune-arm926ejs.inc a sane approach?
> 
> This might be OK. Although I would like to see it fixed in right way in gcc, we don’t want to carry patches
> that are not accepted upstream. We already have 60 odd patches and we should reduce them if possible.

I tried the approach applying -mfix-cortex-m3-ldrd to TUNE_CCARGS for armv5+dsp - and it generates
ldrd instructions anyway. Accepted upstream or not, I have no time to get the right upstream fix.

So I keep it private.

During hacking on the fix in meta/conf/machine/ I recognized that the expected thump suffix in meta/conf/machine/include/tune-arm926ejs.inc
isn't there and modified the line as

diff --git a/meta/conf/machine/include/tune-arm926ejs.inc b/meta/conf/machine/include/tune-arm926ejs.inc
index 335e4e0..a310c9d 100644
--- a/meta/conf/machine/include/tune-arm926ejs.inc
+++ b/meta/conf/machine/include/tune-arm926ejs.inc
@@ -8,4 +8,4 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "arm926ejs", " -mtune=arm9
 AVAILTUNES += "arm926ejs"
 ARMPKGARCH_tune-arm926ejs = "arm926ejs"
 TUNE_FEATURES_tune-arm926ejs = "${TUNE_FEATURES_tune-armv5te} arm926ejs"
-PACKAGE_EXTRA_ARCHS_tune-arm926ejs = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} arm926ejste"
+PACKAGE_EXTRA_ARCHS_tune-arm926ejs = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} arm926ejste arm926ejse"

Want to have a patch for that or shall I keep it private, too?

Cheers
-- 
Jens Rehsack - rehsack at gmail.com




More information about the Openembedded-core mailing list