From 3645710e73a5a1579d25cc20c26be6f8b0dbe40e Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 12 Jul 2023 14:52:31 -0700 Subject: crash: Fix build with glibc 2.38+ Signed-off-by: Khem Raj --- .../0001-make-src-string-const-in-strlcpy.patch | 69 ++++++++++++++++++++++ meta-oe/recipes-kernel/crash/crash_8.0.2.bb | 1 + 2 files changed, 70 insertions(+) create mode 100644 meta-oe/recipes-kernel/crash/crash/0001-make-src-string-const-in-strlcpy.patch (limited to 'meta-oe/recipes-kernel') diff --git a/meta-oe/recipes-kernel/crash/crash/0001-make-src-string-const-in-strlcpy.patch b/meta-oe/recipes-kernel/crash/crash/0001-make-src-string-const-in-strlcpy.patch new file mode 100644 index 0000000000..546973e0ac --- /dev/null +++ b/meta-oe/recipes-kernel/crash/crash/0001-make-src-string-const-in-strlcpy.patch @@ -0,0 +1,69 @@ +From 4ee56105881d7bb1da1e668ac5bb47a4e0846676 Mon Sep 17 00:00:00 2001 +From: Lianbo Jiang +Date: Wed, 5 Jul 2023 10:02:59 +0800 +Subject: [PATCH] Fix compilation error due to new strlcpy function that glibc + added +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The crash-utility has its own strlcpy(), but recently the latest glibc +has also implemented the strlcpy function, which is derived from +OpenBSD. Eventually this caused the following compilation error: + + # make -j8 lzo + ... + In file included from global_data.c:18: + defs.h:5556:8: error: conflicting types for ‘strlcpy’; have ‘size_t(char *, char *, size_t)’ {aka ‘long unsigned int(char *, char *, long unsigned int)’} + 5556 | size_t strlcpy(char *, char *, size_t); + | ^~~~~~~ + In file included from memory.c:19: + defs.h:5556:8: error: conflicting types for ‘strlcpy’; have ‘size_t(char *, char *, size_t)’ {aka ‘long unsigned int(char *, char *, long unsigned int)’} + 5556 | size_t strlcpy(char *, char *, size_t); + | ^~~~~~~ + ... + +To fix the issue, let's declare the strlcpy() as a weak function and +keep the same parameter types as the glibc function has. + +Related glibc commits: +454a20c8756c ("Implement strlcpy and strlcat [BZ #178]") +d2fda60e7c40 ("manual: Manual update for strlcat, strlcpy, wcslcat, wclscpy") +388ae538ddcb ("hurd: Add strlcpy, strlcat, wcslcpy, wcslcat to libc.abilist") + +Upstream-Status: Backport [https://github.com/kraj/crash/commit/4ee56105881d7bb1da1e668ac5bb47a4e0846676] +Signed-off-by: Lianbo Jiang +--- + defs.h | 2 +- + tools.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/defs.h b/defs.h +index 8f7d1fa..26afe23 100644 +--- a/defs.h ++++ b/defs.h +@@ -5553,7 +5553,7 @@ uint32_t swap32(uint32_t, int); + uint64_t swap64(uint64_t, int); + ulong *get_cpumask_buf(void); + int make_cpumask(char *, ulong *, int, int *); +-size_t strlcpy(char *, char *, size_t); ++size_t strlcpy(char *, const char *, size_t) __attribute__ ((__weak__)); + struct rb_node *rb_first(struct rb_root *); + struct rb_node *rb_parent(struct rb_node *, struct rb_node *); + struct rb_node *rb_right(struct rb_node *, struct rb_node *); +diff --git a/tools.c b/tools.c +index 392a797..0f2db10 100644 +--- a/tools.c ++++ b/tools.c +@@ -6795,7 +6795,7 @@ make_cpumask_error: + * always be NULL-terminated. + */ + size_t +-strlcpy(char *dest, char *src, size_t size) ++strlcpy(char *dest, const char *src, size_t size) + { + size_t ret = strlen(src); + +-- +2.41.0 + diff --git a/meta-oe/recipes-kernel/crash/crash_8.0.2.bb b/meta-oe/recipes-kernel/crash/crash_8.0.2.bb index f58bb6ef54..f8a460b8ce 100644 --- a/meta-oe/recipes-kernel/crash/crash_8.0.2.bb +++ b/meta-oe/recipes-kernel/crash/crash_8.0.2.bb @@ -20,6 +20,7 @@ SRC_URI = "git://github.com/crash-utility/${BPN}.git;branch=master;protocol=http file://0001-cross_add_configure_option.patch \ file://donnot-extract-gdb-during-do-compile.patch \ file://gdb_build_jobs_and_not_write_crash_target.patch \ + file://0001-make-src-string-const-in-strlcpy.patch \ " SRCREV = "f1cd581d1c4afa5b8ffdfaa6a3ea9f545fe4ec91" -- cgit 1.2.3-korg