[syslinux] PATCH: syslinux-gcc12-patches.patch
alphons at heijden.com
alphons at heijden.com
Tue Feb 7 04:01:43 PST 2023
greetings mailinglist,
The following patch makes the current syslinux compiling again using GCC 12.2.
Repo
====
git clone --recursive git://repo.or.cz/syslinux.git syslinuxcurrent
Build environment
=================
GCC 12.2.0
GNU libc 2.36
Nasm 2.15.05
GNU Make 4.4
GNU Binutils 2.39
Python 3.9.4
XZ Utils 5.4.0
Perl v5.36.0 (/usr/bin/perl)
File changes
============
# modified: com32/cmenu/libmenu/cmenu.h
# modified: com32/cmenu/libmenu/com32io.h
# modified: com32/cmenu/libmenu/menu.c
# modified: com32/cmenu/libmenu/syslnx.c
# modified: com32/cmenu/libmenu/tui.c
# modified: com32/gplinclude/memory.h
# modified: com32/hdt/hdt-ata.c
# modified: com32/hdt/hdt-cli.c
# modified: com32/hdt/hdt-cli.h
# modified: com32/hdt/hdt-common.h
# modified: com32/lib/getopt_long.c
# modified: com32/lib/sys/openmem.c
# modified: core/fs/pxe/ftp.c
# modified: core/include/core_pxe.h
# modified: dos/errno.h
# modified: libinstaller/fs.c
# modified: libinstaller/setadv.c
# modified: libinstaller/syslinux.h
# modified: mbr/i386/mbr.ld
# modified: mbr/x86_64/mbr.ld
Attached is the result of: diff -uprN -X dontdiff syslinuxcurrent/ syslinuxpatched/ > syslinux-gcc12-patches.patch
Signed-off-by: Alphons van der Heijden <alphons at heijden.com>
diff -uprN -X dontdiff syslinuxcurrent/com32/cmenu/libmenu/cmenu.h syslinuxpatched/com32/cmenu/libmenu/cmenu.h
--- syslinuxcurrent/com32/cmenu/libmenu/cmenu.h 2023-02-07 11:32:40.392063182 +0100
+++ syslinuxpatched/com32/cmenu/libmenu/cmenu.h 2023-02-07 09:16:40.822878872 +0100
@@ -131,7 +131,7 @@ typedef struct {
unsigned int reserved:6; // For future expansion
} t_handler_return;
-t_handler_return ACTION_VALID, ACTION_INVALID; // Specific values
+extern t_handler_return ACTION_VALID, ACTION_INVALID; // Specific values
typedef t_handler_return(*t_item_handler) (struct s_menusystem *,
struct s_menuitem *);
diff -uprN -X dontdiff syslinuxcurrent/com32/cmenu/libmenu/com32io.h syslinuxpatched/com32/cmenu/libmenu/com32io.h
--- syslinuxcurrent/com32/cmenu/libmenu/com32io.h 2023-02-07 11:32:40.396063192 +0100
+++ syslinuxpatched/com32/cmenu/libmenu/com32io.h 2023-02-07 11:49:01.551650837 +0100
@@ -31,6 +31,7 @@
#define CTRL_PRESSED (1<<2)
// actually 1<<1 is Left Shift, 1<<0 is right shift
#define SHIFT_PRESSED (1<<1 | 1 <<0)
+extern com32sys_t inreg, outreg; // Global register sets for use
/* BIOS Assisted output routines */
diff -uprN -X dontdiff syslinuxcurrent/com32/cmenu/libmenu/menu.c syslinuxpatched/com32/cmenu/libmenu/menu.c
--- syslinuxcurrent/com32/cmenu/libmenu/menu.c 2023-02-07 11:32:40.396063192 +0100
+++ syslinuxpatched/com32/cmenu/libmenu/menu.c 2023-02-07 11:49:50.299809262 +0100
@@ -15,6 +15,7 @@
#include <stdlib.h>
#include <console.h>
+t_handler_return ACTION_VALID, ACTION_INVALID;
// Local Variables
static pt_menusystem ms; // Pointer to the menusystem
char TITLESTR[] =
diff -uprN -X dontdiff syslinuxcurrent/com32/cmenu/libmenu/syslnx.c syslinuxpatched/com32/cmenu/libmenu/syslnx.c
--- syslinuxcurrent/com32/cmenu/libmenu/syslnx.c 2023-02-07 11:32:40.396063192 +0100
+++ syslinuxpatched/com32/cmenu/libmenu/syslnx.c 2023-02-07 09:14:47.378133423 +0100
@@ -18,7 +18,7 @@
#include <syslinux/config.h>
#include <syslinux/video.h>
-com32sys_t inreg, outreg; // Global registers for this module
+extern com32sys_t inreg, outreg; // Global registers for this module
void runsyslinuxcmd(const char *cmd)
{
diff -uprN -X dontdiff syslinuxcurrent/com32/cmenu/libmenu/tui.c syslinuxpatched/com32/cmenu/libmenu/tui.c
--- syslinuxcurrent/com32/cmenu/libmenu/tui.c 2023-02-07 11:32:40.396063192 +0100
+++ syslinuxpatched/com32/cmenu/libmenu/tui.c 2023-02-07 11:52:34.944438960 +0100
@@ -16,7 +16,6 @@
#include <stdlib.h>
#include "com32io.h"
-com32sys_t inreg, outreg; // Global register sets for use
char bkspstr[] = " \b$";
char eolstr[] = "\n$";
diff -uprN -X dontdiff syslinuxcurrent/com32/gplinclude/memory.h syslinuxpatched/com32/gplinclude/memory.h
--- syslinuxcurrent/com32/gplinclude/memory.h 2023-02-07 11:32:40.404063216 +0100
+++ syslinuxpatched/com32/gplinclude/memory.h 2023-02-07 09:05:20.669210440 +0100
@@ -37,7 +37,7 @@ struct e820entry {
uint64_t type; /* type of memory segment */
} __attribute__ ((packed));
-const char *const e820_types[5];
+extern const char *const e820_types[5];
void get_type(int, char *, int);
void detect_memory_e820(struct e820entry *desc, int size_map, int *size_found);
diff -uprN -X dontdiff syslinuxcurrent/com32/hdt/hdt-ata.c syslinuxpatched/com32/hdt/hdt-ata.c
--- syslinuxcurrent/com32/hdt/hdt-ata.c 2023-02-07 11:32:40.412063238 +0100
+++ syslinuxpatched/com32/hdt/hdt-ata.c 2023-02-07 09:47:07.754324539 +0100
@@ -36,3 +36,20 @@
#include "com32io.h"
#include "hdt-common.h"
#include "hdt-ata.h"
+
+struct upload_backend *upload;
+
+/* Defines if the cli is quiet*/
+bool quiet;
+
+/* Defines if the cli is totally silent*/
+bool silent;
+
+/* Defines if we must use the vesa mode */
+bool vesamode;
+
+/* Defines if we must use the menu mode */
+bool menumode;
+
+/* Defines if we are running the auto mode */
+bool automode;
diff -uprN -X dontdiff syslinuxcurrent/com32/hdt/hdt-cli.c syslinuxpatched/com32/hdt/hdt-cli.c
--- syslinuxcurrent/com32/hdt/hdt-cli.c 2023-02-07 11:32:40.416063250 +0100
+++ syslinuxpatched/com32/hdt/hdt-cli.c 2023-02-07 11:53:26.104660725 +0100
@@ -34,6 +34,7 @@
#include "hdt-cli.h"
#include "hdt-common.h"
+struct s_cli hdt_cli;
struct cli_mode_descr *list_modes[] = {
&hdt_mode,
&dmi_mode,
diff -uprN -X dontdiff syslinuxcurrent/com32/hdt/hdt-cli.h syslinuxpatched/com32/hdt/hdt-cli.h
--- syslinuxcurrent/com32/hdt/hdt-cli.h 2023-02-07 11:32:40.416063250 +0100
+++ syslinuxpatched/com32/hdt/hdt-cli.h 2023-02-07 11:55:04.057076500 +0100
@@ -98,7 +98,7 @@ struct s_cli {
int history_pos;
int max_history_pos;
};
-struct s_cli hdt_cli;
+extern struct s_cli hdt_cli;
/* Describe a cli mode */
struct cli_mode_descr {
@@ -136,18 +136,18 @@ struct cli_alias {
/* List of implemented modes */
extern struct cli_mode_descr *list_modes[];
-struct cli_mode_descr hdt_mode;
-struct cli_mode_descr dmi_mode;
-struct cli_mode_descr syslinux_mode;
-struct cli_mode_descr pxe_mode;
-struct cli_mode_descr kernel_mode;
-struct cli_mode_descr cpu_mode;
-struct cli_mode_descr pci_mode;
-struct cli_mode_descr vesa_mode;
-struct cli_mode_descr disk_mode;
-struct cli_mode_descr vpd_mode;
-struct cli_mode_descr memory_mode;
-struct cli_mode_descr acpi_mode;
+extern struct cli_mode_descr hdt_mode;
+extern struct cli_mode_descr dmi_mode;
+extern struct cli_mode_descr syslinux_mode;
+extern struct cli_mode_descr pxe_mode;
+extern struct cli_mode_descr kernel_mode;
+extern struct cli_mode_descr cpu_mode;
+extern struct cli_mode_descr pci_mode;
+extern struct cli_mode_descr vesa_mode;
+extern struct cli_mode_descr disk_mode;
+extern struct cli_mode_descr vpd_mode;
+extern struct cli_mode_descr memory_mode;
+extern struct cli_mode_descr acpi_mode;
/* cli helpers */
void find_cli_mode_descr(cli_mode_t mode, struct cli_mode_descr **mode_found);
diff -uprN -X dontdiff syslinuxcurrent/com32/hdt/hdt-common.h syslinuxpatched/com32/hdt/hdt-common.h
--- syslinuxcurrent/com32/hdt/hdt-common.h 2023-02-07 11:32:40.416063250 +0100
+++ syslinuxpatched/com32/hdt/hdt-common.h 2023-02-07 09:46:45.750235311 +0100
@@ -79,22 +79,22 @@
#define MAX_CLI_LINES 20
#define MAX_VESA_CLI_LINES 24
-struct upload_backend *upload;
+extern struct upload_backend *upload;
/* Defines if the cli is quiet*/
-bool quiet;
+extern bool quiet;
/* Defines if the cli is totally silent*/
-bool silent;
+extern bool silent;
/* Defines if we must use the vesa mode */
-bool vesamode;
+extern bool vesamode;
/* Defines if we must use the menu mode */
-bool menumode;
+extern bool menumode;
/* Defines if we are running the auto mode */
-bool automode;
+extern bool automode;
/* Defines the number of lines in the console
* Default is 20 for a std console */
diff -uprN -X dontdiff syslinuxcurrent/com32/lib/getopt_long.c syslinuxpatched/com32/lib/getopt_long.c
--- syslinuxcurrent/com32/lib/getopt_long.c 2023-02-07 11:32:40.432063296 +0100
+++ syslinuxpatched/com32/lib/getopt_long.c 2023-02-07 09:07:11.194356761 +0100
@@ -13,8 +13,8 @@
#include <string.h>
#include <getopt.h>
-char *optarg;
-int optind, opterr, optopt;
+extern char *optarg;
+extern int optind, opterr, optopt;
static struct getopt_private_state {
const char *optptr;
const char *last_optstring;
diff -uprN -X dontdiff syslinuxcurrent/com32/lib/sys/openmem.c syslinuxpatched/com32/lib/sys/openmem.c
--- syslinuxcurrent/com32/lib/sys/openmem.c 2023-02-07 11:32:40.456063364 +0100
+++ syslinuxpatched/com32/lib/sys/openmem.c 2023-02-07 10:06:35.278925300 +0100
@@ -38,7 +38,7 @@
* Open a chunk of memory as if it was a file
*/
-const struct input_dev __file_dev;
+extern const struct input_dev __file_dev;
int openmem(const void *base, size_t len, int flags)
{
diff -uprN -X dontdiff syslinuxcurrent/core/fs/pxe/ftp.c syslinuxpatched/core/fs/pxe/ftp.c
--- syslinuxcurrent/core/fs/pxe/ftp.c 2023-02-07 11:32:40.528063568 +0100
+++ syslinuxpatched/core/fs/pxe/ftp.c 2023-02-07 12:01:01.006501231 +0100
@@ -27,6 +27,11 @@
#include "thread.h"
#include "url.h"
#include "net.h"
+const struct pxe_conn_ops tcp_conn_ops =
+ {
+ .fill_buffer = core_tcp_fill_buffer,
+ .close = core_tcp_close_file,
+ };
static int ftp_cmd_response(struct inode *inode, const char *cmd,
const char *cmd_arg,
diff -uprN -X dontdiff syslinuxcurrent/core/include/core_pxe.h syslinuxpatched/core/include/core_pxe.h
--- syslinuxcurrent/core/include/core_pxe.h 2023-02-07 11:32:40.536063591 +0100
+++ syslinuxpatched/core/include/core_pxe.h 2023-02-07 10:11:42.727797458 +0100
@@ -265,7 +265,7 @@ void ftp_open(struct url_info *url, int
int ftp_readdir(struct inode *inode, struct dirent *dirent);
/* tcp.c */
-const struct pxe_conn_ops tcp_conn_ops;
+extern const struct pxe_conn_ops tcp_conn_ops;
extern void gpxe_init(void);
extern int pxe_init(bool quiet);
diff -uprN -X dontdiff syslinuxcurrent/dos/errno.h syslinuxpatched/dos/errno.h
--- syslinuxcurrent/dos/errno.h 2023-02-07 11:32:40.540063602 +0100
+++ syslinuxpatched/dos/errno.h 2023-02-07 10:57:07.384378897 +0100
@@ -36,7 +36,7 @@
#define EDOM 33 /* Math argument out of domain of func */
#define ERANGE 34 /* Math result not representable */
-int errno;
+extern int errno;
void perror(const char *);
#endif /* ERRNO_H */
diff -uprN -X dontdiff syslinuxcurrent/libinstaller/fs.c syslinuxpatched/libinstaller/fs.c
--- syslinuxcurrent/libinstaller/fs.c 2023-02-07 11:32:40.552063636 +0100
+++ syslinuxpatched/libinstaller/fs.c 2023-02-07 11:59:22.554121626 +0100
@@ -30,6 +30,12 @@
#include "syslxint.h"
#include "syslxcom.h"
#include "syslxfs.h"
+size_t strlen(const char *str)
+{
+ const char *s;
+ for (s = str; *s; ++s);
+ return (s - str);
+}
void syslinux_make_bootsect(void *bs, int fs_type)
{
diff -uprN -X dontdiff syslinuxcurrent/libinstaller/setadv.c syslinuxpatched/libinstaller/setadv.c
--- syslinuxcurrent/libinstaller/setadv.c 2023-02-07 11:32:40.552063636 +0100
+++ syslinuxpatched/libinstaller/setadv.c 2023-02-07 11:56:39.405470501 +0100
@@ -32,6 +32,7 @@
#include "syslxcom.h"
#include "syslxfs.h"
+int errno;
unsigned char syslinux_adv[2 * ADV_SIZE];
#define ADV_MAGIC1 0x5a2d2fa5 /* Head signature */
diff -uprN -X dontdiff syslinuxcurrent/libinstaller/syslinux.h syslinuxpatched/libinstaller/syslinux.h
--- syslinuxcurrent/libinstaller/syslinux.h 2023-02-07 11:32:40.552063636 +0100
+++ syslinuxpatched/libinstaller/syslinux.h 2023-02-07 11:58:46.757981203 +0100
@@ -17,6 +17,7 @@
#include "advconst.h"
#include "setadv.h"
+extern size_t strlen(const char *str);
#ifdef __CHECKER__
# define _slimg __attribute__((noderef,address_space(1)))
# define _force __attribute__((force))
diff -uprN -X dontdiff syslinuxcurrent/mbr/i386/mbr.ld syslinuxpatched/mbr/i386/mbr.ld
--- syslinuxcurrent/mbr/i386/mbr.ld 2023-02-07 11:32:40.560063659 +0100
+++ syslinuxpatched/mbr/i386/mbr.ld 2023-02-07 10:30:20.824367384 +0100
@@ -70,4 +70,5 @@ SECTIONS
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/DISCARD/ : { *(.note.GNU-stack) }
+ /DISCARD/ : { *(.note.gnu.property) }
}
diff -uprN -X dontdiff syslinuxcurrent/mbr/x86_64/mbr.ld syslinuxpatched/mbr/x86_64/mbr.ld
--- syslinuxcurrent/mbr/x86_64/mbr.ld 2023-02-07 11:32:40.560063659 +0100
+++ syslinuxpatched/mbr/x86_64/mbr.ld 2023-02-07 10:29:35.488132014 +0100
@@ -69,4 +69,5 @@ SECTIONS
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/DISCARD/ : { *(.note.GNU-stack) }
+ /DISCARD/ : { *(.note.gnu.property) }
}
More information about the Syslinux
mailing list