Package: syslinux / 3:6.04~git20190206.bf6db5b4+dfsg1-3.1

Metadata

Package Version Patches format
syslinux 3:6.04~git20190206.bf6db5b4+dfsg1-3.1 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0000 unreleased changelog.patch | (download)

NEWS | 55 55 + 0 - 0 !
1 file changed, 55 insertions(+)

 include changes since 6.03 in the changelog

0002 gfxboot menu label.patch | (download)

com32/gfxboot/gfxboot.c | 16 10 + 6 - 0 !
1 file changed, 10 insertions(+), 6 deletions(-)

 allow boot entry to start with label instead of menu_label.

menu_ptr->menu_label is human-readable (perhaps even translatable!) text if
the MENU LABEL command is used, which isn't very convenient at the start of
a boot entry.  Allow the entry to start with menu_ptr->label (an
identifier) as an alternative.

0004 gnu efi from debian.patch | (download)

mk/efi.mk | 13 10 + 3 - 0 !
1 file changed, 10 insertions(+), 3 deletions(-)

 link against gnu-efi from debian

Adjust EFIINC, LIBDIR and LIBEFI variables in mk/efi.mk to point to the
files installed by Debian's gnu-efi package.
- The LIBDIR path depends on the build hosts' architecture, so the
  DEB_HOST_ARCH variable needs to be exported to determine the correct
  paths.

0005 gnu efi version compatibility.patch | (download)

efi/Makefile | 11 10 + 1 - 0 !
1 file changed, 10 insertions(+), 1 deletion(-)

 strip memtest and memcpy from libefi

Repack libefi.a to not contain the memset and memcpy symbols to make sure the
implementation from syslinux is used and no multiple symbol definitions are
present.

0016 strip gnu property.patch | (download)

mbr/i386/mbr.ld | 6 5 + 1 - 0 !
mbr/x86_64/mbr.ld | 6 5 + 1 - 0 !
2 files changed, 10 insertions(+), 2 deletions(-)

 strip the .note.gnu.property section for the mbr

This section is added since binutils Debian version 2.31.1-2 and causes mbr.bin
to grow in size beyond what can fit into the master boot record.

0017 single load segment.patch | (download)

efi/i386/syslinux.ld | 37 21 + 16 - 0 !
efi/x86_64/syslinux.ld | 37 21 + 16 - 0 !
2 files changed, 42 insertions(+), 32 deletions(-)

 force the linker to put all sections into a single pt_load segment

This is required when using binutils >= 2.31 which writes two PT_LOAD segments
by default. This is not supported by the wrapper.c script used to convert the
shared object into an elf binary.

0018 prevent pow optimization.patch | (download)

com32/gpllib/zzjson/zzjson_parse.c | 6 5 + 1 - 0 !
1 file changed, 5 insertions(+), 1 deletion(-)

 prevent optimizing the pow() function

With the current GCC 8.2.0 from Debian, a section of code calling pow() in
zzjson_parse.c is turned into a sequence calling exp(). Since no exp()
implementation is available in syslinux those optimizations need to be
disabled.

0019 gcc 10 compatibility.patch | (download)

dos/string.h | 11 10 + 1 - 0 !
mk/efi.mk | 1 1 + 0 - 0 !
mk/elf.mk | 1 1 + 0 - 0 !
mk/embedded.mk | 2 1 + 1 - 0 !
mk/lib.mk | 2 1 + 1 - 0 !
5 files changed, 14 insertions(+), 3 deletions(-)

 gcc-10 compatibility patch

* Add `-fcommon` to most gcc invocations to allow duplicate definitions
* __builtin_strlen is not really a "builtin" an implementation still
  needs to be provided (source:
  https://bugzilla.suse.com/show_bug.cgi?id=1166605#c5). Work around the
  issue by supplying an inline function. The strlen function added to
  dos/string.h was copied from com32/lib/strlen.c.

0020 gcc 14 compatibility.patch | (download)

com32/chain/chain.c | 2 1 + 1 - 0 !
com32/lib/syslinux/debug.c | 1 1 + 0 - 0 !
efi/main.c | 5 3 + 2 - 0 !
mk/embedded.mk | 1 1 + 0 - 0 !
4 files changed, 6 insertions(+), 3 deletions(-)

 gcc-14 compatibility patch

* Disable FCF protection on i386, where it's not supported. 
* Add missing include to resolve implicit printf() function declaration.
* Add missing header file for long jumps in efi/main.c, fix invocations.
* Type-cast addr_t pointer to size_t, assumes that their size is the same.

0021 add_wchar_t type definition.patch | (download)

com32/include/stddef.h | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 [patch] stddef.h: add wchar_t type definition

Syslinux fail to build with gnu-efi >= 3.0.16 with error:

    In file included from /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/efi.h:44,
                     from /build/syslinux-6.03/efi/efi.h:23,
                     from /build/syslinux-6.03/efi/adv.h:4,
                     from /build/syslinux-6.03/efi/adv.c:29:
    /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/ia32/efibind.h:90:9: error: unknown type name 'wchar_t'
     typedef wchar_t CHAR16;
             ^~~~~~~

This is because gnu-efi started to use the "wchar_t" type from the
toolchain's <stddef.h> header, in commit [1]. Before this commit,
gnu-efi was defining the type as "short".

Syslinux is including its own minimal stddef.h file, which masks the
one provided by the toolchain. See [2]. This file does not have a type
definition for "wchar_t".

Finally, the POSIX <stddef.h> header is supposed to provide this
"wchar_t" type definition. See [3].

This commit fixes the issue by adding the "wchar_t" type definition in
the com32/include/stddef.h header. Since Syslinux has "-fshort-wchar"
in its CFLAGS (see [4]), "wchar_t" is simply defined as "short". This
also follow the previous gnu-efi < 3.0.16 behavior.

This issue was seen in Buildroot Linux, in [5].

[1] https://sourceforge.net/p/gnu-efi/code/ci/189200d0b0f6fff473d302880d9569f45d4d8c4d
[2] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/com32/include/stddef.h
[3] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html
[4] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/mk/efi.mk#l27
[5] https://lists.buildroot.org/pipermail/buildroot/2024-February/685971.html

Upstream: Proposed: https://www.syslinux.org/archives/2024-February/026903.html
Signed-off-by: Julien Olivain <ju.o@free.fr>