Re: [PATCH] ARM: LLVMLinux: Change "extern inline" to "gnu_inline"in ARM ftrace.h

From: David Daney
Date: Wed Aug 14 2013 - 17:51:40 EST


On 08/14/2013 02:37 PM, behanw@xxxxxxxxxxxxxxxxxx wrote:
From: Mark Charlebois <charlebm@xxxxxxxxx>

With compilers which follow the C99 standard (like modern versions of gcc and
clang), "extern inline" does the wrong thing (emits code for an externally
linkable version of the inline function). In this case using the gnu_inline
attribute makes inline do the right thing on gcc and on clang.

Signed-off-by: Mark Charlebois <charlebm@xxxxxxxxx>
Signed-off-by: Behan Webster <behanw@xxxxxxxxxxxxxxxxxx>
---
arch/arm/include/asm/ftrace.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
index f89515a..fb7fdc4 100644
--- a/arch/arm/include/asm/ftrace.h
+++ b/arch/arm/include/asm/ftrace.h
@@ -45,7 +45,8 @@ void *return_address(unsigned int);

#else

-extern inline void *return_address(unsigned int level)
+extern inline __attribute__((gnu_inline))

That seems very ugly.

Is it possible to put something in linux/compiler.h that encapsulates the desired semantics, and then use that instead?

We already define "inline" that way, if you need something else, put it in compiler.h with a nice symbolic name, and then use it.


+void *return_address(unsigned int level)
{
return NULL;
}


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/