On Mon, 8 Apr 2019 23:26:23 +0200 Arnd Bergmann <arnd@xxxxxxxx> wrote: > llvm on s390 has problems with __builtin_return_address(n), with n>0, > this results in a somewhat cryptic error message: > > fatal error: error in backend: Unsupported stack frame traversal count > > To work around it, use the direct return address directly. This > is probably not ideal here, but gets things to compile and should > only lead to inferior reporting, not to misbehavior of the generated > code. > > Link: https://bugs.llvm.org/show_bug.cgi?id=41424 > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > arch/s390/include/asm/ftrace.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/s390/include/asm/ftrace.h b/arch/s390/include/asm/ftrace.h > index 5a3c95b11952..7923c63946fb 100644 > --- a/arch/s390/include/asm/ftrace.h > +++ b/arch/s390/include/asm/ftrace.h > @@ -13,7 +13,12 @@ > > #ifndef __ASSEMBLY__ > > +#ifdef CONFIG_CC_IS_CLANG > +/* https://bugs.llvm.org/show_bug.cgi?id=41424 */ > +#define ftrace_return_address(n) __builtin_return_address(0) > +#else > #define ftrace_return_address(n) __builtin_return_address(n) > +#endif > > void _mcount(void); > void ftrace_caller(void); I can say I like this one. If the compiler can not do __builtin_return_address(n) it feels wrong to just use __builtin_return_address(0). -- blue skies, Martin. "Reality continues to ruin my life." - Calvin.