Re: [PATCH 0/3] Fix CONFIG_FUNCTION_TRACER with clang
From: Nathan Chancellor
Date: Fri Mar 26 2021 - 09:08:07 EST
On Fri, Mar 26, 2021 at 09:37:55AM +0100, Sedat Dilek wrote:
> On Thu, Mar 25, 2021 at 11:38 PM Nathan Chancellor <nathan@xxxxxxxxxx> wrote:
> >
> > Hi all,
> >
> > This series fixes function tracing with clang.
> >
> > Patch 1 adjusts the mcount regex in scripts/recordmcount.pl to handle
> > the presence of PLT relocations, which happen with clang. Without this,
> > the mcount_loc section will not be created properly.
> >
> > Patch 2 adds a workaround for clang less than 13.0.0 in relation to the
> > mcount symbol name, which was "mcount" rather than "_mcount". This was
> > written as a separate patch so that it can be reverted when the minimum
> > clang version is bumped to clang 13.0.0.
> >
> > Patch 3 avoids a build error when -fpatchable-function-entry is not
> > available, which is the case with clang less than 13.0.0. This will make
> > dynamic ftrace unavailable but all of the other function tracing should
> > work due to the prescence of the previous patch.
> >
> > I am hoping this series can go in as fixes for 5.12, due to patch 3, but
> > if not, they can always be backported (patches 1 and 2 are already
> > marked for stable).
> >
> > This series has been build tested with gcc-8 through gcc-10 and clang-11
> > through clang-13 with defconfig and nommu_virt_defconfig plus
> > CONFIG_FTRACE=y and CONFIG_FUNCTION_TRACER=y then boot tested under
> > QEMU.
> >
> > Cheers,
> > Nathan
> >
> > Nathan Chancellor (3):
> > scripts/recordmcount.pl: Fix RISC-V regex for clang
> > riscv: Workaround mcount name prior to clang-13
> > riscv: Select HAVE_DYNAMIC_FTRACE when -fpatchable-function-entry is
> > available
> >
>
> Does this only fixes stuff for clang + riscv?
Yes.
> If so, please put a label "riscv" also in the cover-letter.
Sure, my apologies for not doing that in the first place, I must have
been in a rush with the cover letter.
In my defense, I think the titles of my commit messages and the diffstat
below make that obvious without the tag :)
Cheers,
Nathan
> - Sedat -
>
> > arch/riscv/Kconfig | 2 +-
> > arch/riscv/include/asm/ftrace.h | 14 ++++++++++++--
> > arch/riscv/kernel/mcount.S | 10 +++++-----
> > scripts/recordmcount.pl | 2 +-
> > 4 files changed, 19 insertions(+), 9 deletions(-)
> >
> > --
> > 2.31.0
> >