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.)
104 lines
3.6 KiB
Diff
104 lines
3.6 KiB
Diff
From 93c8c28c2ce439d598d5fd49d10a4bd5cb0401ea Mon Sep 17 00:00:00 2001
|
|
From: Jerome Marchand <jmarchan@redhat.com>
|
|
Date: Mon, 1 Jun 2026 15:57:27 +0200
|
|
Subject: [PATCH] scripts/sorttable: Have mcount rela sort use direct values
|
|
|
|
JIRA: https://redhat.atlassian.net/browse/RHEL-180193
|
|
|
|
commit a0265659322540d656727b9e132edfb6f06b6c1a
|
|
Author: Steven Rostedt <rostedt@goodmis.org>
|
|
Date: Tue Feb 18 14:59:20 2025 -0500
|
|
|
|
scripts/sorttable: Have mcount rela sort use direct values
|
|
|
|
The mcount_loc sorting for when the values are stored in the Elf_Rela
|
|
entries uses the compare_extable() function to do the compares in the
|
|
qsort(). That function does handle byte swapping if the machine being
|
|
compiled for is a different endian than the host machine. But the
|
|
sort_relocs() function sorts an array that pulled in the values from the
|
|
Elf_Rela section and has already done the swapping.
|
|
|
|
Create two new compare functions that will sort the direct values. One
|
|
will sort 32 bit values and the other will sort the 64 bit value. One of
|
|
these will be assigned to a compare_values function pointer and that will
|
|
be used for sorting the Elf_Rela mcount values.
|
|
|
|
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>
|
|
Cc: Heiko Carstens <hca@linux.ibm.com>
|
|
Cc: Catalin Marinas <catalin.marinas@arm.com>
|
|
Cc: Will Deacon <will@kernel.org>
|
|
Cc: Vasily Gorbik <gor@linux.ibm.com>
|
|
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
|
|
Link: https://lore.kernel.org/20250218200022.538888594@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 4a34c275123e..f62a91d8af0a 100644
|
|
--- a/scripts/sorttable.c
|
|
+++ b/scripts/sorttable.c
|
|
@@ -552,6 +552,28 @@ static void *sort_orctable(void *arg)
|
|
|
|
#ifdef MCOUNT_SORT_ENABLED
|
|
|
|
+static int compare_values_64(const void *a, const void *b)
|
|
+{
|
|
+ uint64_t av = *(uint64_t *)a;
|
|
+ uint64_t bv = *(uint64_t *)b;
|
|
+
|
|
+ if (av < bv)
|
|
+ return -1;
|
|
+ return av > bv;
|
|
+}
|
|
+
|
|
+static int compare_values_32(const void *a, const void *b)
|
|
+{
|
|
+ uint32_t av = *(uint32_t *)a;
|
|
+ uint32_t bv = *(uint32_t *)b;
|
|
+
|
|
+ if (av < bv)
|
|
+ return -1;
|
|
+ return av > bv;
|
|
+}
|
|
+
|
|
+static int (*compare_values)(const void *a, const void *b);
|
|
+
|
|
/* Only used for sorting mcount table */
|
|
static void rela_write_addend(Elf_Rela *rela, uint64_t val)
|
|
{
|
|
@@ -583,6 +605,8 @@ static void *sort_relocs(Elf_Ehdr *ehdr, uint64_t start_loc, uint64_t size)
|
|
void *vals;
|
|
void *ptr;
|
|
|
|
+ compare_values = long_size == 4 ? compare_values_32 : compare_values_64;
|
|
+
|
|
shdr_start = (Elf_Shdr *)((char *)ehdr + ehdr_shoff(ehdr));
|
|
shentsize = ehdr_shentsize(ehdr);
|
|
|
|
@@ -640,7 +664,7 @@ static void *sort_relocs(Elf_Ehdr *ehdr, uint64_t start_loc, uint64_t size)
|
|
}
|
|
}
|
|
count = ptr - vals;
|
|
- qsort(vals, count / long_size, long_size, compare_extable);
|
|
+ qsort(vals, count / long_size, long_size, compare_values);
|
|
|
|
ptr = vals;
|
|
for (int i = 0; i < shnum; i++) {
|
|
--
|
|
2.50.1 (Apple Git-155)
|
|
|