mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
Merge pull request #6469 from heitbaum/gcc12patches
upstream patches to support gcc-12.1.0
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,51 @@
|
||||
From 3ce13d974b887338ae972c79b41ff6fc0eee6388 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Mon, 28 Mar 2022 15:00:54 +0800
|
||||
Subject: 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>
|
||||
---
|
||||
grub-core/lib/reed_solomon.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
|
||||
index 82779a2..562bd2e 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,
|
||||
--
|
||||
cgit v1.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 77b8183b3395333d5d4c73e25c2d011748f15eda Mon Sep 17 00:00:00 2001
|
||||
From: Rudi Heitbaum <rudi@heitbaum.com>
|
||||
Date: Sun, 8 May 2022 03:00:10 +0000
|
||||
Subject: [PATCH] vmwgfx: fix missing array notation
|
||||
|
||||
Fixes error identified by gcc-12.1.0 compiler
|
||||
|
||||
make
|
||||
CC libvmwgfx_la-vmwgfx_tex_video.lo
|
||||
vmwgfx_tex_video.c: In function 'stop_video':
|
||||
vmwgfx_tex_video.c:240:20: error: the comparison will always evaluate as 'true' for the address of 'yuv' will never be NULL [-Werror=address]
|
||||
240 | if (priv->yuv[i]) {
|
||||
| ^~~~
|
||||
---
|
||||
vmwgfx/vmwgfx_tex_video.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/vmwgfx/vmwgfx_tex_video.c b/vmwgfx/vmwgfx_tex_video.c
|
||||
index acc2b56..480a5f1 100644
|
||||
--- a/vmwgfx/vmwgfx_tex_video.c
|
||||
+++ b/vmwgfx/vmwgfx_tex_video.c
|
||||
@@ -237,7 +237,7 @@ stop_video(ScrnInfoPtr pScrn, pointer data, Bool shutdown)
|
||||
|
||||
for (i=0; i<3; ++i) {
|
||||
for (j=0; j<2; ++j) {
|
||||
- if (priv->yuv[i]) {
|
||||
+ if (priv->yuv[j][i]) {
|
||||
xa_surface_destroy(priv->yuv[j][i]);
|
||||
priv->yuv[j][i] = NULL;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
From 53173fdab492f0f638f6616fcf01af0b9ea6338d Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Thu, 20 Jan 2022 10:20:38 +0100
|
||||
Subject: [PATCH] render: Fix build with gcc 12
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The xserver fails to compile with the latest gcc 12:
|
||||
|
||||
render/picture.c: In function ‘CreateSolidPicture’:
|
||||
render/picture.c:874:26: error: array subscript ‘union _SourcePict[0]’ is partly outside array bounds of ‘unsigned char[16]’ [-Werror=array-bounds]
|
||||
874 | pPicture->pSourcePict->type = SourcePictTypeSolidFill;
|
||||
| ^~
|
||||
render/picture.c:868:45: note: object of size 16 allocated by ‘malloc’
|
||||
868 | pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictSolidFill));
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
render/picture.c: In function ‘CreateLinearGradientPicture’:
|
||||
render/picture.c:906:26: error: array subscript ‘union _SourcePict[0]’ is partly outside array bounds of ‘unsigned char[32]’ [-Werror=array-bounds]
|
||||
906 | pPicture->pSourcePict->linear.type = SourcePictTypeLinear;
|
||||
| ^~
|
||||
render/picture.c:899:45: note: object of size 32 allocated by ‘malloc’
|
||||
899 | pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictLinearGradient));
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
render/picture.c: In function ‘CreateConicalGradientPicture’:
|
||||
render/picture.c:989:26: error: array subscript ‘union _SourcePict[0]’ is partly outside array bounds of ‘unsigned char[32]’ [-Werror=array-bounds]
|
||||
989 | pPicture->pSourcePict->conical.type = SourcePictTypeConical;
|
||||
| ^~
|
||||
render/picture.c:982:45: note: object of size 32 allocated by ‘malloc’
|
||||
982 | pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictConicalGradient));
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
cc1: some warnings being treated as errors
|
||||
ninja: build stopped: subcommand failed.
|
||||
|
||||
This is because gcc 12 has become stricter and raises a warning now.
|
||||
|
||||
Fix the warning/error by allocating enough memory to store the union
|
||||
struct.
|
||||
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1256
|
||||
(cherry picked from commit c6b0dcb82d4db07a2f32c09a8c09c85a5f57248e)
|
||||
---
|
||||
render/picture.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/render/picture.c b/render/picture.c
|
||||
index afa0d258f..2be4b1954 100644
|
||||
--- a/render/picture.c
|
||||
+++ b/render/picture.c
|
||||
@@ -865,7 +865,7 @@ CreateSolidPicture(Picture pid, xRenderColor * color, int *error)
|
||||
}
|
||||
|
||||
pPicture->id = pid;
|
||||
- pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictSolidFill));
|
||||
+ pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(SourcePict));
|
||||
if (!pPicture->pSourcePict) {
|
||||
*error = BadAlloc;
|
||||
free(pPicture);
|
||||
@@ -896,7 +896,7 @@ CreateLinearGradientPicture(Picture pid, xPointFixed * p1, xPointFixed * p2,
|
||||
}
|
||||
|
||||
pPicture->id = pid;
|
||||
- pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictLinearGradient));
|
||||
+ pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(SourcePict));
|
||||
if (!pPicture->pSourcePict) {
|
||||
*error = BadAlloc;
|
||||
free(pPicture);
|
||||
@@ -936,7 +936,7 @@ CreateRadialGradientPicture(Picture pid, xPointFixed * inner,
|
||||
}
|
||||
|
||||
pPicture->id = pid;
|
||||
- pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictRadialGradient));
|
||||
+ pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(SourcePict));
|
||||
if (!pPicture->pSourcePict) {
|
||||
*error = BadAlloc;
|
||||
free(pPicture);
|
||||
@@ -979,7 +979,7 @@ CreateConicalGradientPicture(Picture pid, xPointFixed * center, xFixed angle,
|
||||
}
|
||||
|
||||
pPicture->id = pid;
|
||||
- pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(PictConicalGradient));
|
||||
+ pPicture->pSourcePict = (SourcePictPtr) malloc(sizeof(SourcePict));
|
||||
if (!pPicture->pSourcePict) {
|
||||
*error = BadAlloc;
|
||||
free(pPicture);
|
||||
--
|
||||
GitLab
|
||||
|
||||
Reference in New Issue
Block a user