Add the RHEL 211.21.1..211.22.1 backports (1288-1351) from centos-stream-10 and upstream stable, on top of 211.20.1. Bump pkgrelease and specrelease to 211.22.1. (The redhat/ automotive rebuild-changelog tooling change is omitted: it patches redhat/scripts not present in this build base and does not affect the kernel.)
140 lines
4.4 KiB
Diff
140 lines
4.4 KiB
Diff
From 1278ee787a87aaaa378d44f173cdae2fb07501ae Mon Sep 17 00:00:00 2001
|
|
From: Jerome Marchand <jmarchan@redhat.com>
|
|
Date: Mon, 1 Jun 2026 15:22:33 +0200
|
|
Subject: [PATCH] scripts/sorttable: Add helper functions for Elf_Ehdr
|
|
|
|
JIRA: https://redhat.atlassian.net/browse/RHEL-180193
|
|
|
|
commit 1dfb59a228dde59ad7d99b2fa2104e90004995c7
|
|
Author: Steven Rostedt <rostedt@goodmis.org>
|
|
Date: Sun Jan 5 11:22:20 2025 -0500
|
|
|
|
scripts/sorttable: Add helper functions for Elf_Ehdr
|
|
|
|
In order to remove the double #include of sorttable.h for 64 and 32 bit
|
|
to create duplicate functions, add helper functions for Elf_Ehdr. This
|
|
will create a function pointer for each helper that will get assigned to
|
|
the appropriate function to handle either the 64bit or 32bit version.
|
|
|
|
This also moves the _r()/r() wrappers for the Elf_Ehdr references that
|
|
handle endian and size differences between the different architectures,
|
|
into the helper function and out of the open code which is more error
|
|
prone.
|
|
|
|
Cc: bpf <bpf@vger.kernel.org>
|
|
Cc: Masami Hiramatsu <mhiramat@kernel.org>
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
|
Cc: Andrew Morton <akpm@linux-foundation.org>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Cc: Masahiro Yamada <masahiroy@kernel.org>
|
|
Cc: Nathan Chancellor <nathan@kernel.org>
|
|
Cc: Nicolas Schier <nicolas@fjasle.eu>
|
|
Cc: Zheng Yejian <zhengyejian1@huawei.com>
|
|
Cc: Martin Kelly <martin.kelly@crowdstrike.com>
|
|
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
|
|
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
|
Link: https://lore.kernel.org/20250105162345.736369526@goodmis.org
|
|
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
|
|
|
|
Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
|
|
|
|
diff --git a/scripts/sorttable.c b/scripts/sorttable.c
|
|
index 57792cf2aa89..5dfa734eff09 100644
|
|
--- a/scripts/sorttable.c
|
|
+++ b/scripts/sorttable.c
|
|
@@ -85,6 +85,31 @@ static uint64_t (*r8)(const uint64_t *);
|
|
static void (*w)(uint32_t, uint32_t *);
|
|
typedef void (*table_sort_t)(char *, int);
|
|
|
|
+static uint64_t ehdr64_shoff(Elf_Ehdr *ehdr)
|
|
+{
|
|
+ return r8(&ehdr->e64.e_shoff);
|
|
+}
|
|
+
|
|
+static uint64_t ehdr32_shoff(Elf_Ehdr *ehdr)
|
|
+{
|
|
+ return r(&ehdr->e32.e_shoff);
|
|
+}
|
|
+
|
|
+#define EHDR_HALF(fn_name) \
|
|
+static uint16_t ehdr64_##fn_name(Elf_Ehdr *ehdr) \
|
|
+{ \
|
|
+ return r2(&ehdr->e64.e_##fn_name); \
|
|
+} \
|
|
+ \
|
|
+static uint16_t ehdr32_##fn_name(Elf_Ehdr *ehdr) \
|
|
+{ \
|
|
+ return r2(&ehdr->e32.e_##fn_name); \
|
|
+}
|
|
+
|
|
+EHDR_HALF(shentsize)
|
|
+EHDR_HALF(shstrndx)
|
|
+EHDR_HALF(shnum)
|
|
+
|
|
/*
|
|
* Get the whole file as a programming convenience in order to avoid
|
|
* malloc+lseek+read+free of many pieces. If successful, then mmap
|
|
diff --git a/scripts/sorttable.h b/scripts/sorttable.h
|
|
index cd4429c8a9f4..97278c973bc9 100644
|
|
--- a/scripts/sorttable.h
|
|
+++ b/scripts/sorttable.h
|
|
@@ -27,6 +27,10 @@
|
|
#undef uint_t
|
|
#undef _r
|
|
#undef etype
|
|
+#undef ehdr_shoff
|
|
+#undef ehdr_shentsize
|
|
+#undef ehdr_shstrndx
|
|
+#undef ehdr_shnum
|
|
|
|
#ifdef SORTTABLE_64
|
|
# define extable_ent_size 16
|
|
@@ -39,6 +43,10 @@
|
|
# define uint_t uint64_t
|
|
# define _r r8
|
|
# define etype e64
|
|
+# define ehdr_shoff ehdr64_shoff
|
|
+# define ehdr_shentsize ehdr64_shentsize
|
|
+# define ehdr_shstrndx ehdr64_shstrndx
|
|
+# define ehdr_shnum ehdr64_shnum
|
|
#else
|
|
# define extable_ent_size 8
|
|
# define compare_extable compare_extable_32
|
|
@@ -50,6 +58,10 @@
|
|
# define uint_t uint32_t
|
|
# define _r r
|
|
# define etype e32
|
|
+# define ehdr_shoff ehdr32_shoff
|
|
+# define ehdr_shentsize ehdr32_shentsize
|
|
+# define ehdr_shstrndx ehdr32_shstrndx
|
|
+# define ehdr_shnum ehdr32_shnum
|
|
#endif
|
|
|
|
#if defined(SORTTABLE_64) && defined(UNWINDER_ORC_ENABLED)
|
|
@@ -250,16 +262,16 @@ static int do_sort(Elf_Ehdr *ehdr,
|
|
unsigned int orc_num_entries = 0;
|
|
#endif
|
|
|
|
- shdr_start = (Elf_Shdr *)((char *)ehdr + _r(&ehdr->etype.e_shoff));
|
|
- shentsize = r2(&ehdr->etype.e_shentsize);
|
|
+ shdr_start = (Elf_Shdr *)((char *)ehdr + ehdr_shoff(ehdr));
|
|
+ shentsize = ehdr_shentsize(ehdr);
|
|
|
|
- shstrndx = r2(&ehdr->etype.e_shstrndx);
|
|
+ shstrndx = ehdr_shstrndx(ehdr);
|
|
if (shstrndx == SHN_XINDEX)
|
|
shstrndx = r(&shdr_start->etype.sh_link);
|
|
string_sec = get_index(shdr_start, shentsize, shstrndx);
|
|
secstrings = (const char *)ehdr + _r(&string_sec->etype.sh_offset);
|
|
|
|
- shnum = r2(&ehdr->etype.e_shnum);
|
|
+ shnum = ehdr_shnum(ehdr);
|
|
if (shnum == SHN_UNDEF)
|
|
shnum = _r(&shdr_start->etype.sh_size);
|
|
|
|
--
|
|
2.50.1 (Apple Git-155)
|
|
|