From f7dd65a85178117060b5f448ae57c8d4fb46f7be Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 23 2022 22:09:43 +0000 Subject: import syslinux-6.04-6.el8 --- diff --git a/SOURCES/0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch b/SOURCES/0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch index 78cceb6..00eef59 100644 --- a/SOURCES/0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch +++ b/SOURCES/0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch @@ -1,4 +1,4 @@ -From ca745cdfc27b83b6bcef9f856d858a68c64429de Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Tue, 8 Apr 2014 15:28:12 -0400 Subject: [PATCH] Add "install-all target" to top side of HAVE_FIRMWARE. @@ -8,7 +8,7 @@ Subject: [PATCH] Add "install-all target" to top side of HAVE_FIRMWARE. 1 file changed, 10 insertions(+) diff --git a/Makefile b/Makefile -index b472945..6606d31 100644 +index b472945b..6606d319 100644 --- a/Makefile +++ b/Makefile @@ -275,6 +275,16 @@ efi64: @@ -28,5 +28,3 @@ index b472945..6606d31 100644 else # FIRMWARE all: all-local subdirs --- -2.5.5 diff --git a/SOURCES/0002-ext4-64bit-feature.patch b/SOURCES/0002-ext4-64bit-feature.patch deleted file mode 100644 index 9efe878..0000000 --- a/SOURCES/0002-ext4-64bit-feature.patch +++ /dev/null @@ -1,101 +0,0 @@ -From af7e95c32cea40c1e443ae301e64b27f068b4915 Mon Sep 17 00:00:00 2001 -From: Paulo Alcantara -Date: Wed, 11 Oct 2017 07:00:31 -0400 -Subject: [PATCH] ext4: Fix 64bit feature - -As per ext4 specification: - -> In ext2, ext3, and ext4 (when the 64bit feature is not enabled), the -> block group descriptor was only 32 bytes long and therefore ends at -> bg_checksum. On an ext4 filesystem with the 64bit feature enabled, the -> block group descriptor expands to at least the 64 bytes described below; -> the size is stored in the superblock. - -Since block group descriptor has been expanded to 64 bytes long (when 64 -bit feature is enabled), we cannot index ext2_group_desc and return it -*directly* -- as we did it in ext2_get_group_desc -- it's still 32 bytes -long. - -Instead, use s_desc_size field from superblock to correctly index and -return block group descriptors. - -Cc: H. Peter Anvin -Cc: Gene Cumm -Signed-off-by: Paulo Alcantara ---- - core/fs/ext2/ext2.c | 23 ++++++++++++++--------- - core/fs/ext2/ext2_fs.h | 1 + - 2 files changed, 15 insertions(+), 9 deletions(-) - -diff --git a/core/fs/ext2/ext2.c b/core/fs/ext2/ext2.c -index 76bd1d5..4bc0a53 100644 ---- a/core/fs/ext2/ext2.c -+++ b/core/fs/ext2/ext2.c -@@ -25,22 +25,17 @@ static enum dirent_type ext2_cvt_type(unsigned int d_file_type) - return inode_type[d_file_type]; - } - --/* -- * get the group's descriptor of group_num -- */ --static const struct ext2_group_desc * --ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) -+static const void *__ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) - { - struct ext2_sb_info *sbi = EXT2_SB(fs); - uint32_t desc_block, desc_index; -- const struct ext2_group_desc *desc_data_block; -+ uint8_t *p; - - if (group_num >= sbi->s_groups_count) { - printf ("ext2_get_group_desc" - "block_group >= groups_count - " - "block_group = %d, groups_count = %d", - group_num, sbi->s_groups_count); -- - return NULL; - } - -@@ -49,8 +44,17 @@ ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) - - desc_block += sbi->s_first_data_block + 1; - -- desc_data_block = get_cache(fs->fs_dev, desc_block); -- return &desc_data_block[desc_index]; -+ p = get_cache(fs->fs_dev, desc_block); -+ return p + sbi->s_desc_size * desc_index; -+} -+ -+/* -+ * get the group's descriptor of group_num -+ */ -+static inline const struct ext2_group_desc * -+ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) -+{ -+ return __ext2_get_group_desc(fs, group_num); - } - - /* -@@ -306,6 +310,7 @@ static int ext2_fs_init(struct fs_info *fs) - if (sb.s_desc_size < sizeof(struct ext2_group_desc)) - sb.s_desc_size = sizeof(struct ext2_group_desc); - sbi->s_desc_per_block = BLOCK_SIZE(fs) / sb.s_desc_size; -+ sbi->s_desc_size = sb.s_desc_size; - sbi->s_groups_count = (sb.s_blocks_count - sb.s_first_data_block - + EXT2_BLOCKS_PER_GROUP(fs) - 1) - / EXT2_BLOCKS_PER_GROUP(fs); -diff --git a/core/fs/ext2/ext2_fs.h b/core/fs/ext2/ext2_fs.h -index 803a995..d8d07eb 100644 ---- a/core/fs/ext2/ext2_fs.h -+++ b/core/fs/ext2/ext2_fs.h -@@ -278,6 +278,7 @@ struct ext2_sb_info { - uint32_t s_first_data_block; /* First Data Block */ - int s_inode_size; - uint8_t s_uuid[16]; /* 128-bit uuid for volume */ -+ int s_desc_size; /* size of group descriptor */ - }; - - static inline struct ext2_sb_info *EXT2_SB(struct fs_info *fs) --- -2.7.4.GIT - diff --git a/SOURCES/0002-ext4-Fix-64bit-feature.patch b/SOURCES/0002-ext4-Fix-64bit-feature.patch new file mode 100644 index 0000000..4989bcd --- /dev/null +++ b/SOURCES/0002-ext4-Fix-64bit-feature.patch @@ -0,0 +1,98 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paulo Alcantara +Date: Wed, 11 Oct 2017 07:00:31 -0400 +Subject: [PATCH] ext4: Fix 64bit feature + +As per ext4 specification: + +> In ext2, ext3, and ext4 (when the 64bit feature is not enabled), the +> block group descriptor was only 32 bytes long and therefore ends at +> bg_checksum. On an ext4 filesystem with the 64bit feature enabled, the +> block group descriptor expands to at least the 64 bytes described below; +> the size is stored in the superblock. + +Since block group descriptor has been expanded to 64 bytes long (when 64 +bit feature is enabled), we cannot index ext2_group_desc and return it +*directly* -- as we did it in ext2_get_group_desc -- it's still 32 bytes +long. + +Instead, use s_desc_size field from superblock to correctly index and +return block group descriptors. + +Cc: H. Peter Anvin +Cc: Gene Cumm +Signed-off-by: Paulo Alcantara +--- + core/fs/ext2/ext2.c | 23 ++++++++++++++--------- + core/fs/ext2/ext2_fs.h | 1 + + 2 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/core/fs/ext2/ext2.c b/core/fs/ext2/ext2.c +index 76bd1d5a..4bc0a535 100644 +--- a/core/fs/ext2/ext2.c ++++ b/core/fs/ext2/ext2.c +@@ -25,22 +25,17 @@ static enum dirent_type ext2_cvt_type(unsigned int d_file_type) + return inode_type[d_file_type]; + } + +-/* +- * get the group's descriptor of group_num +- */ +-static const struct ext2_group_desc * +-ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) ++static const void *__ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) + { + struct ext2_sb_info *sbi = EXT2_SB(fs); + uint32_t desc_block, desc_index; +- const struct ext2_group_desc *desc_data_block; ++ uint8_t *p; + + if (group_num >= sbi->s_groups_count) { + printf ("ext2_get_group_desc" + "block_group >= groups_count - " + "block_group = %d, groups_count = %d", + group_num, sbi->s_groups_count); +- + return NULL; + } + +@@ -49,8 +44,17 @@ ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) + + desc_block += sbi->s_first_data_block + 1; + +- desc_data_block = get_cache(fs->fs_dev, desc_block); +- return &desc_data_block[desc_index]; ++ p = get_cache(fs->fs_dev, desc_block); ++ return p + sbi->s_desc_size * desc_index; ++} ++ ++/* ++ * get the group's descriptor of group_num ++ */ ++static inline const struct ext2_group_desc * ++ext2_get_group_desc(struct fs_info *fs, uint32_t group_num) ++{ ++ return __ext2_get_group_desc(fs, group_num); + } + + /* +@@ -306,6 +310,7 @@ static int ext2_fs_init(struct fs_info *fs) + if (sb.s_desc_size < sizeof(struct ext2_group_desc)) + sb.s_desc_size = sizeof(struct ext2_group_desc); + sbi->s_desc_per_block = BLOCK_SIZE(fs) / sb.s_desc_size; ++ sbi->s_desc_size = sb.s_desc_size; + sbi->s_groups_count = (sb.s_blocks_count - sb.s_first_data_block + + EXT2_BLOCKS_PER_GROUP(fs) - 1) + / EXT2_BLOCKS_PER_GROUP(fs); +diff --git a/core/fs/ext2/ext2_fs.h b/core/fs/ext2/ext2_fs.h +index 803a9954..d8d07ebd 100644 +--- a/core/fs/ext2/ext2_fs.h ++++ b/core/fs/ext2/ext2_fs.h +@@ -278,6 +278,7 @@ struct ext2_sb_info { + uint32_t s_first_data_block; /* First Data Block */ + int s_inode_size; + uint8_t s_uuid[16]; /* 128-bit uuid for volume */ ++ int s_desc_size; /* size of group descriptor */ + }; + + static inline struct ext2_sb_info *EXT2_SB(struct fs_info *fs) diff --git a/SOURCES/0003-extlinux-fix-missing-include-for-major-minor.patch b/SOURCES/0003-extlinux-fix-missing-include-for-major-minor.patch deleted file mode 100644 index c98ec5f..0000000 --- a/SOURCES/0003-extlinux-fix-missing-include-for-major-minor.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f2bad087b524546d349c79e62ea8f6a1306d800a Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Fri, 10 Aug 2018 05:03:38 -0400 -Subject: [PATCH] extlinux: fix missing include for major()/minor() - -Resolves: rhbz#1611751 - -Signed-off-by: Peter Jones ---- - extlinux/main.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/extlinux/main.c b/extlinux/main.c -index a7ebd49a948..69bb1644547 100644 ---- a/extlinux/main.c -+++ b/extlinux/main.c -@@ -41,6 +41,7 @@ - #include - #include - #include -+#include - - #include "linuxioctl.h" - --- -2.17.1 - diff --git a/SOURCES/0003-extlinux-pull-in-sys-sysmacros.h-for-major-minor-mak.patch b/SOURCES/0003-extlinux-pull-in-sys-sysmacros.h-for-major-minor-mak.patch new file mode 100644 index 0000000..406d25e --- /dev/null +++ b/SOURCES/0003-extlinux-pull-in-sys-sysmacros.h-for-major-minor-mak.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 19 Apr 2016 06:50:31 -0400 +Subject: [PATCH] extlinux: pull in sys/sysmacros.h for major/minor/makedev + +These functions are defined in sys/sysmacros.h, so add the include to +main.c. This is already handled correctly in mountinfo.c. Otherwise +we get build failures like: + +main.o: In function 'find_device_sysfs': +extlinux/main.c:1131: undefined reference to 'minor' + +Signed-off-by: Mike Frysinger +Signed-off-by: Gene Cumm +--- + extlinux/main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/extlinux/main.c b/extlinux/main.c +index a7ebd49a..ebff7eae 100644 +--- a/extlinux/main.c ++++ b/extlinux/main.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/SOURCES/0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch b/SOURCES/0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch index e55c490..ab35dbc 100644 --- a/SOURCES/0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch +++ b/SOURCES/0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch @@ -1,4 +1,4 @@ -From 5c24d725d5a5f50f0544fbcc544f08a3f9e90e5d Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Thu, 8 Aug 2019 05:41:36 -0400 Subject: [PATCH] Add 'RPMOPTFLAGS' to CFLAGS for some stuff. @@ -11,7 +11,7 @@ Subject: [PATCH] Add 'RPMOPTFLAGS' to CFLAGS for some stuff. 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extlinux/Makefile b/extlinux/Makefile -index 1721ee54aff..d504e23133e 100644 +index 1721ee54..d504e231 100644 --- a/extlinux/Makefile +++ b/extlinux/Makefile @@ -18,9 +18,9 @@ include $(MAKEDIR)/syslinux.mk @@ -27,7 +27,7 @@ index 1721ee54aff..d504e23133e 100644 SRCS = main.c \ mountinfo.c \ diff --git a/linux/Makefile b/linux/Makefile -index 5a49d813de1..9fed68d02c6 100644 +index 5a49d813..9fed68d0 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -18,8 +18,8 @@ include $(MAKEDIR)/syslinux.mk @@ -42,7 +42,7 @@ index 5a49d813de1..9fed68d02c6 100644 SRCS = syslinux.c \ ../libinstaller/syslxopt.c \ diff --git a/mtools/Makefile b/mtools/Makefile -index 632b185ba2f..b6e5ebdba6b 100755 +index 632b185b..b6e5ebdb 100755 --- a/mtools/Makefile +++ b/mtools/Makefile @@ -2,8 +2,8 @@ include $(MAKEDIR)/syslinux.mk @@ -57,7 +57,7 @@ index 632b185ba2f..b6e5ebdba6b 100755 SRCS = syslinux.c \ ../libinstaller/fs.c \ diff --git a/utils/Makefile b/utils/Makefile -index dfe625902ce..b4962353f20 100644 +index dfe62590..b4962353 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -17,8 +17,8 @@ @@ -71,6 +71,3 @@ index dfe625902ce..b4962353f20 100644 C_TARGETS = isohybrid gethostip memdiskfind SCRIPT_TARGETS = mkdiskimage --- -2.21.0 - diff --git a/SOURCES/0005-Workaround-multiple-definition-of-symbol-errors.patch b/SOURCES/0005-Workaround-multiple-definition-of-symbol-errors.patch new file mode 100644 index 0000000..9bfd247 --- /dev/null +++ b/SOURCES/0005-Workaround-multiple-definition-of-symbol-errors.patch @@ -0,0 +1,106 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Merlin Mathesius +Date: Wed, 13 May 2020 08:02:27 -0500 +Subject: [PATCH] Workaround multiple definition of symbol errors + +--- + com32/cmenu/Makefile | 2 +- + com32/elflink/ldlinux/Makefile | 2 +- + com32/gpllib/Makefile | 2 +- + com32/hdt/Makefile | 2 +- + core/Makefile | 2 +- + dos/Makefile | 2 +- + efi/Makefile | 2 +- + 7 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile +index b81b68ed..2ae989c4 100644 +--- a/com32/cmenu/Makefile ++++ b/com32/cmenu/Makefile +@@ -49,7 +49,7 @@ makeoutputdirs: + @mkdir -p $(OBJ)/libmenu + + libmenu/libmenu.elf: $(LIBMENU) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \ + -o $@ $^ + + tidy dist: +diff --git a/com32/elflink/ldlinux/Makefile b/com32/elflink/ldlinux/Makefile +index 87c0d362..2be2a01a 100644 +--- a/com32/elflink/ldlinux/Makefile ++++ b/com32/elflink/ldlinux/Makefile +@@ -33,7 +33,7 @@ endif + all: $(BTARGET) ldlinux_lnx.a + + ldlinux.elf : $(OBJS) +- $(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS) ++ $(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS) + + LNXCFLAGS += -D__export='__attribute__((visibility("default")))' + LNXLIBOBJS = get_key.lo +diff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile +index 1fec9145..2d764d0b 100644 +--- a/com32/gpllib/Makefile ++++ b/com32/gpllib/Makefile +@@ -24,7 +24,7 @@ makeoutputdirs: + $(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b)) + + libgpl.elf : $(LIBOBJS) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ + + tidy dist clean: + find . \( -name \*.o -o -name .\*.d -o -name \*.tmp \) -print0 | \ +diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile +index 61736d05..1d947857 100644 +--- a/com32/hdt/Makefile ++++ b/com32/hdt/Makefile +@@ -52,7 +52,7 @@ QEMU ?= qemu-kvm + all: $(MODULES) $(TESTFILES) + + hdt.elf : $(OBJS) $(LIBS) $(C_LIBS) +- $(LD) $(LDFLAGS) -o $@ $^ ++ $(LD) $(LDFLAGS) -z muldefs -o $@ $^ + + memtest: + -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST) +diff --git a/core/Makefile b/core/Makefile +index 46cb037c..f0cfcbe9 100644 +--- a/core/Makefile ++++ b/core/Makefile +@@ -156,7 +156,7 @@ LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld + NASM_ELF = elf + + %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS) +- $(LD) $(LDFLAGS) -pie -Bsymbolic \ ++ $(LD) $(LDFLAGS) -z muldefs -pie -Bsymbolic \ + -T $(LDSCRIPT) \ + --unresolved-symbols=report-all \ + -E --hash-style=gnu -M -o $@ $< \ +diff --git a/dos/Makefile b/dos/Makefile +index 4c930d19..5d1c72ca 100644 +--- a/dos/Makefile ++++ b/dos/Makefile +@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk + CFLAGS += -D__MSDOS__ -mregparm=3 -DREGPARM=3 + # CFLAGS += -DDEBUG + +-LDFLAGS = -T $(SRC)/dosexe.ld ++LDFLAGS = -T $(SRC)/dosexe.ld -z muldefs + OPTFLAGS = -g + INCLUDES = -include code16.h -nostdinc -iwithprefix include \ + -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \ +diff --git a/efi/Makefile b/efi/Makefile +index bbf23f24..3dd922d5 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -69,7 +69,7 @@ $(OBJS): | $(OBJ)/$(ARCH) + BTARGET = syslinux.efi + + syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) +- $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi ++ $(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi + + # We need to rename the .hash section because the EFI firmware + # linker really doesn't like it. diff --git a/SOURCES/0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch b/SOURCES/0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch new file mode 100644 index 0000000..80e530e --- /dev/null +++ b/SOURCES/0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch @@ -0,0 +1,37 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Merlin Mathesius +Date: Wed, 13 May 2020 11:58:37 -0500 +Subject: [PATCH] Replace builtin strlen that appears to get optimized away + +--- + dos/string.h | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/dos/string.h b/dos/string.h +index f648de2d..407d0233 100644 +--- a/dos/string.h ++++ b/dos/string.h +@@ -5,12 +5,22 @@ + #ifndef _STRING_H + #define _STRING_H + ++#include ++ + /* Standard routines */ + #define memcpy(a,b,c) __builtin_memcpy(a,b,c) + #define memmove(a,b,c) __builtin_memmove(a,b,c) + #define memset(a,b,c) __builtin_memset(a,b,c) + #define strcpy(a,b) __builtin_strcpy(a,b) +-#define strlen(a) __builtin_strlen(a) ++#define strlen(a) inline_strlen(a) ++ ++/* replacement for builtin strlen that appears to get optimized away */ ++static inline size_t inline_strlen(const char *str) ++{ ++ size_t l; ++ for (l = 0; *str++; l++); ++ return l; ++} + + /* This only returns true or false */ + static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n) diff --git a/SOURCES/0007-Fix-backspace-when-editing-a-multiline-cmdline.patch b/SOURCES/0007-Fix-backspace-when-editing-a-multiline-cmdline.patch new file mode 100644 index 0000000..d96df40 --- /dev/null +++ b/SOURCES/0007-Fix-backspace-when-editing-a-multiline-cmdline.patch @@ -0,0 +1,134 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Thu, 21 Oct 2021 15:15:33 -0400 +Subject: [PATCH] Fix backspace when editing a multiline cmdline + +Once the cmdline had passed the width of the screen, adding additional +characters introduced a spurious newline, and another newline at the +width of input. Furthermore, hitting backspace would not start +redrawing at the end of input, but rather at the beginning of the +current line - resulting in extra duplicate lines scrolling the console. + +First, fix the assumption that the length of cmdline is the width - it +needs to include the length of the prompt (i.e., length of input and +space). + +Second, fix the behavior of single-line redraw (i.e., redraw == 1) to +move the cursor to the row the line begins at. + +Third, don't scroll the cursor down when a line wrap would occur - it's +not necessary since line wrap is enabled, and results in the extra blank +line. + +Finally, comment all used escape sequences so that I don't need to look +them up again. + +Signed-off-by: Robbie Harwood +--- + com32/elflink/ldlinux/cli.c | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +diff --git a/com32/elflink/ldlinux/cli.c b/com32/elflink/ldlinux/cli.c +index 3119b11f..4913f038 100644 +--- a/com32/elflink/ldlinux/cli.c ++++ b/com32/elflink/ldlinux/cli.c +@@ -135,6 +135,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + struct cli_command *comm_counter = NULL; + clock_t kbd_to = kbdtimeout; + clock_t tto = totaltimeout; ++ int prompt_len = 1 + strlen(input); + + if (!width) { + int height; +@@ -144,7 +145,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + + len = cursor = 0; + prev_len = 0; +- x = y = 0; ++ y = 0; + + /* + * Before we start messing with the x,y coordinates print 'input' +@@ -152,6 +153,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + * previously. + */ + printf("%s ", input); ++ x = prompt_len; + + while (!done) { + if (redraw > 1) { +@@ -162,8 +164,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + if (pDraw_Menu) + (*pDraw_Menu) (-1, top, 1); + prev_len = 0; +- printf("\033[2J\033[H"); +- // printf("\033[0m\033[2J\033[H"); ++ printf("\033[2J\033[H"); /* Clear entire screen; move to 0, 0. */ + } + + if (redraw > 0) { +@@ -172,10 +173,14 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + prev_len = max(len, prev_len); + + /* Redraw the command line */ +- printf("\033[?25l"); +- printf("\033[1G%s ", input); ++ printf("\033[?25l"); /* Hide cursor. */ ++ printf("\033[1G"); /* Column 1. */ ++ if (y > 0) ++ printf("\033[%dA", y); /* Directly up. */ + +- x = strlen(input); ++ printf("%s ", input); ++ ++ x = prompt_len; + y = 0; + at = 0; + while (at < prev_len) { +@@ -183,23 +188,22 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + at++; + x++; + if (x >= width) { +- printf("\r\n"); + x = 0; + y++; + } + } +- printf("\033[K\r"); ++ printf("\033[K\r"); /* Clear to end of line; go to beginning. */ + +- dy = y - (cursor + strlen(input) + 1) / width; +- x = (cursor + strlen(input) + 1) % width; ++ dy = y - (cursor + prompt_len) / width; ++ x = (cursor + prompt_len) % width; + + if (dy) { +- printf("\033[%dA", dy); ++ printf("\033[%dA", dy); /* Cursor directly up. */ + y -= dy; + } + if (x) +- printf("\033[%dC", x); +- printf("\033[?25h"); ++ printf("\033[%dC", x); /* Cursor forward. */ ++ printf("\033[?25h"); /* Show cursor. */ + prev_len = len; + redraw = 0; + } +@@ -439,7 +443,6 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + cursor++; + x++; + if (x >= width) { +- printf("\r\n\033[K"); + y++; + x = 0; + } +@@ -459,7 +462,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , + } + } + +- printf("\033[?7h"); ++ printf("\033[?7h"); /* Enable line wrap. */ + + /* Add the command to the history if its length is larger than 0 */ + len = strlen(ret); diff --git a/SOURCES/syslinux.patches b/SOURCES/syslinux.patches new file mode 100644 index 0000000..12581b2 --- /dev/null +++ b/SOURCES/syslinux.patches @@ -0,0 +1,7 @@ +Patch0001: 0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch +Patch0002: 0002-ext4-Fix-64bit-feature.patch +Patch0003: 0003-extlinux-pull-in-sys-sysmacros.h-for-major-minor-mak.patch +Patch0004: 0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch +Patch0005: 0005-Workaround-multiple-definition-of-symbol-errors.patch +Patch0006: 0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch +Patch0007: 0007-Fix-backspace-when-editing-a-multiline-cmdline.patch diff --git a/SPECS/syslinux.spec b/SPECS/syslinux.spec index a7e047e..5a1d5ba 100644 --- a/SPECS/syslinux.spec +++ b/SPECS/syslinux.spec @@ -7,15 +7,14 @@ Summary: Simple kernel loader which boots from a FAT filesystem Name: syslinux Version: 6.04 %define tarball_version 6.04-pre1 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv2+ Group: Applications/System URL: http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project Source0: http://www.kernel.org/pub/linux/utils/boot/syslinux/%{name}-%{tarball_version}.tar.xz -Patch0001: 0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch -Patch0002: 0002-ext4-64bit-feature.patch -Patch0003: 0003-extlinux-fix-missing-include-for-major-minor.patch -Patch0004: 0004-Add-RPMOPTFLAGS-to-CFLAGS-for-some-stuff.patch +Source1: syslinux.patches + +%include %{SOURCE1} # this is to keep rpmbuild from thinking the .c32 / .com / .0 / memdisk files # in noarch packages are a reason to stop the build. @@ -266,6 +265,10 @@ fi %endif %changelog +* Wed Aug 03 2022 Robbie Harwood - 6.04-6 +- Sync with RHEL 9 / Fedora at their 6.04-0.20 +- Resolves: #1748014 + * Fri Nov 13 2020 Javier Martinez Canillas - 6.04-5 - Bump release to ship the syslinux-tftpboot subpackage on aarch64 Resolves: rhbz#1870276