[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 |