Re: [PATCH] module: Ignore RISC-V mapping symbols too

From: Palmer Dabbelt
Date: Fri Jul 07 2023 - 12:03:12 EST


On Thu, 06 Jul 2023 23:06:19 PDT (-0700), thomas@xxxxxxxx wrote:
On 2023-07-06 22:40:01-0700, Palmer Dabbelt wrote:
RISC-V has an extended form of mapping symbols that we use to encode
the ISA when it changes in the middle of an ELF. This trips up modpost
as a build failure, I haven't yet verified it yet but I believe the
kallsyms difference should result in stacks looking sane again.

[..]

diff --git a/kernel/module/kallsyms.c b/kernel/module/kallsyms.c
index ef73ae7c8909..1e988e542c5d 100644
--- a/kernel/module/kallsyms.c
+++ b/kernel/module/kallsyms.c
@@ -12,6 +12,12 @@
#include <linux/bsearch.h>
#include "internal.h"

+#ifdef CONFIG_RISCV
+#define IS_RISCV 1
+#else
+#define IS_RISCV 0
+#endif
+
/* Lookup exported symbol in given range of kernel_symbols */
static const struct kernel_symbol *lookup_exported_symbol(const char *name,
const struct kernel_symbol *start,
@@ -289,7 +295,7 @@ static const char *find_kallsyms_symbol(struct module *mod,
* and inserted at a whim.
*/
if (*kallsyms_symbol_name(kallsyms, i) == '\0' ||
- is_mapping_symbol(kallsyms_symbol_name(kallsyms, i)))
+ is_mapping_symbol(kallsyms_symbol_name(kallsyms, i), IS_RISCV))

IS_BUILTIN(CONFIG_RISCV) or IS_ENABLED(CONFIG_RISCV) ?

Thanks, this is fixed in the v2.


continue;

if (thisval <= addr && thisval > bestval) {

[..]