|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] rombios: Work around GCC issue 99578
On 18.08.2023 11:44, Andrew Cooper wrote:
> On 18/08/2023 7:50 am, Jan Beulich wrote:
>> On 17.08.2023 22:45, Andrew Cooper wrote:
>>> GCC 12 objects to pointers derived from a constant:
>>>
>>> util.c: In function 'find_rsdp':
>>> util.c:429:16: error: array subscript 0 is outside array bounds of
>>> 'uint16_t[0]' {aka 'short unsigned int[]'} [-Werror=array-bounds]
>>> 429 | ebda_seg = *(uint16_t *)ADDR_FROM_SEG_OFF(0x40, 0xe);
>>> cc1: all warnings being treated as errors
>>>
>> Yet supposedly the bug was fixed in 12.1 (and the fix also backported to
>> 11.3). Did you spot anything in ADDR_FROM_SEG_OFF() and this particular
>> use of it that is different from the patterns mentioned in that bug?
>
> $ gcc --version
> gcc (GCC) 12.2.1 20221121
>
> At a guess, only a partial fix was backported into 12.1. AIUI, it was
> an area of logic which had already seen significant development in 13
> before the behaviour was reverted.
Hmm, for 12 I didn't think there was any backporting involved.
> The only thing interesting about ADDR_FROM_SEG_OFF() is the constant
> folding required for the expression to become *(uint16_t *)0x40e, which
> (I suspect) is why it compiles fine at -Og but fails at -O2.
Oh, the relevant aspect may be that is is below 4k (which I think is
their heuristic offset to guess "almost NULL" dereferencing).
>>> This is a GCC bug, but work around it rather than turning array-bounds
>>> checking off generally.
>> I certainly agree here. I guess it's not worth trying to restrict the
>> workaround for rombios (I will want to try doing so in the hypervisor).
>
> Can I translate this to an ack?
You can now:
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
I wanted to at least have a vague idea of why this fails with gcc12,
when I thought it shouldn't. In light of the 4k aspect maybe the bug
reference wants adjusting / dropping.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |