• Nathan Chancellor's avatar
    riscv: Workaround mcount name prior to clang-13 · 7ce04771
    Nathan Chancellor authored
    Prior to clang 13.0.0, the RISC-V name for the mcount symbol was
    "mcount", which differs from the GCC version of "_mcount", which results
    in the following errors:
    
    riscv64-linux-gnu-ld: init/main.o: in function `__traceiter_initcall_level':
    main.c:(.text+0xe): undefined reference to `mcount'
    riscv64-linux-gnu-ld: init/main.o: in function `__traceiter_initcall_start':
    main.c:(.text+0x4e): undefined reference to `mcount'
    riscv64-linux-gnu-ld: init/main.o: in function `__traceiter_initcall_finish':
    main.c:(.text+0x92): undefined reference to `mcount'
    riscv64-linux-gnu-ld: init/main.o: in function `.LBB32_28':
    main.c:(.text+0x30c): undefined reference to `mcount'
    riscv64-linux-gnu-ld: init/main.o: in function `free_initmem':
    main.c:(.text+0x54c): undefined reference to `mcount'
    
    This has been corrected in https://reviews.llvm.org/D98881 but the
    minimum supported clang version is 10.0.1. To avoid build errors and to
    gain a working function tracer, adjust the name of the mcount symbol for
    older versions of clang in mount.S and recordmcount.pl.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/1331Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
    7ce04771
mcount.S 2.58 KB