diff --git a/0001-gconv-Use-64-bit-interfaces-in-gconv_parseconfdir-bu.patch b/0001-gconv-Use-64-bit-interfaces-in-gconv_parseconfdir-bu.patch deleted file mode 100644 index cdd9b8abfd457fecac90a41069a9806515e6b70a..0000000000000000000000000000000000000000 --- a/0001-gconv-Use-64-bit-interfaces-in-gconv_parseconfdir-bu.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 52c037f3574eb9062b111d78a4cbeb79681d07d3 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Tue, 20 Sep 2022 12:12:43 +0200 -Subject: [PATCH] gconv: Use 64-bit interfaces in gconv_parseconfdir (bug - 29583) - -It's possible that inode numbers are outside the 32-bit range. -The existing code only handles the in-libc case correctly, and -still uses the legacy interfaces when building iconv. - -Suggested-by: Helge Deller -(cherry picked from commit f97905f24631097af325d6a231093071c3077a5f) -Signed-off-by: buque ---- - iconv/gconv_parseconfdir.h | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - - -diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h -index debb96b322..b72933b526 100644 ---- a/iconv/gconv_parseconfdir.h -+++ b/iconv/gconv_parseconfdir.h -@@ -29,14 +29,14 @@ - # define isspace(__c) __isspace_l ((__c), _nl_C_locobj_ptr) - # define asprintf __asprintf - # define opendir __opendir --# define readdir __readdir -+# define readdir64 __readdir64 - # define closedir __closedir - # define mempcpy __mempcpy --# define struct_stat struct __stat64_t64 --# define lstat __lstat64_time64 -+# define struct_stat64 struct __stat64_t64 -+# define lstat64 __lstat64_time64 - # define feof_unlocked __feof_unlocked - #else --# define struct_stat struct stat -+# define struct_stat64 struct stat64 - #endif - - /* Name of the file containing the module information in the directories -@@ -148,8 +148,8 @@ gconv_parseconfdir (const char *prefix, const char *dir, size_t dir_len) - DIR *confdir = opendir (buf); - if (confdir != NULL) - { -- struct dirent *ent; -- while ((ent = readdir (confdir)) != NULL) -+ struct dirent64 *ent; -+ while ((ent = readdir64 (confdir)) != NULL) - { - if (ent->d_type != DT_REG && ent->d_type != DT_UNKNOWN) - continue; -@@ -161,12 +161,12 @@ gconv_parseconfdir (const char *prefix, const char *dir, size_t dir_len) - && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) - { - char *conf; -- struct_stat st; -+ struct_stat64 st; - if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) - continue; - - if (ent->d_type != DT_UNKNOWN -- || (lstat (conf, &st) != -1 && S_ISREG (st.st_mode))) -+ || (lstat64 (conf, &st) != -1 && S_ISREG (st.st_mode))) - found |= read_conf_file (conf, dir, dir_len); - - free (conf); --- -2.37.3.windows.1 - diff --git a/0001-syslog-Remove-extra-whitespace-between-timestamp-and.patch b/0001-syslog-Remove-extra-whitespace-between-timestamp-and.patch deleted file mode 100644 index a3a50341a7fbd60ec5005a26b098ea39388a9ac6..0000000000000000000000000000000000000000 --- a/0001-syslog-Remove-extra-whitespace-between-timestamp-and.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 645d94808aaa90fb1b20a25ff70bb50d9eb1d55b Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Mon, 5 Sep 2022 09:34:39 -0300 -Subject: [PATCH] syslog: Remove extra whitespace between timestamp and message - (BZ#29544) - -The rfc3164 clear states that a single space character must follow -the timestamp field. - -Checked on x86_64-linux-gnu. - -Signed-off-by: buque ---- - misc/syslog.c | 2 +- - misc/tst-syslog.c | 9 ++++++--- - 2 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/misc/syslog.c b/misc/syslog.c -index b88f66c835..f67d4b58a4 100644 ---- a/misc/syslog.c -+++ b/misc/syslog.c -@@ -167,7 +167,7 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, - _nl_C_locobj_ptr); - - #define SYSLOG_HEADER(__pri, __timestamp, __msgoff, pid) \ -- "<%d>%s %n%s%s%.0d%s: ", \ -+ "<%d>%s%n%s%s%.0d%s: ", \ - __pri, __timestamp, __msgoff, \ - LogTag == NULL ? __progname : LogTag, \ - "[" + (pid == 0), pid, "]" + (pid == 0) -diff --git a/misc/tst-syslog.c b/misc/tst-syslog.c -index 1d332ece53..3560b518a2 100644 ---- a/misc/tst-syslog.c -+++ b/misc/tst-syslog.c -@@ -275,16 +275,19 @@ parse_syslog_msg (const char *msg) - { - struct msg_t r = { .pid = -1 }; - int number; -+ int wsb, wsa; - - #define STRINPUT(size) XSTRINPUT(size) - #define XSTRINPUT(size) "%" # size "s" - - /* The message in the form: -- <179>Apr 8 14:51:19 tst-syslog: message 176 3 */ -- int n = sscanf (msg, "<%3d>%*s %*d %*d:%*d:%*d " STRINPUT(IDENT_LENGTH) -+ <179>Apr 8 14:51:19 tst-syslog: message 176 3 */ -+ int n = sscanf (msg, "<%3d>%*s %*d %*d:%*d:%*d%n %n" STRINPUT(IDENT_LENGTH) - " " STRINPUT(MSG_LENGTH) " %*d %*d", -- &number, r.ident, r.msg); -+ &number, &wsb, &wsa, r.ident, r.msg); - TEST_COMPARE (n, 3); -+ /* It should only one space between timestamp and message. */ -+ TEST_COMPARE (wsa - wsb, 1); - - r.facility = number & LOG_FACMASK; - r.priority = number & LOG_PRIMASK; --- -2.37.3.windows.1 - diff --git a/Assume-only-FLAG_ELF_LIBC6-suport.patch b/Assume-only-FLAG_ELF_LIBC6-suport.patch deleted file mode 100644 index f6814a3688fcb4d5a38d50e6309053d32c257d25..0000000000000000000000000000000000000000 --- a/Assume-only-FLAG_ELF_LIBC6-suport.patch +++ /dev/null @@ -1,658 +0,0 @@ -From 8ee878592c4a642937152c8308b8faef86bcfc40 Mon Sep 17 00:00:00 2001 -From: "Lucas A. M. Magalhaes" -Date: Thu, 14 Jul 2022 14:37:22 -0300 -Subject: [PATCH] Assume only FLAG_ELF_LIBC6 suport - -The older libc versions are obsolete for over twenty years now. -This patch removes the special flags for libc5 and libc4 and assumes -that all libraries cached are libc6 compatible and use FLAG_ELF_LIBC6. - -Checked with a build for all affected architectures. - -Co-authored-by: Adhemerval Zanella -Reviewed-by: Adhemerval Zanella ---- - elf/cache.c | 6 +- - elf/ldconfig.c | 63 ++----------------- - elf/readelflib.c | 46 ++------------ - elf/readlib.c | 25 +------- - sysdeps/unix/sysv/linux/aarch64/ldconfig.h | 30 --------- - sysdeps/unix/sysv/linux/arc/ldconfig.h | 27 -------- - sysdeps/unix/sysv/linux/arm/ldconfig.h | 25 -------- - sysdeps/unix/sysv/linux/csky/ldconfig.h | 34 ---------- - sysdeps/unix/sysv/linux/i386/ldconfig.h | 6 -- - sysdeps/unix/sysv/linux/ia64/ldconfig.h | 24 ------- - sysdeps/unix/sysv/linux/m68k/ldconfig.h | 1 - - .../unix/sysv/linux/mips/mips64/ldconfig.h | 25 -------- - sysdeps/unix/sysv/linux/powerpc/ldconfig.h | 27 -------- - sysdeps/unix/sysv/linux/riscv/ldconfig.h | 36 ----------- - sysdeps/unix/sysv/linux/s390/ldconfig.h | 7 --- - sysdeps/unix/sysv/linux/x86_64/ldconfig.h | 26 -------- - 16 files changed, 14 insertions(+), 394 deletions(-) - delete mode 100644 sysdeps/unix/sysv/linux/aarch64/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/arc/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/arm/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/csky/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/ia64/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/m68k/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/powerpc/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/riscv/ldconfig.h - delete mode 100644 sysdeps/unix/sysv/linux/x86_64/ldconfig.h - -diff --git a/elf/cache.c b/elf/cache.c -index 3d7d3a67bf..f5f3ef8c4d 100644 ---- a/elf/cache.c -+++ b/elf/cache.c -@@ -157,6 +157,7 @@ struct cache_entry - /* List of all cache entries. */ - static struct cache_entry *entries; - -+/* libc4, ELF and libc5 are unsupported. */ - static const char *flag_descr[] = - { "libc4", "ELF", "libc5", "libc6"}; - -@@ -168,14 +169,11 @@ print_entry (const char *lib, int flag, uint64_t hwcap, - printf ("\t%s (", lib); - switch (flag & FLAG_TYPE_MASK) - { -- case FLAG_LIBC4: -- case FLAG_ELF: -- case FLAG_ELF_LIBC5: - case FLAG_ELF_LIBC6: - fputs (flag_descr[flag & FLAG_TYPE_MASK], stdout); - break; - default: -- fputs (_("unknown"), stdout); -+ fputs (_("unknown or unsupported flag"), stdout); - break; - } - switch (flag & FLAG_REQUIRED_MASK) -diff --git a/elf/ldconfig.c b/elf/ldconfig.c -index 9394ac6438..6f37f38f35 100644 ---- a/elf/ldconfig.c -+++ b/elf/ldconfig.c -@@ -65,19 +65,6 @@ - - #define PACKAGE _libc_intl_domainname - --static const struct --{ -- const char *name; -- int flag; --} lib_types[] = --{ -- {"libc4", FLAG_LIBC4}, -- {"libc5", FLAG_ELF_LIBC5}, -- {"libc6", FLAG_ELF_LIBC6}, -- {"glibc2", FLAG_ELF_LIBC6} --}; -- -- - /* List of directories to handle. */ - struct dir_entry - { -@@ -469,27 +456,8 @@ add_dir_1 (const char *line, const char *from_file, int from_line) - entry->from_file = strdup (from_file); - entry->from_line = from_line; - -- /* Search for an '=' sign. */ - entry->path = xstrdup (line); -- char *equal_sign = strchr (entry->path, '='); -- if (equal_sign) -- { -- *equal_sign = '\0'; -- ++equal_sign; -- entry->flag = FLAG_ANY; -- for (i = 0; i < sizeof (lib_types) / sizeof (lib_types[0]); ++i) -- if (strcmp (equal_sign, lib_types[i].name) == 0) -- { -- entry->flag = lib_types[i].flag; -- break; -- } -- if (entry->flag == FLAG_ANY) -- error (0, 0, _("%s is not a known library type"), equal_sign); -- } -- else -- { -- entry->flag = FLAG_ANY; -- } -+ entry->flag = FLAG_ELF_LIBC6; - - /* Canonify path: for now only remove leading and trailing - whitespace and the trailing slashes. */ -@@ -1054,23 +1022,11 @@ search_dir (const struct dir_entry *entry) - soname = xstrdup (direntry->d_name); - } - -- if (flag == FLAG_ELF -- && (entry->flag == FLAG_ELF_LIBC5 -- || entry->flag == FLAG_ELF_LIBC6)) -- flag = entry->flag; -- - /* Some sanity checks to print warnings. */ - if (opt_verbose) - { -- if (flag == FLAG_ELF_LIBC5 && entry->flag != FLAG_ELF_LIBC5 -- && entry->flag != FLAG_ANY) -- error (0, 0, _("libc5 library %s in wrong directory"), file_name); -- if (flag == FLAG_ELF_LIBC6 && entry->flag != FLAG_ELF_LIBC6 -- && entry->flag != FLAG_ANY) -+ if (flag == FLAG_ELF_LIBC6 && entry->flag != FLAG_ELF_LIBC6) - error (0, 0, _("libc6 library %s in wrong directory"), file_name); -- if (flag == FLAG_LIBC4 && entry->flag != FLAG_LIBC4 -- && entry->flag != FLAG_ANY) -- error (0, 0, _("libc4 library %s in wrong directory"), file_name); - } - - /* Add library to list. */ -@@ -1089,19 +1045,8 @@ search_dir (const struct dir_entry *entry) - /* It's newer - add it. */ - /* Flag should be the same - sanity check. */ - if (dlib_ptr->flag != flag) -- { -- if (dlib_ptr->flag == FLAG_ELF -- && (flag == FLAG_ELF_LIBC5 || flag == FLAG_ELF_LIBC6)) -- dlib_ptr->flag = flag; -- else if ((dlib_ptr->flag == FLAG_ELF_LIBC5 -- || dlib_ptr->flag == FLAG_ELF_LIBC6) -- && flag == FLAG_ELF) -- dlib_ptr->flag = flag; -- else -- error (0, 0, _("libraries %s and %s in directory %s have same soname but different type."), -- dlib_ptr->name, direntry->d_name, -- entry->path); -- } -+ error (0, 0, _("libraries %s and %s in directory %s have same soname but different type."), -+ dlib_ptr->name, direntry->d_name, entry->path); - free (dlib_ptr->name); - dlib_ptr->name = xstrdup (direntry->d_name); - dlib_ptr->is_link = is_link; -diff --git a/elf/readelflib.c b/elf/readelflib.c -index 771182b5d0..5f43e0230d 100644 ---- a/elf/readelflib.c -+++ b/elf/readelflib.c -@@ -44,7 +44,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag, - size_t file_length) - { - int i; -- unsigned int j; - unsigned int dynamic_addr; - size_t dynamic_size; - char *program_interpreter; -@@ -81,9 +80,8 @@ process_elf_file (const char *file_name, const char *lib, int *flag, - elf_pheader = (ElfW(Phdr) *) (elf_header->e_phoff + file_contents); - check_ptr (elf_pheader); - -- /* The library is an elf library, now search for soname and -- libc5/libc6. */ -- *flag = FLAG_ELF; -+ /* The library is an elf library. */ -+ *flag = FLAG_ELF_LIBC6; - - /* The default ISA level is 0. */ - *isa_level = 0; -@@ -110,16 +108,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag, - program_interpreter = (char *) (file_contents + segment->p_offset); - check_ptr (program_interpreter); - -- /* Check if this is enough to classify the binary. */ -- for (j = 0; j < sizeof (interpreters) / sizeof (interpreters [0]); -- ++j) -- if (strcmp (program_interpreter, interpreters[j].soname) == 0) -- { -- *flag = interpreters[j].flag; -- break; -- } -- break; -- - case PT_GNU_PROPERTY: - /* The NT_GNU_PROPERTY_TYPE_0 note must be aligned to 4 bytes - in 32-bit objects and to 8 bytes in 64-bit objects. Skip -@@ -244,38 +232,16 @@ done: - if (dynamic_strings == NULL) - return 1; - -- /* Now read the DT_NEEDED and DT_SONAME entries. */ -+ /* Now read the DT_SONAME entries. */ - for (dyn_entry = dynamic_segment; dyn_entry->d_tag != DT_NULL; - ++dyn_entry) - { -- if (dyn_entry->d_tag == DT_NEEDED || dyn_entry->d_tag == DT_SONAME) -+ if (dyn_entry->d_tag == DT_SONAME) - { - char *name = dynamic_strings + dyn_entry->d_un.d_val; - check_ptr (name); -- -- if (dyn_entry->d_tag == DT_NEEDED) -- { -- -- if (*flag == FLAG_ELF) -- { -- /* Check if this is enough to classify the binary. */ -- for (j = 0; -- j < sizeof (known_libs) / sizeof (known_libs [0]); -- ++j) -- if (strcmp (name, known_libs [j].soname) == 0) -- { -- *flag = known_libs [j].flag; -- break; -- } -- } -- } -- -- else if (dyn_entry->d_tag == DT_SONAME) -- *soname = xstrdup (name); -- -- /* Do we have everything we need? */ -- if (*soname && *flag != FLAG_ELF) -- return 0; -+ *soname = xstrdup (name); -+ return 0; - } - } - -diff --git a/elf/readlib.c b/elf/readlib.c -index ed42fbd48e..be65e3d0e9 100644 ---- a/elf/readlib.c -+++ b/elf/readlib.c -@@ -43,24 +43,6 @@ struct known_names - int flag; - }; - --static struct known_names interpreters[] = --{ -- { "/lib/" LD_SO, FLAG_ELF_LIBC6 }, --#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES -- SYSDEP_KNOWN_INTERPRETER_NAMES --#endif --}; -- --static struct known_names known_libs[] = --{ -- { LIBC_SO, FLAG_ELF_LIBC6 }, -- { LIBM_SO, FLAG_ELF_LIBC6 }, --#ifdef SYSDEP_KNOWN_LIBRARY_NAMES -- SYSDEP_KNOWN_LIBRARY_NAMES --#endif --}; -- -- - /* Check if string corresponds to a GDB Python file. */ - static bool - is_gdb_python_file (const char *name) -@@ -83,7 +65,8 @@ process_file (const char *real_file_name, const char *file_name, - struct exec *aout_header; - - ret = 0; -- *flag = FLAG_ANY; -+ /* Just set FLAG_ELF_LIBC6 as old formats are not supported anymore. */ -+ *flag = FLAG_ELF_LIBC6; - *soname = NULL; - - file = fopen (real_file_name, "rb"); -@@ -150,7 +133,6 @@ process_file (const char *real_file_name, const char *file_name, - *dot = '\0'; - } - *soname = copy; -- *flag = FLAG_LIBC4; - goto done; - } - -@@ -191,9 +173,6 @@ implicit_soname (const char *lib, int flag) - { - char *soname = xstrdup (lib); - -- if ((flag & FLAG_TYPE_MASK) != FLAG_LIBC4) -- return soname; -- - /* Aout files don't have a soname, just return the name - including the major number. */ - char *major = strstr (soname, ".so."); -diff --git a/sysdeps/unix/sysv/linux/aarch64/ldconfig.h b/sysdeps/unix/sysv/linux/aarch64/ldconfig.h -deleted file mode 100644 -index 5cbfb32714..0000000000 ---- a/sysdeps/unix/sysv/linux/aarch64/ldconfig.h -+++ /dev/null -@@ -1,30 +0,0 @@ --/* Copyright (C) 2009-2022 Free Software Foundation, Inc. -- -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public License as -- published by the Free Software Foundation; either version 2.1 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux-aarch64.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-aarch64_be.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-aarch64_ilp32.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-aarch64_be_ilp32.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h -deleted file mode 100644 -index f673170e59..0000000000 ---- a/sysdeps/unix/sysv/linux/arc/ldconfig.h -+++ /dev/null -@@ -1,27 +0,0 @@ --/* ldconfig default paths and libraries. Linux/RISC-V version. -- Copyright (C) 2020-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library. If not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 }, -- --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h -deleted file mode 100644 -index d1253993ea..0000000000 ---- a/sysdeps/unix/sysv/linux/arm/ldconfig.h -+++ /dev/null -@@ -1,25 +0,0 @@ --/* Copyright (C) 2001-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h -deleted file mode 100644 -index fbe17e3dc8..0000000000 ---- a/sysdeps/unix/sysv/linux/csky/ldconfig.h -+++ /dev/null -@@ -1,34 +0,0 @@ --/* ldconfig default paths and libraries. Linux/C-SKY version. -- Copyright (C) 2018-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define LD_SO_PREFIX "/lib/ld-linux-" --#define LD_SO_SUFFIX ".so.1" -- --#ifdef __CSKY_HARD_FLOAT__ --# define LD_SO_ABI "cskyv2-hf" --#else --# define LD_SO_ABI "cskyv2" --#endif -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/i386/ldconfig.h b/sysdeps/unix/sysv/linux/i386/ldconfig.h -index bafbec1231..9afda09cca 100644 ---- a/sysdeps/unix/sysv/linux/i386/ldconfig.h -+++ b/sysdeps/unix/sysv/linux/i386/ldconfig.h -@@ -16,9 +16,3 @@ - . */ - - #include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux.so.1", FLAG_ELF_LIBC5 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.5", FLAG_ELF_LIBC5 }, \ -- { "libm.so.5", FLAG_ELF_LIBC5 }, -diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h -deleted file mode 100644 -index 4731419bf8..0000000000 ---- a/sysdeps/unix/sysv/linux/ia64/ldconfig.h -+++ /dev/null -@@ -1,24 +0,0 @@ --/* Copyright (C) 2001-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/m68k/ldconfig.h b/sysdeps/unix/sysv/linux/m68k/ldconfig.h -deleted file mode 100644 -index 953f192bcd..0000000000 ---- a/sysdeps/unix/sysv/linux/m68k/ldconfig.h -+++ /dev/null -@@ -1 +0,0 @@ --#include -diff --git a/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h b/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h -deleted file mode 100644 -index ac82941aff..0000000000 ---- a/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h -+++ /dev/null -@@ -1,25 +0,0 @@ --/* Copyright (C) 2001-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library. If not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib64/ld.so.1", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h -deleted file mode 100644 -index 1d70657838..0000000000 ---- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h -+++ /dev/null -@@ -1,27 +0,0 @@ --/* ldconfig default paths and libraries. Linux/PowerPC version. -- Copyright (C) 2002-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib64/ld64.so.2", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h -deleted file mode 100644 -index e3847f116e..0000000000 ---- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h -+++ /dev/null -@@ -1,36 +0,0 @@ --/* ldconfig default paths and libraries. Linux/RISC-V version. -- Copyright (C) 2001-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library. If not, see -- . */ -- --#include -- --#define LD_SO_PREFIX "/lib/ld-linux-" --#define LD_SO_SUFFIX ".so.1" -- --#if __riscv_xlen == 64 --# define LD_SO_ABI "riscv64-lp64" --#else --# define LD_SO_ABI "riscv32-ilp32" --#endif -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { LD_SO_PREFIX LD_SO_ABI "d" LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, \ -- { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, -- --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h -index f564a6eaf6..9afda09cca 100644 ---- a/sysdeps/unix/sysv/linux/s390/ldconfig.h -+++ b/sysdeps/unix/sysv/linux/s390/ldconfig.h -@@ -16,10 +16,3 @@ - . */ - - #include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ -- { "/lib/ld64.so.1", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, -diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h -deleted file mode 100644 -index b67203e017..0000000000 ---- a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h -+++ /dev/null -@@ -1,26 +0,0 @@ --/* Copyright (C) 2001-2022 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --#define SYSDEP_KNOWN_INTERPRETER_NAMES \ -- { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, \ -- { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 }, \ -- { "/lib64/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 }, --#define SYSDEP_KNOWN_LIBRARY_NAMES \ -- { "libc.so.6", FLAG_ELF_LIBC6 }, \ -- { "libm.so.6", FLAG_ELF_LIBC6 }, --- -2.39.2 - diff --git a/Linux-Do-not-skip-d_ino-0-entries-in-readdir-readdir.patch b/Linux-Do-not-skip-d_ino-0-entries-in-readdir-readdir.patch deleted file mode 100644 index 7b3455ef3707577d447029afe86d57ad9b1cdf80..0000000000000000000000000000000000000000 --- a/Linux-Do-not-skip-d_ino-0-entries-in-readdir-readdir.patch +++ /dev/null @@ -1,243 +0,0 @@ -From 766b73768b290b303f5b56268c6c0d588d5a9267 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Mon, 19 Sep 2022 08:10:41 +0200 -Subject: [PATCH] Linux: Do not skip d_ino == 0 entries in readdir, readdir64 - (bug 12165) - -POSIX does not say this value is special. For example, old XFS file -systems may still use inode number zero. - -Also update the comment regarding ENOENT. Linux may return ENOENT -for some file systems. ---- - sysdeps/unix/sysv/linux/readdir.c | 57 +++++-------- - sysdeps/unix/sysv/linux/readdir64.c | 120 +++++++++++----------------- - 2 files changed, 69 insertions(+), 108 deletions(-) - -diff --git a/sysdeps/unix/sysv/linux/readdir.c b/sysdeps/unix/sysv/linux/readdir.c -index c31f349639..c9a04dc160 100644 ---- a/sysdeps/unix/sysv/linux/readdir.c -+++ b/sysdeps/unix/sysv/linux/readdir.c -@@ -28,48 +28,33 @@ __readdir_unlocked (DIR *dirp) - struct dirent *dp; - int saved_errno = errno; - -- do -+ if (dirp->offset >= dirp->size) - { -- size_t reclen; -+ /* We've emptied out our buffer. Refill it. */ - -- if (dirp->offset >= dirp->size) -+ size_t maxread = dirp->allocation; -+ ssize_t bytes; -+ -+ bytes = __getdents (dirp->fd, dirp->data, maxread); -+ if (bytes <= 0) - { -- /* We've emptied out our buffer. Refill it. */ -- -- size_t maxread = dirp->allocation; -- ssize_t bytes; -- -- bytes = __getdents (dirp->fd, dirp->data, maxread); -- if (bytes <= 0) -- { -- /* On some systems getdents fails with ENOENT when the -- open directory has been rmdir'd already. POSIX.1 -- requires that we treat this condition like normal EOF. */ -- if (bytes < 0 && errno == ENOENT) -- bytes = 0; -- -- /* Don't modifiy errno when reaching EOF. */ -- if (bytes == 0) -- __set_errno (saved_errno); -- dp = NULL; -- break; -- } -- dirp->size = (size_t) bytes; -- -- /* Reset the offset into the buffer. */ -- dirp->offset = 0; -+ /* Linux may fail with ENOENT on some file systems if the -+ directory inode is marked as dead (deleted). POSIX -+ treats this as a regular end-of-directory condition, so -+ do not set errno in that case, to indicate success. */ -+ if (bytes == 0 || errno == ENOENT) -+ __set_errno (saved_errno); -+ return NULL; - } -+ dirp->size = (size_t) bytes; - -- dp = (struct dirent *) &dirp->data[dirp->offset]; -- -- reclen = dp->d_reclen; -- -- dirp->offset += reclen; -- -- dirp->filepos = dp->d_off; -+ /* Reset the offset into the buffer. */ -+ dirp->offset = 0; -+ } - -- /* Skip deleted files. */ -- } while (dp->d_ino == 0); -+ dp = (struct dirent *) &dirp->data[dirp->offset]; -+ dirp->offset += dp->d_reclen; -+ dirp->filepos = dp->d_off; - - return dp; - } -diff --git a/sysdeps/unix/sysv/linux/readdir64.c b/sysdeps/unix/sysv/linux/readdir64.c -index e876d84b02..7952da5c27 100644 ---- a/sysdeps/unix/sysv/linux/readdir64.c -+++ b/sysdeps/unix/sysv/linux/readdir64.c -@@ -37,48 +37,36 @@ __readdir64 (DIR *dirp) - __libc_lock_lock (dirp->lock); - #endif - -- do -+ if (dirp->offset >= dirp->size) - { -- size_t reclen; -+ /* We've emptied out our buffer. Refill it. */ - -- if (dirp->offset >= dirp->size) -+ size_t maxread = dirp->allocation; -+ ssize_t bytes; -+ -+ bytes = __getdents64 (dirp->fd, dirp->data, maxread); -+ if (bytes <= 0) - { -- /* We've emptied out our buffer. Refill it. */ -- -- size_t maxread = dirp->allocation; -- ssize_t bytes; -- -- bytes = __getdents64 (dirp->fd, dirp->data, maxread); -- if (bytes <= 0) -- { -- /* On some systems getdents fails with ENOENT when the -- open directory has been rmdir'd already. POSIX.1 -- requires that we treat this condition like normal EOF. */ -- if (bytes < 0 && errno == ENOENT) -- bytes = 0; -- -- /* Don't modifiy errno when reaching EOF. */ -- if (bytes == 0) -- __set_errno (saved_errno); -- dp = NULL; -- break; -- } -- dirp->size = (size_t) bytes; -- -- /* Reset the offset into the buffer. */ -- dirp->offset = 0; -+ /* Linux may fail with ENOENT on some file systems if the -+ directory inode is marked as dead (deleted). POSIX -+ treats this as a regular end-of-directory condition, so -+ do not set errno in that case, to indicate success. */ -+ if (bytes == 0 || errno == ENOENT) -+ __set_errno (saved_errno); -+#if IS_IN (libc) -+ __libc_lock_unlock (dirp->lock); -+#endif -+ return NULL; - } -+ dirp->size = (size_t) bytes; - -- dp = (struct dirent64 *) &dirp->data[dirp->offset]; -- -- reclen = dp->d_reclen; -- -- dirp->offset += reclen; -- -- dirp->filepos = dp->d_off; -+ /* Reset the offset into the buffer. */ -+ dirp->offset = 0; -+ } - -- /* Skip deleted files. */ -- } while (dp->d_ino == 0); -+ dp = (struct dirent64 *) &dirp->data[dirp->offset]; -+ dirp->offset += dp->d_reclen; -+ dirp->filepos = dp->d_off; - - #if IS_IN (libc) - __libc_lock_unlock (dirp->lock); -@@ -115,48 +103,36 @@ __old_readdir64 (DIR *dirp) - __libc_lock_lock (dirp->lock); - #endif - -- do -+ if (dirp->offset >= dirp->size) - { -- size_t reclen; -+ /* We've emptied out our buffer. Refill it. */ - -- if (dirp->offset >= dirp->size) -+ size_t maxread = dirp->allocation; -+ ssize_t bytes; -+ -+ bytes = __old_getdents64 (dirp->fd, dirp->data, maxread); -+ if (bytes <= 0) - { -- /* We've emptied out our buffer. Refill it. */ -- -- size_t maxread = dirp->allocation; -- ssize_t bytes; -- -- bytes = __old_getdents64 (dirp->fd, dirp->data, maxread); -- if (bytes <= 0) -- { -- /* On some systems getdents fails with ENOENT when the -- open directory has been rmdir'd already. POSIX.1 -- requires that we treat this condition like normal EOF. */ -- if (bytes < 0 && errno == ENOENT) -- bytes = 0; -- -- /* Don't modifiy errno when reaching EOF. */ -- if (bytes == 0) -- __set_errno (saved_errno); -- dp = NULL; -- break; -- } -- dirp->size = (size_t) bytes; -- -- /* Reset the offset into the buffer. */ -- dirp->offset = 0; -+ /* Linux may fail with ENOENT on some file systems if the -+ directory inode is marked as dead (deleted). POSIX -+ treats this as a regular end-of-directory condition, so -+ do not set errno in that case, to indicate success. */ -+ if (bytes == 0 || errno == ENOENT) -+ __set_errno (saved_errno); -+#if IS_IN (libc) -+ __libc_lock_unlock (dirp->lock); -+#endif -+ return NULL; - } -+ dirp->size = (size_t) bytes; - -- dp = (struct __old_dirent64 *) &dirp->data[dirp->offset]; -- -- reclen = dp->d_reclen; -- -- dirp->offset += reclen; -- -- dirp->filepos = dp->d_off; -+ /* Reset the offset into the buffer. */ -+ dirp->offset = 0; -+ } - -- /* Skip deleted files. */ -- } while (dp->d_ino == 0); -+ dp = (struct __old_dirent64 *) &dirp->data[dirp->offset]; -+ dirp->offset += dp->d_reclen; -+ dirp->filepos = dp->d_off; - - #if IS_IN (libc) - __libc_lock_unlock (dirp->lock); --- -2.23.0 - diff --git a/Linux-Fix-enum-fsconfig_command-detection-in-sys-mou.patch b/Linux-Fix-enum-fsconfig_command-detection-in-sys-mou.patch deleted file mode 100644 index 4f7dfaa4ab35b5a39c91d4e2f2eb6368f8c585d8..0000000000000000000000000000000000000000 --- a/Linux-Fix-enum-fsconfig_command-detection-in-sys-mou.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 2955ef4b7c9b56fcd7abfeddef7ee83c60abff98 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Tue, 16 Aug 2022 09:25:23 +0200 -Subject: [PATCH] Linux: Fix enum fsconfig_command detection in - -The #ifdef FSOPEN_CLOEXEC check did not work because the macro -was always defined in this header prior to the check, so that -the contents did not matter. - -Fixes commit 774058d72942249f71d74e7f2b639f77184160a6 -("linux: Fix sys/mount.h usage with kernel headers"). ---- - sysdeps/unix/sysv/linux/sys/mount.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h -index 2e3fd6a7fe6..19841d07385 100644 ---- a/sysdeps/unix/sysv/linux/sys/mount.h -+++ b/sysdeps/unix/sysv/linux/sys/mount.h -@@ -188,9 +188,6 @@ enum - }; - - --/* fsopen flags. */ --#define FSOPEN_CLOEXEC 0x00000001 -- - /* fsmount flags. */ - #define FSMOUNT_CLOEXEC 0x00000001 - -@@ -261,6 +258,9 @@ enum fsconfig_command - }; - #endif - -+/* fsopen flags. */ -+#define FSOPEN_CLOEXEC 0x00000001 -+ - /* open_tree flags. */ - #define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */ - #define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */ --- -2.23.0.windows.1 - diff --git a/Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch b/Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch deleted file mode 100644 index bb331718810176dd2f4fb24f7c07e3a460848cb7..0000000000000000000000000000000000000000 --- a/Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich -Date: Tue, 13 Sep 2022 13:39:13 -0400 -Subject: [PATCH] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 - [BZ# 29564] - -make-4.4 will add long flags to MAKEFLAGS variable: - - * WARNING: Backward-incompatibility! - Previously only simple (one-letter) options were added to the MAKEFLAGS - variable that was visible while parsing makefiles. Now, all options - are available in MAKEFLAGS. - -This causes locale builds to fail when long options are used: - - $ make --shuffle - ... - make -C localedata install-locales - make: invalid shuffle mode: '1662724426r' - -The change fixes it by passing eash option via whitespace and dashes. -That way option is appended to both single-word form and whitespace -separated form. - -While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering -out --long-options. Otherwise options like --shuffle flag enable silent -mode unintentionally. $(silent-make) variable consolidates the checks. - -Resolves: BZ# 29564 - -CC: Paul Smith -CC: Siddhesh Poyarekar -Signed-off-by: Sergei Trofimovich -Reviewed-by: Siddhesh Poyarekar ---- - Makeconfig | 18 +++++++++++++++++- - Makerules | 4 ++-- - elf/rtld-Rules | 2 +- - 3 files changed, 20 insertions(+), 4 deletions(-) - -diff --git a/Makeconfig b/Makeconfig -index f8164a0025..842f49eb58 100644 ---- a/Makeconfig -+++ b/Makeconfig -@@ -43,6 +43,22 @@ else - $(error objdir must be defined by the build-directory Makefile) - endif - -+# Did we request 'make -s' run? "yes" or "no". -+# Starting from make-4.4 MAKEFLAGS now contains long -+# options like '--shuffle'. To detect presence of 's' -+# we pick first word with short options. Long options -+# are guaranteed to come after whitespace. We use '-' -+# prefix to always have a word before long options -+# even if no short options were passed. -+# Typical MAKEFLAGS values to watch for: -+# "rs --shuffle=42" (silent) -+# " --shuffle" (not silent) -+ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),) -+silent-make := no -+else -+silent-make := yes -+endif -+ - # Root of the sysdeps tree. - sysdep_dir := $(..)sysdeps - export sysdep_dir := $(sysdep_dir) -@@ -917,7 +933,7 @@ endif - # umpteen zillion filenames along with it (we use `...' instead) - # but we don't want this echoing done when the user has said - # he doesn't want to see commands echoed by using -s. --ifneq "$(findstring s,$(MAKEFLAGS))" "" # if -s -+ifeq ($(silent-make),yes) # if -s - +cmdecho := echo >/dev/null - else # not -s - +cmdecho := echo -diff --git a/Makerules b/Makerules -index d1e139d03c..09c0cf8357 100644 ---- a/Makerules -+++ b/Makerules -@@ -794,7 +794,7 @@ endif - # Maximize efficiency by minimizing the number of rules. - .SUFFIXES: # Clear the suffix list. We don't use suffix rules. - # Don't define any builtin rules. --MAKEFLAGS := $(MAKEFLAGS)r -+MAKEFLAGS := $(MAKEFLAGS) -r - - # Generic rule for making directories. - %/: -@@ -811,7 +811,7 @@ MAKEFLAGS := $(MAKEFLAGS)r - .PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c)) - - # Use the verbose option of ar and tar when not running silently. --ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s -+ifeq ($(silent-make),no) # if not -s - verbose := v - else # -s - verbose := -diff --git a/elf/rtld-Rules b/elf/rtld-Rules -index ca00dd1fe2..3c5e273f2b 100644 ---- a/elf/rtld-Rules -+++ b/elf/rtld-Rules -@@ -52,7 +52,7 @@ $(objpfx)rtld-libc.a: $(foreach dir,$(rtld-subdirs),\ - mv -f $@T $@ - - # Use the verbose option of ar and tar when not running silently. --ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s -+ifeq ($(silent-make),no) # if not -s - verbose := v - else # -s - verbose := --- -2.33.0 - diff --git a/elf-Restore-ldconfig-libc6-implicit-soname-logic-BZ-.patch b/elf-Restore-ldconfig-libc6-implicit-soname-logic-BZ-.patch deleted file mode 100644 index 77da73c64de853d2cc939e2aae88ed58aa8568bd..0000000000000000000000000000000000000000 --- a/elf-Restore-ldconfig-libc6-implicit-soname-logic-BZ-.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 1b0ea8c5d886fedabd611a569b5ec58a6f5153e6 Mon Sep 17 00:00:00 2001 -From: Joan Bruguera -Date: Sat, 18 Feb 2023 21:52:15 +0000 -Subject: [PATCH] elf: Restore ldconfig libc6 implicit soname logic [BZ #30125] - -While cleaning up old libc version support, the deprecated libc4 code was -accidentally kept in `implicit_soname`, instead of the libc6 code. - -This causes additional symlinks to be created by `ldconfig` for libraries -without a soname, e.g. a library `libsomething.123.456.789` without a soname -will create a `libsomething.123` -> `libsomething.123.456.789` symlink. - -As the libc6 version of the `implicit_soname` code is a trivial `xstrdup`, -just inline it and remove `implicit_soname` altogether. - -Some further simplification looks possible (e.g. the call to `create_links` -looks like a no-op if `soname == NULL`, other than the verbose printfs), but -logic is kept as-is for now. - -Fixes: BZ #30125 -Fixes: 8ee878592c4a ("Assume only FLAG_ELF_LIBC6 suport") -Signed-off-by: Joan Bruguera - -Reviewed-by: Adhemerval Zanella ---- -Rebased-by: laokz ---- - elf/Makefile | 14 ++++++ - elf/ldconfig.c | 4 +- - elf/readlib.c | 19 -------- - elf/tst-ldconfig-soname-lib-with-soname.c | 1 + - elf/tst-ldconfig-soname-lib-without-soname.c | 1 + - elf/tst-ldconfig-soname.sh | 49 ++++++++++++++++++++ - sysdeps/generic/ldconfig.h | 2 - - 7 files changed, 67 insertions(+), 23 deletions(-) - create mode 100644 elf/tst-ldconfig-soname-lib-with-soname.c - create mode 100644 elf/tst-ldconfig-soname-lib-without-soname.c - create mode 100644 elf/tst-ldconfig-soname.sh - -diff --git a/elf/Makefile b/elf/Makefile -index 2fc6391183..0d19964d42 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -627,6 +627,7 @@ ifeq ($(run-built-tests),yes) - tests-special += \ - $(objpfx)noload-mem.out \ - $(objpfx)tst-ldconfig-X.out \ -+ $(objpfx)tst-ldconfig-soname.out \ - $(objpfx)tst-leaks1-mem.out \ - $(objpfx)tst-rtld-help.out \ - # tests-special -@@ -859,6 +860,8 @@ modules-names += \ - tst-initorderb2 \ - tst-latepthreadmod \ - tst-ldconfig-ld-mod \ -+ tst-ldconfig-soname-lib-with-soname \ -+ tst-ldconfig-soname-lib-without-soname \ - tst-main1mod \ - tst-nodelete2mod \ - tst-nodelete-dlclose-dso \ -@@ -2402,6 +2405,17 @@ $(objpfx)tst-ldconfig-p.out : tst-ldconfig-p.sh $(objpfx)ldconfig - '$(run-program-env)' > $@; \ - $(evaluate-test) - -+LDFLAGS-tst-ldconfig-soname-lib-with-soname.so = \ -+ -Wl,-soname,libtst-ldconfig-soname-lib-with-soname.so.1 -+ -+$(objpfx)tst-ldconfig-soname.out : tst-ldconfig-soname.sh \ -+ $(objpfx)ldconfig \ -+ $(objpfx)tst-ldconfig-soname-lib-with-soname.so \ -+ $(objpfx)tst-ldconfig-soname-lib-without-soname.so -+ $(SHELL) $< '$(common-objpfx)' '$(test-wrapper-env)' \ -+ '$(run-program-env)' > $@; \ -+ $(evaluate-test) -+ - # Test static linking of all the libraries we can possibly link - # together. Note that in some configurations this may be less than the - # complete list of libraries we build but we try to maxmimize this list. -diff --git a/elf/ldconfig.c b/elf/ldconfig.c -index 3f1b30c570..2fc45ad825 100644 ---- a/elf/ldconfig.c -+++ b/elf/ldconfig.c -@@ -616,7 +616,7 @@ manual_link (char *library) - goto out; - } - if (soname == NULL) -- soname = implicit_soname (libname, flag); -+ soname = xstrdup (libname); - create_links (real_path, path, libname, soname); - free (soname); - out: -@@ -849,7 +849,7 @@ search_dir (const struct dir_entry *entry) - } - - if (soname == NULL) -- soname = implicit_soname (direntry->d_name, flag); -+ soname = xstrdup (direntry->d_name); - - /* A link may just point to itself. */ - if (is_link) -diff --git a/elf/readlib.c b/elf/readlib.c -index c5c3591eef..bc13d9acc6 100644 ---- a/elf/readlib.c -+++ b/elf/readlib.c -@@ -166,24 +166,5 @@ process_file (const char *real_file_name, const char *file_name, - return ret; - } - --/* Returns made up soname if lib doesn't have explicit DT_SONAME. */ -- --char * --implicit_soname (const char *lib, int flag) --{ -- char *soname = xstrdup (lib); -- -- /* Aout files don't have a soname, just return the name -- including the major number. */ -- char *major = strstr (soname, ".so."); -- if (major) -- { -- char *dot = strstr (major + 4, "."); -- if (dot) -- *dot = '\0'; -- } -- return soname; --} -- - /* Get architecture specific version of process_elf_file. */ - #include -diff --git a/elf/tst-ldconfig-soname-lib-with-soname.c b/elf/tst-ldconfig-soname-lib-with-soname.c -new file mode 100644 -index 0000000000..d1ab56ad58 ---- /dev/null -+++ b/elf/tst-ldconfig-soname-lib-with-soname.c -@@ -0,0 +1 @@ -+/* This file intentionally left blank */ -diff --git a/elf/tst-ldconfig-soname-lib-without-soname.c b/elf/tst-ldconfig-soname-lib-without-soname.c -new file mode 100644 -index 0000000000..d1ab56ad58 ---- /dev/null -+++ b/elf/tst-ldconfig-soname-lib-without-soname.c -@@ -0,0 +1 @@ -+/* This file intentionally left blank */ -diff --git a/elf/tst-ldconfig-soname.sh b/elf/tst-ldconfig-soname.sh -new file mode 100644 -index 0000000000..406f526dbf ---- /dev/null -+++ b/elf/tst-ldconfig-soname.sh -@@ -0,0 +1,49 @@ -+#!/bin/sh -+# Test that ldconfig creates symlinks according to the library's soname -+# (and in particular, does not create symlinks for libraries without a soname) -+# Copyright (C) 2000-2023 Free Software Foundation, Inc. -+# Copyright The GNU Toolchain Authors. -+# This file is part of the GNU C Library. -+ -+# The GNU C Library is free software; you can redistribute it and/or -+# modify it under the terms of the GNU Lesser General Public -+# License as published by the Free Software Foundation; either -+# version 2.1 of the License, or (at your option) any later version. -+ -+# The GNU C Library is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# Lesser General Public License for more details. -+ -+# You should have received a copy of the GNU Lesser General Public -+# License along with the GNU C Library; if not, see -+# . -+ -+set -ex -+ -+common_objpfx=$1 -+test_wrapper_env=$2 -+run_program_env=$3 -+ -+testroot="${common_objpfx}elf/bug30125-test-directory" -+cleanup () { -+ rm -rf "$testroot" -+} -+trap cleanup 0 -+ -+rm -rf "$testroot" -+mkdir -p $testroot/lib -+cp "${common_objpfx}elf/tst-ldconfig-soname-lib-with-soname.so" \ -+ $testroot/lib/libtst-ldconfig-soname-lib-with-soname.so.1.2.3 -+cp "${common_objpfx}elf/tst-ldconfig-soname-lib-without-soname.so" \ -+ $testroot/lib/libtst-ldconfig-soname-lib-without-soname.so.1.2.3 -+ -+${test_wrapper_env} \ -+${run_program_env} \ -+${common_objpfx}elf/ldconfig -vn $testroot/lib -+ -+LINKS=$(cd $testroot/lib && find . -type l) -+if [ "$LINKS" != "./libtst-ldconfig-soname-lib-with-soname.so.1" ]; then -+ echo "error: $0 - extra symlinks found" -+ exit 1 -+fi -diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h -index 0e1a9a9515..e9e9e19d0f 100644 ---- a/sysdeps/generic/ldconfig.h -+++ b/sysdeps/generic/ldconfig.h -@@ -90,8 +90,6 @@ extern int process_file (const char *real_file_name, const char *file_name, - const char *lib, int *flag, unsigned int *isa_level, - char **soname, int is_link, struct stat *stat_buf); - --extern char *implicit_soname (const char *lib, int flag); -- - /* Declared in readelflib.c. */ - extern int process_elf_file (const char *file_name, const char *lib, - int *flag, unsigned int *isa_level, char **soname, --- -2.39.2 - diff --git a/glibc-2.36.tar.xz b/glibc-2.38.tar.xz similarity index 54% rename from glibc-2.36.tar.xz rename to glibc-2.38.tar.xz index a9b2ee2beab440e23fbce7d9ec0daf392b20c6b6..455b687a1881baa21c1cb0054778cd687337a07d 100644 Binary files a/glibc-2.36.tar.xz and b/glibc-2.38.tar.xz differ diff --git a/glibc.spec b/glibc.spec index f3aee523298d9c87a7e8582ef805afd3d9d64423..b6d9c1e40574a4d43fcec968e6bce96bae174a65 100644 --- a/glibc.spec +++ b/glibc.spec @@ -64,8 +64,8 @@ # glibc - The GNU C Library (glibc) core package. ############################################################################## Name: glibc -Version: 2.36 -Release: 18 +Version: 2.38 +Release: 1 Summary: The GNU libc libraries License: %{all_license} URL: http://www.gnu.org/software/glibc/ @@ -84,18 +84,6 @@ Source8: testsuite_whitelist %endif Patch0: glibc-1070416.patch -Patch1: linux-Mimic-kernel-defition-for-BLOCK_SIZE.patch -Patch2: linux-Fix-sys-mount.h-usage-with-kernel-headers.patch -Patch3: Linux-Fix-enum-fsconfig_command-detection-in-sys-mou.patch -Patch4: syslog-Fix-large-messages-BZ-29536.patch -Patch5: Linux-Do-not-skip-d_ino-0-entries-in-readdir-readdir.patch -Patch6: 0001-gconv-Use-64-bit-interfaces-in-gconv_parseconfdir-bu.patch -Patch7: 0001-syslog-Remove-extra-whitespace-between-timestamp-and.patch -Patch8: Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch -Patch9: gmon-Fix-allocated-buffer-overflow-bug-29444.patch -Patch10: stdlib-strfrom-Add-copysign-to-fix-NAN-issue-on-risc.patch -Patch11: Assume-only-FLAG_ELF_LIBC6-suport.patch -Patch12: elf-Restore-ldconfig-libc6-implicit-soname-logic-BZ-.patch Patch9000: turn-default-value-of-x86_rep_stosb_threshold_form_2K_to_1M.patch Patch9001: locale-delete-no-hard-link-to-avoid-all_language-pac.patch @@ -1274,6 +1262,9 @@ fi %endif %changelog +* Tue Jul 25 2023 chenhaixiang - 2.38-1 +- Update to glibc-2.38 + * Tue Jul 11 2023 jiangyingxin - 2.36-18 - Optimizing __random for single-threaded scenarios diff --git a/gmon-Fix-allocated-buffer-overflow-bug-29444.patch b/gmon-Fix-allocated-buffer-overflow-bug-29444.patch deleted file mode 100644 index d4c62214e4102d6cb4c5b328e4a824971e31c22a..0000000000000000000000000000000000000000 --- a/gmon-Fix-allocated-buffer-overflow-bug-29444.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 801af9fafd4689337ebf27260aa115335a0cb2bc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= - =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= -Date: Sat, 4 Feb 2023 14:41:38 +0300 -Subject: [PATCH] gmon: Fix allocated buffer overflow (bug 29444) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The `__monstartup()` allocates a buffer used to store all the data -accumulated by the monitor. - -The size of this buffer depends on the size of the internal structures -used and the address range for which the monitor is activated, as well -as on the maximum density of call instructions and/or callable functions -that could be potentially on a segment of executable code. - -In particular a hash table of arcs is placed at the end of this buffer. -The size of this hash table is calculated in bytes as - p->fromssize = p->textsize / HASHFRACTION; - -but actually should be - p->fromssize = ROUNDUP(p->textsize / HASHFRACTION, sizeof(*p->froms)); - -This results in writing beyond the end of the allocated buffer when an -added arc corresponds to a call near from the end of the monitored -address range, since `_mcount()` check the incoming caller address for -monitored range but not the intermediate result hash-like index that -uses to write into the table. - -It should be noted that when the results are output to `gmon.out`, the -table is read to the last element calculated from the allocated size in -bytes, so the arcs stored outside the buffer boundary did not fall into -`gprof` for analysis. Thus this "feature" help me to found this bug -during working with https://sourceware.org/bugzilla/show_bug.cgi?id=29438 - -Just in case, I will explicitly note that the problem breaks the -`make test t=gmon/tst-gmon-dso` added for Bug 29438. -There, the arc of the `f3()` call disappears from the output, since in -the DSO case, the call to `f3` is located close to the end of the -monitored range. - -Signed-off-by: Леонид Юрьев (Leonid Yuriev) - -Another minor error seems a related typo in the calculation of -`kcountsize`, but since kcounts are smaller than froms, this is -actually to align the p->froms data. - -Co-authored-by: DJ Delorie -Reviewed-by: Carlos O'Donell ---- - gmon/gmon.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/gmon/gmon.c b/gmon/gmon.c -index dee64803ad..bf76358d5b 100644 ---- a/gmon/gmon.c -+++ b/gmon/gmon.c -@@ -132,6 +132,8 @@ __monstartup (u_long lowpc, u_long highpc) - p->lowpc = ROUNDDOWN(lowpc, HISTFRACTION * sizeof(HISTCOUNTER)); - p->highpc = ROUNDUP(highpc, HISTFRACTION * sizeof(HISTCOUNTER)); - p->textsize = p->highpc - p->lowpc; -+ /* This looks like a typo, but it's here to align the p->froms -+ section. */ - p->kcountsize = ROUNDUP(p->textsize / HISTFRACTION, sizeof(*p->froms)); - p->hashfraction = HASHFRACTION; - p->log_hashfraction = -1; -@@ -142,7 +144,7 @@ __monstartup (u_long lowpc, u_long highpc) - instead of integer division. Precompute shift amount. */ - p->log_hashfraction = ffs(p->hashfraction * sizeof(*p->froms)) - 1; - } -- p->fromssize = p->textsize / HASHFRACTION; -+ p->fromssize = ROUNDUP(p->textsize / HASHFRACTION, sizeof(*p->froms)); - p->tolimit = p->textsize * ARCDENSITY / 100; - if (p->tolimit < MINARCS) - p->tolimit = MINARCS; --- -2.33.0 - diff --git a/linux-Fix-sys-mount.h-usage-with-kernel-headers.patch b/linux-Fix-sys-mount.h-usage-with-kernel-headers.patch deleted file mode 100644 index 9bad1776b4c6ae7b3d982690158d887b2395d9dc..0000000000000000000000000000000000000000 --- a/linux-Fix-sys-mount.h-usage-with-kernel-headers.patch +++ /dev/null @@ -1,336 +0,0 @@ -From 774058d72942249f71d74e7f2b639f77184160a6 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Wed, 10 Aug 2022 14:24:47 -0300 -Subject: [PATCH] linux: Fix sys/mount.h usage with kernel headers - -Now that kernel exports linux/mount.h and includes it on linux/fs.h, -its definitions might clash with glibc exports sys/mount.h. To avoid -the need to rearrange the Linux header to be always after glibc one, -the glibc sys/mount.h is changed to: - - 1. Undefine the macros also used as enum constants. This covers prior - inclusion of (for instance MS_RDONLY). - - 2. Include based on the usual __has_include check - (needs to use __has_include ("linux/mount.h") to paper over GCC - bugs. - - 3. Define enum fsconfig_command only if FSOPEN_CLOEXEC is not defined. - (FSOPEN_CLOEXEC should be a very close proxy.) - - 4. Define struct mount_attr if MOUNT_ATTR_SIZE_VER0 is not defined. - (Added in the same commit on the Linux side.) - -This patch also adds some tests to check if including linux/fs.h and -linux/mount.h after and before sys/mount.h does work. - -Checked on x86_64-linux-gnu. - -Reviewed-by: Florian Weimer ---- - sysdeps/unix/sysv/linux/Makefile | 8 +++ - sysdeps/unix/sysv/linux/sys/mount.h | 71 +++++++++++++++++--- - sysdeps/unix/sysv/linux/tst-mount-compile.py | 66 ++++++++++++++++++ - 3 files changed, 137 insertions(+), 8 deletions(-) - create mode 100755 sysdeps/unix/sysv/linux/tst-mount-compile.py - -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index 3f31c19e4a6..60e4cb15211 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -265,6 +265,14 @@ $(objpfx)tst-mount-consts.out: ../sysdeps/unix/sysv/linux/tst-mount-consts.py - < /dev/null > $@ 2>&1; $(evaluate-test) - $(objpfx)tst-mount-consts.out: $(sysdeps-linux-python-deps) - -+tests-special += $(objpfx)tst-mount-compile.out -+$(objpfx)tst-mount-compile.out: ../sysdeps/unix/sysv/linux/tst-mount-compile.py -+ $(sysdeps-linux-python) \ -+ ../sysdeps/unix/sysv/linux/tst-mount-compile.py \ -+ $(sysdeps-linux-python-cc) \ -+ < /dev/null > $@ 2>&1; $(evaluate-test) -+$(objpfx)tst-mount-compile.out: $(sysdeps-linux-python-deps) -+ - tst-rseq-disable-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0 - - endif # $(subdir) == misc -diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h -index df6b0dbb425..2e3fd6a7fe6 100644 ---- a/sysdeps/unix/sysv/linux/sys/mount.h -+++ b/sysdeps/unix/sysv/linux/sys/mount.h -@@ -27,6 +27,13 @@ - #include - #include - -+#ifdef __has_include -+# if __has_include ("linux/mount.h") -+# include "linux/mount.h" -+# endif -+#endif -+ -+ - #define BLOCK_SIZE_BITS 10 - #define BLOCK_SIZE (1<. -+ -+import argparse -+import sys -+ -+import glibcextract -+ -+ -+def main(): -+ """The main entry point.""" -+ parser = argparse.ArgumentParser( -+ description='Check if glibc provided sys/mount.h can be ' -+ ' used along related kernel headers.') -+ parser.add_argument('--cc', metavar='CC', -+ help='C compiler (including options) to use') -+ args = parser.parse_args() -+ -+ if glibcextract.compile_c_snippet( -+ '#include ', -+ args.cc).returncode != 0: -+ sys.exit (77) -+ -+ def check(testname, snippet): -+ # Add -Werror to catch macro redefinitions and _ISOMAC to avoid -+ # internal glibc definitions. -+ r = glibcextract.compile_c_snippet(snippet, args.cc, -+ '-Werror -D_ISOMAC') -+ if r.returncode != 0: -+ print('error: test {}:\n{}'.format(testname, r.output.decode())) -+ return r.returncode -+ -+ status = max( -+ check("sys/mount.h + linux/mount.h", -+ "#include \n" -+ "#include "), -+ check("sys/mount.h + linux/fs.h", -+ "#include \n" -+ "#include "), -+ check("linux/mount.h + sys/mount.h", -+ "#include \n" -+ "#include "), -+ check("linux/fs.h + sys/mount.h", -+ "#include \n" -+ "#include ")) -+ sys.exit(status) -+ -+if __name__ == '__main__': -+ main() --- -2.23.0.windows.1 - diff --git a/linux-Mimic-kernel-defition-for-BLOCK_SIZE.patch b/linux-Mimic-kernel-defition-for-BLOCK_SIZE.patch deleted file mode 100644 index 90247958a827e9890316f33103caebc130d3fbc6..0000000000000000000000000000000000000000 --- a/linux-Mimic-kernel-defition-for-BLOCK_SIZE.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c68b6044bc7945716431f1adc091b17c39b80a06 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Wed, 10 Aug 2022 14:24:45 -0300 -Subject: [PATCH] linux: Mimic kernel defition for BLOCK_SIZE - -To avoid possible warnings if the kernel header is included before -sys/mount.h. - -Reviewed-by: Florian Weimer ---- - sysdeps/unix/sysv/linux/sys/mount.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h -index f965986ba87..df6b0dbb425 100644 ---- a/sysdeps/unix/sysv/linux/sys/mount.h -+++ b/sysdeps/unix/sysv/linux/sys/mount.h -@@ -27,8 +27,8 @@ - #include - #include - --#define BLOCK_SIZE 1024 - #define BLOCK_SIZE_BITS 10 -+#define BLOCK_SIZE (1< -Date: Fri, 21 Oct 2022 22:54:50 +0800 -Subject: [PATCH] stdlib/strfrom: Add copysign to fix NAN issue on riscv (BZ - #29501) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -According to the specification of ISO/IEC TS 18661-1:2014, - -The strfromd, strfromf, and strfroml functions are equivalent to -snprintf(s, n, format, fp) (7.21.6.5), except the format string contains only -the character %, an optional precision that does not contain an asterisk *, and -one of the conversion specifiers a, A, e, E, f, F, g, or G, which applies to -the type (double, float, or long double) indicated by the function suffix -(rather than by a length modifier). Use of these functions with any other 20 -format string results in undefined behavior. - -strfromf will convert the arguement with type float to double first. - -According to the latest version of IEEE754 which is published in 2019, - -Conversion of a quiet NaN from a narrower format to a wider format in the same -radix, and then back to the same narrower format, should not change the quiet -NaN payload in any way except to make it canonical. - -When either an input or result is a NaN, this standard does not interpret the -sign of a NaN. However, operations on bit strings—copy, negate, abs, -copySign—specify the sign bit of a NaN result, sometimes based upon the sign -bit of a NaN operand. The logical predicates totalOrder and isSignMinus are -also affected by the sign bit of a NaN operand. For all other operations, this -standard does not specify the sign bit of a NaN result, even when there is only -one input NaN, or when the NaN is produced from an invalid operation. - -converting NAN or -NAN with type float to double doesn't need to keep -the signbit. As a result, this test case isn't mandatory. - -The problem is that according to RISC-V ISA manual in chapter 11.3 of -riscv-isa-20191213, - -Except when otherwise stated, if the result of a floating-point operation is -NaN, it is the canonical NaN. The canonical NaN has a positive sign and all -significand bits clear except the MSB, a.k.a. the quiet bit. For -single-precision floating-point, this corresponds to the pattern 0x7fc00000. - -which means that conversion -NAN from float to double won't keep the signbit. - -Since glibc ought to be consistent here between types and architectures, this -patch adds copysign to fix this problem if the string is NAN. This patch -adds two different functions under sysdeps directory to work around the -issue. - -This patch has been tested on x86_64 and riscv64. - -Resolves: BZ #29501 - -v2: Change from macros to different inline functions. -v3: Add unlikely check to isnan. -v4: Fix wrong commit message header. -v5: Fix style: add space before parentheses. -v6: Add copyright. -Signed-off-by: Letu Ren -Reviewed-by: Adhemerval Zanella ---- - stdlib/strfrom-skeleton.c | 3 +- - .../generic/fix-float-double-convert-nan.h | 31 ++++++++++++++++ - .../riscv/rvd/fix-float-double-convert-nan.h | 37 +++++++++++++++++++ - 3 files changed, 70 insertions(+), 1 deletion(-) - create mode 100644 sysdeps/generic/fix-float-double-convert-nan.h - create mode 100644 sysdeps/riscv/rvd/fix-float-double-convert-nan.h - -diff --git a/stdlib/strfrom-skeleton.c b/stdlib/strfrom-skeleton.c -index 1fba04bf6a..36e9adcad5 100644 ---- a/stdlib/strfrom-skeleton.c -+++ b/stdlib/strfrom-skeleton.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - #define UCHAR_T char - #define L_(Str) Str -@@ -61,7 +62,7 @@ STRFROM (char *dest, size_t size, const char *format, FLOAT f) - because __printf_fp and __printf_fphex only accept double and long double - as the floating-point argument. */ - if (__builtin_types_compatible_p (FLOAT, float)) -- fpnum.flt = f; -+ fpnum.flt = keep_sign_conversion (f); - else - fpnum.value = f; - -diff --git a/sysdeps/generic/fix-float-double-convert-nan.h b/sysdeps/generic/fix-float-double-convert-nan.h -new file mode 100644 -index 0000000000..66692262fc ---- /dev/null -+++ b/sysdeps/generic/fix-float-double-convert-nan.h -@@ -0,0 +1,31 @@ -+/* Fix for conversion of float NAN to double. Generic version. -+ Copyright (C) 2022 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library. If not, see -+ . */ -+ -+#ifndef FIX_FLOAT_DOUBLE_CONVERT_NAN_H -+#define FIX_FLOAT_DOUBLE_CONVERT_NAN_H -+ -+/* This function aims to work around conversions of float -NAN -+ to double returning NAN instead of the correct -NAN in some -+ architectures. */ -+static inline double __attribute__ ((always_inline)) -+keep_sign_conversion (float flt) -+{ -+ return flt; -+} -+ -+#endif -diff --git a/sysdeps/riscv/rvd/fix-float-double-convert-nan.h b/sysdeps/riscv/rvd/fix-float-double-convert-nan.h -new file mode 100644 -index 0000000000..cab003f3c1 ---- /dev/null -+++ b/sysdeps/riscv/rvd/fix-float-double-convert-nan.h -@@ -0,0 +1,37 @@ -+/* Fix for conversion of float NAN to double. RISC-V version.. -+ Copyright (C) 2022 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library. If not, see -+ . */ -+ -+#ifndef FIX_FLOAT_DOUBLE_CONVERT_NAN_H -+#define FIX_FLOAT_DOUBLE_CONVERT_NAN_H -+ -+#include -+ -+/* RISC-V rvd instructions do not preserve the signbit of NAN -+ when converting from float to double. */ -+static inline double -+keep_sign_conversion (float flt) -+{ -+ if (__glibc_unlikely (isnan (flt))) -+ { -+ float x = copysignf (1.f, flt); -+ return copysign ((double) flt, (double) x); -+ } -+ return flt; -+} -+ -+#endif --- -2.39.2 - diff --git a/syslog-Fix-large-messages-BZ-29536.patch b/syslog-Fix-large-messages-BZ-29536.patch deleted file mode 100644 index 906aedfa6f9cd40fe181d1990a8d2383449c784d..0000000000000000000000000000000000000000 --- a/syslog-Fix-large-messages-BZ-29536.patch +++ /dev/null @@ -1,335 +0,0 @@ -From 52a5be0df411ef3ff45c10c7c308cb92993d15b1 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Sun, 28 Aug 2022 16:52:53 -0300 -Subject: [PATCH] syslog: Fix large messages (BZ#29536) - -The a583b6add407c17cd change did not handle large messages that -would require a heap allocation correctly, where the message itself -is not take in consideration. - -This patch fixes it and extend the tst-syslog to check for large -messages as well. - -Checked on x86_64-linux-gnu. - -Reviewed-by: Siddhesh Poyarekar ---- - misc/syslog.c | 18 ++++--- - misc/tst-syslog.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++-------- - 2 files changed, 142 insertions(+), 28 deletions(-) - -diff --git a/misc/syslog.c b/misc/syslog.c -index 554089b..b88f66c 100644 ---- a/misc/syslog.c -+++ b/misc/syslog.c -@@ -193,28 +193,32 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, - int vl = __vsnprintf_internal (bufs + l, sizeof bufs - l, fmt, apc, - mode_flags); - if (0 <= vl && vl < sizeof bufs - l) -- { -- buf = bufs; -- bufsize = l + vl; -- } -+ buf = bufs; -+ bufsize = l + vl; - - va_end (apc); - } - - if (buf == NULL) - { -- buf = malloc (l * sizeof (char)); -+ buf = malloc ((bufsize + 1) * sizeof (char)); - if (buf != NULL) - { - /* Tell the cancellation handler to free this buffer. */ - clarg.buf = buf; - - if (has_ts) -- __snprintf (bufs, sizeof bufs, -+ __snprintf (buf, l + 1, - SYSLOG_HEADER (pri, timestamp, &msgoff, pid)); - else -- __snprintf (bufs, sizeof bufs, -+ __snprintf (buf, l + 1, - SYSLOG_HEADER_WITHOUT_TS (pri, &msgoff)); -+ -+ va_list apc; -+ va_copy (apc, ap); -+ __vsnprintf_internal (buf + l, bufsize - l + 1, fmt, apc, -+ mode_flags); -+ va_end (apc); - } - else - { -diff --git a/misc/tst-syslog.c b/misc/tst-syslog.c -index e550d15..1d332ec 100644 ---- a/misc/tst-syslog.c -+++ b/misc/tst-syslog.c -@@ -68,21 +68,19 @@ static const int priorities[] = - LOG_DEBUG - }; - --enum -- { -- ident_length = 64, -- msg_length = 64 -- }; -+#define IDENT_LENGTH 64 -+#define MSG_LENGTH 1024 - - #define SYSLOG_MSG_BASE "syslog_message" - #define OPENLOG_IDENT "openlog_ident" -+static char large_message[MSG_LENGTH]; - - struct msg_t - { - int priority; - int facility; -- char ident[ident_length]; -- char msg[msg_length]; -+ char ident[IDENT_LENGTH]; -+ char msg[MSG_LENGTH]; - pid_t pid; - }; - -@@ -148,6 +146,37 @@ check_syslog_message (const struct msg_t *msg, int msgnum, int options, - } - - static void -+send_syslog_large (int options) -+{ -+ int facility = LOG_USER; -+ int priority = LOG_INFO; -+ -+ syslog (facility | priority, "%s %d %d", large_message, facility, -+ priority); -+} -+ -+static void -+send_vsyslog_large (int options) -+{ -+ int facility = LOG_USER; -+ int priority = LOG_INFO; -+ -+ call_vsyslog (facility | priority, "%s %d %d", large_message, facility, -+ priority); -+} -+ -+static bool -+check_syslog_message_large (const struct msg_t *msg, int msgnum, int options, -+ pid_t pid) -+{ -+ TEST_COMPARE (msg->facility, LOG_USER); -+ TEST_COMPARE (msg->priority, LOG_INFO); -+ TEST_COMPARE_STRING (msg->msg, large_message); -+ -+ return false; -+} -+ -+static void - send_openlog (int options) - { - /* Define a non-default IDENT and a not default facility. */ -@@ -179,6 +208,17 @@ send_openlog (int options) - closelog (); - } - -+static void -+send_openlog_large (int options) -+{ -+ /* Define a non-default IDENT and a not default facility. */ -+ openlog (OPENLOG_IDENT, options, LOG_LOCAL0); -+ -+ syslog (LOG_INFO, "%s %d %d", large_message, LOG_LOCAL0, LOG_INFO); -+ -+ closelog (); -+} -+ - static bool - check_openlog_message (const struct msg_t *msg, int msgnum, - int options, pid_t pid) -@@ -189,7 +229,7 @@ check_openlog_message (const struct msg_t *msg, int msgnum, - int expected_priority = priorities[msgnum % array_length (priorities)]; - TEST_COMPARE (msg->priority, expected_priority); - -- char expected_ident[ident_length]; -+ char expected_ident[IDENT_LENGTH]; - snprintf (expected_ident, sizeof (expected_ident), "%s%s%.0d%s:", - OPENLOG_IDENT, - options & LOG_PID ? "[" : "", -@@ -211,15 +251,38 @@ check_openlog_message (const struct msg_t *msg, int msgnum, - return true; - } - -+static bool -+check_openlog_message_large (const struct msg_t *msg, int msgnum, -+ int options, pid_t pid) -+{ -+ char expected_ident[IDENT_LENGTH]; -+ snprintf (expected_ident, sizeof (expected_ident), "%s%s%.0d%s:", -+ OPENLOG_IDENT, -+ options & LOG_PID ? "[" : "", -+ options & LOG_PID ? pid : 0, -+ options & LOG_PID ? "]" : ""); -+ -+ TEST_COMPARE_STRING (msg->ident, expected_ident); -+ TEST_COMPARE_STRING (msg->msg, large_message); -+ TEST_COMPARE (msg->priority, LOG_INFO); -+ TEST_COMPARE (msg->facility, LOG_LOCAL0); -+ -+ return false; -+} -+ - static struct msg_t - parse_syslog_msg (const char *msg) - { - struct msg_t r = { .pid = -1 }; - int number; - -+#define STRINPUT(size) XSTRINPUT(size) -+#define XSTRINPUT(size) "%" # size "s" -+ - /* The message in the form: -- <179>Apr 8 14:51:19 tst-syslog: syslog message 176 3 */ -- int n = sscanf (msg, "<%3d>%*s %*d %*d:%*d:%*d %32s %64s %*d %*d", -+ <179>Apr 8 14:51:19 tst-syslog: message 176 3 */ -+ int n = sscanf (msg, "<%3d>%*s %*d %*d:%*d:%*d " STRINPUT(IDENT_LENGTH) -+ " " STRINPUT(MSG_LENGTH) " %*d %*d", - &number, r.ident, r.msg); - TEST_COMPARE (n, 3); - -@@ -246,7 +309,7 @@ parse_syslog_console (const char *msg) - - /* The message in the form: - openlog_ident: syslog_message 128 0 */ -- int n = sscanf (msg, "%32s %64s %d %d", -+ int n = sscanf (msg, STRINPUT(IDENT_LENGTH) " " STRINPUT(MSG_LENGTH) " %d %d", - r.ident, r.msg, &facility, &priority); - TEST_COMPARE (n, 4); - -@@ -281,7 +344,7 @@ check_syslog_udp (void (*syslog_send)(int), int options, - int msgnum = 0; - while (1) - { -- char buf[512]; -+ char buf[2048]; - size_t l = xrecvfrom (server_udp, buf, sizeof (buf), 0, - (struct sockaddr *) &addr, &addrlen); - buf[l] = '\0'; -@@ -325,7 +388,7 @@ check_syslog_tcp (void (*syslog_send)(int), int options, - - int client_tcp = xaccept (server_tcp, NULL, NULL); - -- char buf[512], *rb = buf; -+ char buf[2048], *rb = buf; - size_t rbl = sizeof (buf); - size_t prl = 0; /* Track the size of the partial record. */ - int msgnum = 0; -@@ -393,20 +456,34 @@ check_syslog_console_read (FILE *fp) - } - - static void --check_syslog_console (void) -+check_syslog_console_read_large (FILE *fp) -+{ -+ char buf[2048]; -+ TEST_VERIFY (fgets (buf, sizeof (buf), fp) != NULL); -+ struct msg_t msg = parse_syslog_console (buf); -+ -+ TEST_COMPARE_STRING (msg.ident, OPENLOG_IDENT ":"); -+ TEST_COMPARE_STRING (msg.msg, large_message); -+ TEST_COMPARE (msg.priority, LOG_INFO); -+ TEST_COMPARE (msg.facility, LOG_LOCAL0); -+} -+ -+static void -+check_syslog_console (void (*syslog_send)(int), -+ void (*syslog_check)(FILE *fp)) - { - xmkfifo (_PATH_CONSOLE, 0666); - - pid_t sender_pid = xfork (); - if (sender_pid == 0) - { -- send_openlog (LOG_CONS); -+ syslog_send (LOG_CONS); - _exit (0); - } - - { - FILE *fp = xfopen (_PATH_CONSOLE, "r+"); -- check_syslog_console_read (fp); -+ syslog_check (fp); - xfclose (fp); - } - -@@ -425,16 +502,28 @@ send_openlog_callback (void *clousure) - } - - static void --check_syslog_perror (void) -+send_openlog_callback_large (void *clousure) -+{ -+ int options = *(int *) clousure; -+ send_openlog_large (options); -+} -+ -+static void -+check_syslog_perror (bool large) - { - struct support_capture_subprocess result; -- result = support_capture_subprocess (send_openlog_callback, -+ result = support_capture_subprocess (large -+ ? send_openlog_callback_large -+ : send_openlog_callback, - &(int){LOG_PERROR}); - - FILE *mfp = fmemopen (result.err.buffer, result.err.length, "r"); - if (mfp == NULL) - FAIL_EXIT1 ("fmemopen: %m"); -- check_syslog_console_read (mfp); -+ if (large) -+ check_syslog_console_read_large (mfp); -+ else -+ check_syslog_console_read (mfp); - xfclose (mfp); - - support_capture_subprocess_check (&result, "tst-openlog-child", 0, -@@ -462,10 +551,31 @@ do_test (void) - check_syslog_tcp (send_openlog, LOG_PID, check_openlog_message); - - /* Check the LOG_CONS option. */ -- check_syslog_console (); -+ check_syslog_console (send_openlog, check_syslog_console_read); - - /* Check the LOG_PERROR option. */ -- check_syslog_perror (); -+ check_syslog_perror (false); -+ -+ /* Similar tests as before, but with a large message to trigger the -+ syslog path that uses dynamically allocated memory. */ -+ memset (large_message, 'a', sizeof large_message - 1); -+ large_message[sizeof large_message - 1] = '\0'; -+ -+ check_syslog_udp (send_syslog_large, 0, check_syslog_message_large); -+ check_syslog_tcp (send_syslog_large, 0, check_syslog_message_large); -+ -+ check_syslog_udp (send_vsyslog_large, 0, check_syslog_message_large); -+ check_syslog_tcp (send_vsyslog_large, 0, check_syslog_message_large); -+ -+ check_syslog_udp (send_openlog_large, 0, check_openlog_message_large); -+ check_syslog_tcp (send_openlog_large, 0, check_openlog_message_large); -+ -+ check_syslog_udp (send_openlog_large, LOG_PID, check_openlog_message_large); -+ check_syslog_tcp (send_openlog_large, LOG_PID, check_openlog_message_large); -+ -+ check_syslog_console (send_openlog_large, check_syslog_console_read_large); -+ -+ check_syslog_perror (true); - - return 0; - } --- -1.8.3.1 - diff --git a/x86-use-total-l3cache-for-non_temporal_threshold.patch b/x86-use-total-l3cache-for-non_temporal_threshold.patch index 988b0ba107d621afec8cc1bfc8e73301818d98ef..739f3b1ecebfcf19d69d941aabcc81e787f3d19a 100644 --- a/x86-use-total-l3cache-for-non_temporal_threshold.patch +++ b/x86-use-total-l3cache-for-non_temporal_threshold.patch @@ -67,8 +67,8 @@ index e6c94dfd..c5e8deb3 100644 + non_temporal_threshold *= threads; + tunable_size = TUNABLE_GET (x86_non_temporal_threshold, long int, NULL); - /* NB: Ignore the default value 0. */ - if (tunable_size != 0) + if (tunable_size > minimum_non_temporal_threshold + && tunable_size <= maximum_non_temporal_threshold) -- 2.30.0