51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
![]() |
From ef4fea130eeb70eff4f3a549fd3f6e9b11437550 Mon Sep 17 00:00:00 2001
|
||
|
From: ZaneZam <cyxman@yahoo.com>
|
||
|
Date: Thu, 26 Mar 2015 14:50:10 +0100
|
||
|
Subject: [PATCH] arm: LLVMLinux: use static inline in ARM ftrace.h
|
||
|
|
||
|
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 static inline
|
||
|
and removing the NULL version of return_address in return_address.c does
|
||
|
the right thing.
|
||
|
|
||
|
Signed-off-by: Behan Webster <behanw@converseincode.com>
|
||
|
Reviewed-by: Mark Charlebois <charlebm@gmail.com>
|
||
|
|
||
|
source: http://www.serverphorums.com/read.php?12,880351,880351#msg-880351
|
||
|
---
|
||
|
arch/arm/include/asm/ftrace.h | 2 +-
|
||
|
arch/arm/kernel/return_address.c | 2 ++
|
||
|
2 files changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
|
||
|
index f89515a..2bb8cac 100644
|
||
|
--- a/arch/arm/include/asm/ftrace.h
|
||
|
+++ b/arch/arm/include/asm/ftrace.h
|
||
|
@@ -45,7 +45,7 @@ void *return_address(unsigned int);
|
||
|
|
||
|
#else
|
||
|
|
||
|
-extern inline void *return_address(unsigned int level)
|
||
|
+static inline void *return_address(unsigned int level)
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c
|
||
|
index f1aef84..49477f0 100644
|
||
|
--- a/arch/arm/kernel/return_address.c
|
||
|
+++ b/arch/arm/kernel/return_address.c
|
||
|
@@ -62,10 +62,12 @@ void *return_address(unsigned int level)
|
||
|
/* #warning "TODO: return_address should use unwind tables" */
|
||
|
#endif
|
||
|
|
||
|
+/*
|
||
|
void *return_address(unsigned int level)
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
+*/
|
||
|
|
||
|
#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */
|
||
|
|