This is the mail archive of the
mailing list for the glibc project.
Re: framebuffer corruption due to overlapping stp instructions on arm64
- From: Ramana Radhakrishnan <ramana dot gcc at googlemail dot com>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: Andrew Pinski <pinskia at gmail dot com>, mpatocka at redhat dot com, Catalin Marinas <catalin dot marinas at arm dot com>, Will Deacon <will dot deacon at arm dot com>, linux at armlinux dot org dot uk, thomas dot petazzoni at free-electrons dot com, linux-arm-kernel at lists dot infradead dot org, LKML <linux-kernel at vger dot kernel dot org>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 3 Aug 2018 10:15:52 +0100
- Subject: Re: framebuffer corruption due to overlapping stp instructions on arm64
- References: <alpine.LRH.firstname.lastname@example.org> <CA+=Sn1mWkjuwVnjw6OWWUM=UcP76bdFa680FebCseewHfx3NpA@mail.gmail.com> <email@example.com>
On Fri, Aug 3, 2018 at 8:53 AM, Florian Weimer <firstname.lastname@example.org> wrote:
> On 08/03/2018 09:11 AM, Andrew Pinski wrote:
>> Yes fix Links not to use memcpy on the framebuffer.
>> It is undefined behavior to use device memory with memcpy.
> Some (de facto) ABIs require that it is supported, though. For example, the
> POWER string functions avoid unaligned loads and stores for this reason
> because the platform has the same issue with device memory. And yes, GCC
> will expand memcpy on POWER to something that is incompatible with device
> memory. 8-(
GCC for AArch64 - use -mstrict-align
GCC for AArch32 - use -mno-unaligned-access.
If you see unaligned accesses coming out of the compiler for well
defined programs then that's a bug. Frequently we see undefined
programs that get the compiler to produce traps - atleast one or 2
bugs a year in GCC .
> If we don't want people to use memcpy, we probably need to provide a
> credible alternative.
I believe a number of packages have rolled their own to take these
constraints into account
for AArch32, perhaps it needs to be expanded for AArch64 as well.