[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