mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-08 00:20:38 -09:00
boot/syslinux: add multiple patches fixing build issues with GCC >= 14
No autobuilder failures reported, but it fixes build issues that can be reproduced with: BR2_x86_64=y BR2_x86_corei7=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX_EFI=y First patch is backported from upstream. Last 3 patches are not from upstream, and they have not been submitted as upstream is basically dead (last release 10 years ago, last commit 5 years ago). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
f6cc52627d
commit
a311245ff7
34
boot/syslinux/0021-load_linux-correct-a-type.patch
Normal file
34
boot/syslinux/0021-load_linux-correct-a-type.patch
Normal file
@@ -0,0 +1,34 @@
|
||||
From 7f1b68d561dfe615d5cd73d2f4561ac032832802 Mon Sep 17 00:00:00 2001
|
||||
From: Scot Doyle <lkml14@scotdoyle.com>
|
||||
Date: Sat, 7 Feb 2015 13:52:05 -0500
|
||||
Subject: [PATCH] load_linux: correct a type
|
||||
|
||||
Correct base's type to match its initialization from prot_mode_base and
|
||||
passage to syslinux_memmap_find(). Tested with extlinux.
|
||||
|
||||
Signed-off-by: Scot Doyle <lkml14@scotdoyle.com>
|
||||
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
|
||||
Upstream: https://github.com/geneC/syslinux/commit/83aad4f69065509ba5b1c080edccfed316a4cff0
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
com32/lib/syslinux/load_linux.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/com32/lib/syslinux/load_linux.c b/com32/lib/syslinux/load_linux.c
|
||||
index 06ae2a97..ac737293 100644
|
||||
--- a/com32/lib/syslinux/load_linux.c
|
||||
+++ b/com32/lib/syslinux/load_linux.c
|
||||
@@ -155,8 +155,8 @@ int bios_boot_linux(void *kernel_buf, size_t kernel_size,
|
||||
char *cmdline)
|
||||
{
|
||||
struct linux_header hdr, *whdr;
|
||||
- size_t real_mode_size, prot_mode_size, base;
|
||||
- addr_t real_mode_base, prot_mode_base, prot_mode_max;
|
||||
+ size_t real_mode_size, prot_mode_size;
|
||||
+ addr_t real_mode_base, prot_mode_base, prot_mode_max, base;
|
||||
addr_t irf_size;
|
||||
size_t cmdline_size, cmdline_offset;
|
||||
struct setup_data *sdp;
|
||||
--
|
||||
2.47.1
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
From b9514337ecfc0efaa04a926713188d87a88bb59e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
Date: Sat, 18 Jan 2025 16:03:34 +0100
|
||||
Subject: [PATCH] com32/modules/pxechn.c: use proper type in struct data_area
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Use a size_t for the size field, so that we meet the expectations of
|
||||
the loadfile() function.
|
||||
|
||||
Fixes a build issue with GCC >= 14:
|
||||
|
||||
com32/modules/pxechn.c:985:38: error: passing argument 3 of ‘loadfile’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||||
985 | if (loadfile(pxe.fn, &file.data, &file.size)) {
|
||||
| ^~~~~~~~~~
|
||||
| |
|
||||
| addr_t * {aka unsigned int *}
|
||||
|
||||
In file included from com32/modules/pxechn.c:33:
|
||||
com32/include/syslinux/loadfile.h:11:37: note: expected ‘size_t *’ {aka ‘long unsigned int *’} but argument is of type ‘addr_t *’ {aka ‘unsigned int *’}
|
||||
11 | int loadfile(const char *, void **, size_t *);
|
||||
| ^~~~~~~~
|
||||
|
||||
Upstream: N/A, dead
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
com32/modules/pxechn.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/com32/modules/pxechn.c b/com32/modules/pxechn.c
|
||||
index e4e21e88..15f008a3 100644
|
||||
--- a/com32/modules/pxechn.c
|
||||
+++ b/com32/modules/pxechn.c
|
||||
@@ -130,7 +130,7 @@ struct pxelinux_opt {
|
||||
struct data_area {
|
||||
void *data;
|
||||
addr_t base;
|
||||
- addr_t size;
|
||||
+ size_t size;
|
||||
};
|
||||
|
||||
/* From chain.c */
|
||||
--
|
||||
2.47.1
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
From 57dddf8d6d1c48aa78b9cdfb2b474aa89c3ae7c7 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
Date: Sat, 18 Jan 2025 16:11:36 +0100
|
||||
Subject: [PATCH] com32/chain/chain.h: use proper type in struct data_area
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fixes build issue with GCC >= 14:
|
||||
|
||||
com32/chain/chain.c:517:44: error: passing argument 3 of ‘loadfile’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||||
517 | if (loadfile(opt.file, &fdat.data, &fdat.size)) {
|
||||
| ^~~~~~~~~~
|
||||
| |
|
||||
| addr_t * {aka unsigned int *}
|
||||
In file included from com32/chain/chain.c:32:
|
||||
com32/include/syslinux/loadfile.h:11:37: note: expected ‘size_t *’ {aka ‘long unsigned int *’} but argument is of type ‘addr_t *’ {aka ‘unsigned int *’}
|
||||
11 | int loadfile(const char *, void **, size_t *);
|
||||
| ^~~~~~~~
|
||||
|
||||
Upstream: N/A, dead
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
com32/chain/chain.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/com32/chain/chain.h b/com32/chain/chain.h
|
||||
index fb5914b1..dcf43844 100644
|
||||
--- a/com32/chain/chain.h
|
||||
+++ b/com32/chain/chain.h
|
||||
@@ -21,7 +21,7 @@
|
||||
struct data_area {
|
||||
void *data;
|
||||
addr_t base;
|
||||
- addr_t size;
|
||||
+ size_t size;
|
||||
};
|
||||
|
||||
#endif
|
||||
--
|
||||
2.47.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From cbc8a8e25c3548771de5294f5a1eaef6bfe9b5da Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
Date: Sat, 18 Jan 2025 17:03:16 +0100
|
||||
Subject: [PATCH] efi/main.c: fix incorrect type of load_error_buf
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
load_error_buf is used as argument of setjmp()/longjmp(), so it should
|
||||
be a "jmp_buf", not a "jmp_buf *". According to the setjmp/longjmp man
|
||||
page:
|
||||
|
||||
int setjmp(jmp_buf env);
|
||||
int sigsetjmp(sigjmp_buf env, int savesigs);
|
||||
|
||||
Fixes build issue with GCC >= 14:
|
||||
|
||||
efi/main.c:1329:21: error: passing argument 1 of ‘setjmp’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||||
1329 | if (!setjmp(load_error_buf))
|
||||
| ^~~~~~~~~~~~~~
|
||||
| |
|
||||
| struct <anonymous> (*)[1]
|
||||
x86_64-buildroot-linux-gnu/sysroot/usr/include/efi/efisetjmp.h:7:29: note: expected ‘struct <anonymous> *’ but argument is of type ‘struct <anonymous> (*)[1]’
|
||||
7 | extern UINTN setjmp(jmp_buf env) __attribute__((returns_twice));
|
||||
| ~~~~~~~~^~~
|
||||
|
||||
Upstream: N/A dead
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
efi/main.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/efi/main.c b/efi/main.c
|
||||
index 7dc7bca7..045dae56 100644
|
||||
--- a/efi/main.c
|
||||
+++ b/efi/main.c
|
||||
@@ -30,7 +30,7 @@ uint32_t timer_irq;
|
||||
__export uint8_t KbdMap[256];
|
||||
char aux_seg[256];
|
||||
|
||||
-static jmp_buf *load_error_buf;
|
||||
+static jmp_buf load_error_buf;
|
||||
|
||||
static inline EFI_STATUS
|
||||
efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent,
|
||||
--
|
||||
2.47.1
|
||||
|
||||
Reference in New Issue
Block a user