summaryrefslogtreecommitdiffstats
path: root/debian/patches/gcc12_build_array_bounds2.patch
blob: 6036eba1a3d2901aa94170912824a7ad864df902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
commit 3ce13d974b887338ae972c79b41ff6fc0eee6388
Author: Michael Chang <mchang@suse.com>
Date:   Mon Mar 28 15:00:54 2022 +0800

    lib/reed_solomon: Fix array subscript 0 is outside array bounds
    
    The grub_absolute_pointer() is a compound expression that can only work
    within a function. We are out of luck here when the pointer variables
    require global definition due to ATTRIBUTE_TEXT that have to use fully
    initialized global definition because of the way linkers work.
    
      static gf_single_t * const gf_powx ATTRIBUTE_TEXT = (void *) 0x100000;
    
    For the reason given above, use GCC diagnostic pragmas to suppress the
    array-bounds warning.
    
    Signed-off-by: Michael Chang <mchang@suse.com>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>

diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
index 82779a296..562bd2e3e 100644
--- a/grub-core/lib/reed_solomon.c
+++ b/grub-core/lib/reed_solomon.c
@@ -102,6 +102,11 @@ static gf_single_t errvals[256];
 static gf_single_t eqstat[65536 + 256];
 #endif
 
+#if __GNUC__ == 12
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
 static gf_single_t
 gf_mul (gf_single_t a, gf_single_t b)
 {
@@ -319,6 +324,10 @@ decode_block (gf_single_t *ptr, grub_size_t s,
     }
 }
 
+#if __GNUC__ == 12
+#pragma GCC diagnostic pop
+#endif
+
 #if !defined (STANDALONE)
 static void
 encode_block (gf_single_t *ptr, grub_size_t s,