RE: [PATCH 02/11] x86: tboot: avoid Wstringop-overread-warning

From: David Laight
Date: Wed Mar 24 2021 - 06:40:36 EST


From: David Laight
> Sent: 24 March 2021 09:12
>
> From: Martin Sebor
> > Sent: 22 March 2021 22:08
> ...
> > In GCC 11, all access warnings expect objects to be either declared
> > or allocated. Pointers with constant values are taken to point to
> > nothing valid (as Arnd mentioned above, this is to detect invalid
> > accesses to members of structs at address zero).
> >
> > One possible solution to the known address problem is to extend GCC
> > attributes address and io that pin an object to a hardwired address
> > to all targets (at the moment they're supported on just one or two
> > targets). I'm not sure this can still happen before GCC 11 releases
> > sometime in April or May.
>
> A different solution is to define a normal C external data item
> and then assign a fixed address with an asm statement or in
> the linker script.

Or stop gcc tracking the value by using:
struct foo *foo = (void *)xxxxx;
asm ("", "+r" (foo));

If the address is used more than once forcing it into
a register is also likely to generate better code.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)