Sometimes, the kernel redefinition for inline
(with attribute(__always_inline)) is not being used when it
should be. Most of the time, this has no detectable effect.
However, under certain conditions, such as when one is using
the gcc -finstrument-functions feature, this results in link
errors.
This patch adds some include lines needed to avoid this
situation (at least for configurations that I tested).
Also, this patch removes a conditional which disables
the kernel redefinition of inline for gcc 3.4 and above.
(IOW, for gcc 3.4 and above, currently the kernel does
NOT redefine 'inline' to be always inline, but with
this change it will.)
This was discussed before at:
http://groups.google.com/groups?q=always_inline&hl=en&lr=&ie=UTF-8&selm=2hjY2-7YV-9%40gated-at.bofh.it&rnum=1
Signed-off-by: Tim Bird <[email protected]>
---
asm-ppc/delay.h | 1 +
asm-ppc/processor.h | 1 +
linux/compiler-gcc3.h | 2 +-
3 files changed, 3 insertions(+), 1 deletion(-)
diff -ruN -X ../../dontdiff linux-2.6.7/include/asm-ppc/delay.h branch_KFI/include/asm-ppc/delay.h
--- linux-2.6.7/include/asm-ppc/delay.h 2004-06-15 22:19:42.000000000 -0700
+++ branch_KFI/include/asm-ppc/delay.h 2004-08-11 15:30:22.000000000 -0700
@@ -2,6 +2,7 @@
#ifndef _PPC_DELAY_H
#define _PPC_DELAY_H
+#include <linux/compiler.h> /* for kernel inline definition */
#include <asm/param.h>
/*
diff -ruN -X ../../dontdiff linux-2.6.7/include/asm-ppc/processor.h branch_KFI/include/asm-ppc/processor.h
--- linux-2.6.7/include/asm-ppc/processor.h 2004-06-15 22:18:38.000000000 -0700
+++ branch_KFI/include/asm-ppc/processor.h 2004-08-11 15:35:25.000000000 -0700
@@ -10,6 +10,7 @@
#include <linux/config.h>
#include <linux/stringify.h>
+#include <linux/compiler.h> /* for kernel inline definition */
#include <asm/ptrace.h>
#include <asm/types.h>
diff -ruN -X ../../dontdiff linux-2.6.7/include/linux/compiler-gcc3.h branch_KFI/include/linux/compiler-gcc3.h
--- linux-2.6.7/include/linux/compiler-gcc3.h 2004-06-15 22:18:45.000000000 -0700
+++ branch_KFI/include/linux/compiler-gcc3.h 2004-08-11 14:16:34.000000000 -0700
@@ -3,7 +3,7 @@
/* These definitions are for GCC v3.x. */
#include <linux/compiler-gcc.h>
-#if __GNUC_MINOR__ >= 1 && __GNUC_MINOR__ < 4
+#if __GNUC_MINOR__ >= 1
# define inline __inline__ __attribute__((always_inline))
# define __inline__ __inline__ __attribute__((always_inline))
# define __inline __inline__ __attribute__((always_inline))
--
=============================
Tim Bird
Architecture Group Co-Chair, CE Linux Forum
Senior Staff Engineer, Sony Electronics
E-mail: [email protected]
=============================