On Wed, 27 May 2026 20:35:23 +0800
Wang Han <[email protected]> wrote:

> Signed-off-by: Wang Han <[email protected]>
> ---
>  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

Reply via email to