Message ID | 20210325223807.2423265-2-nathan@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix CONFIG_FUNCTION_TRACER with clang | expand |
On 2021-03-25, Nathan Chancellor wrote: >Clang can generate R_RISCV_CALL_PLT relocations to _mcount: > >$ llvm-objdump -dr build/riscv/init/main.o | rg mcount > 000000000000000e: R_RISCV_CALL_PLT _mcount > 000000000000004e: R_RISCV_CALL_PLT _mcount > >After this, the __start_mcount_loc section is properly generated and >function tracing still works. > R_RISCV_CALL_PLT can replace R_RISCV_CALL in all use cases. R_RISCV_CALL can/may be deprecated: https://github.com/ClangBuiltLinux/linux/issues/1331#issuecomment-802468296 Reviewed-by: Fangrui Song <maskray@google.com> >Cc: stable@vger.kernel.org >Link: https://github.com/ClangBuiltLinux/linux/issues/1331 >Signed-off-by: Nathan Chancellor <nathan@kernel.org> >--- > scripts/recordmcount.pl | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl >index 867860ea57da..a36df04cfa09 100755 >--- a/scripts/recordmcount.pl >+++ b/scripts/recordmcount.pl >@@ -392,7 +392,7 @@ if ($arch eq "x86_64") { > $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; > } elsif ($arch eq "riscv") { > $function_regex = "^([0-9a-fA-F]+)\\s+<([^.0-9][0-9a-zA-Z_\\.]+)>:"; >- $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL\\s_mcount\$"; >+ $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL(_PLT)?\\s_mcount\$"; > $type = ".quad"; > $alignment = 2; > } elsif ($arch eq "nds32") { >-- >2.31.0 > >-- >You received this message because you are subscribed to the Google Groups "Clang Built Linux" group. >To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com. >To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20210325223807.2423265-2-nathan%40kernel.org.
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl index 867860ea57da..a36df04cfa09 100755 --- a/scripts/recordmcount.pl +++ b/scripts/recordmcount.pl @@ -392,7 +392,7 @@ if ($arch eq "x86_64") { $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; } elsif ($arch eq "riscv") { $function_regex = "^([0-9a-fA-F]+)\\s+<([^.0-9][0-9a-zA-Z_\\.]+)>:"; - $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL\\s_mcount\$"; + $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL(_PLT)?\\s_mcount\$"; $type = ".quad"; $alignment = 2; } elsif ($arch eq "nds32") {
Clang can generate R_RISCV_CALL_PLT relocations to _mcount: $ llvm-objdump -dr build/riscv/init/main.o | rg mcount 000000000000000e: R_RISCV_CALL_PLT _mcount 000000000000004e: R_RISCV_CALL_PLT _mcount After this, the __start_mcount_loc section is properly generated and function tracing still works. Cc: stable@vger.kernel.org Link: https://github.com/ClangBuiltLinux/linux/issues/1331 Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- scripts/recordmcount.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)