Now recordmcount.pl recognizes RISC-V object files. For the mechanism to work, we have to disable the linker relaxation.
Unified · Split
| @@ -114,6 +114,7 @@ config ARCH_RV64I · 113 unmodified lines | ||
| 114 | 114 | select 64BIT |
| 115 | 115 | select HAVE_FUNCTION_TRACER |
| 116 | 116 | select HAVE_FUNCTION_GRAPH_TRACER |
| 117 | + select HAVE_FTRACE_MCOUNT_RECORD | |
| 117 | 118 | |
| 118 | 119 | endchoice |
| 119 | 120 | |
| @@ -11,6 +11,9 @@ · 10 unmodified lines | ||
| 11 | 11 | LDFLAGS := |
| 12 | 12 | OBJCOPYFLAGS := -O binary |
| 13 | 13 | LDFLAGS_vmlinux := |
| 14 | +ifeq ($(CONFIG_DYNAMIC_FTRACE),y) | |
| 15 | + LDFLAGS_vmlinux := --no-relax | |
| 16 | +endif | |
| 14 | 17 | KBUILD_AFLAGS_MODULE += -fPIC |
| 15 | 18 | KBUILD_CFLAGS_MODULE += -fPIC |
| 16 | 19 | |
| @@ -376,6 +376,11 @@ if ($arch eq "x86_64") { · 375 unmodified lines | ||
| 376 | 376 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s__mcount\$"; |
| 377 | 377 | $type = ".quad"; |
| 378 | 378 | $alignment = 8; |
| 379 | +} elsif ($arch eq "riscv") { | |
| 380 | + $function_regex = "^([0-9a-fA-F]+)\\s+<([^.0-9][0-9a-zA-Z_\\.]+)>:"; | |
| 381 | + $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL\\s_mcount\$"; | |
| 382 | + $type = ".quad"; | |
| 383 | + $alignment = 2; | |
| 379 | 384 | } else { |
| 380 | 385 | die "Arch $arch is not supported with CONFIG_FTRACE_MCOUNT_RECORD"; |
| 381 | 386 | } |