Re: [PATCH 1/8] scripts/sorttable: Handle RISC-V patchable ftrace entries
From: Steven Rostedt
Date: Wed May 27 2026 - 11:32:05 EST
On Wed, 27 May 2026 20:35:23 +0800
Wang Han <wanghan@xxxxxxxxxxxxxxxxx> wrote:
> Signed-off-by: Wang Han <wanghan@xxxxxxxxxxxxxxxxx>
> ---
> scripts/sorttable.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/sorttable.c b/scripts/sorttable.c
> index e8ed11c680c6..b4061c2c03e1 100644
> --- a/scripts/sorttable.c
> +++ b/scripts/sorttable.c
> @@ -901,11 +901,17 @@ static int do_file(char const *const fname, void *addr)
> /* fallthrough */
> case EM_386:
> case EM_LOONGARCH:
> - case EM_RISCV:
> case EM_S390:
> case EM_X86_64:
> custom_sort = sort_relative_table_with_data;
> break;
> + case EM_RISCV:
> +#ifdef MCOUNT_SORT_ENABLED
> + /* RISC-V uses patchable function entries before function entry. */
> + before_func = 8;
> +#endif
> + custom_sort = sort_relative_table_with_data;
> + break;
> case EM_PARISC:
> case EM_PPC:
> case EM_PPC64:
So basically RISCV has the same problem as ARM64 with patchable
entries. As this may happen for other archs in the future, I would like
to group them together like this:
diff --git a/scripts/sorttable.c b/scripts/sorttable.c
index e8ed11c680c6..b3d9073d9fbc 100644
--- a/scripts/sorttable.c
+++ b/scripts/sorttable.c
@@ -891,17 +891,23 @@ static int do_file(char const *const fname, void *addr)
table_sort_t custom_sort = NULL;
switch (elf_map_machine(ehdr)) {
- case EM_AARCH64:
#ifdef MCOUNT_SORT_ENABLED
+ case EM_AARCH64:
sort_reloc = true;
rela_type = 0x403;
- /* arm64 uses patchable function entry placing before function */
+ /*
+ * arm64 and RISCV use patchable function entry placing
+ * before function
+ */
+ case RISCV:
before_func = 8;
+#else
+ case EM_AARCH64:
+ case RISCV:
#endif
/* fallthrough */
case EM_386:
case EM_LOONGARCH:
- case EM_RISCV:
case EM_S390:
case EM_X86_64:
custom_sort = sort_relative_table_with_data;
does the above work for you? (Although I didn't even compile test it).
-- Steve