[PATCH] fix compile failure with non modular builds

Subsystems: linux for powerpc (32-bit and 64-bit), the rest · Maintainers: Madhavan Srinivasan, Linus Torvalds

STALE6621d

5 messages, 3 authors, 2008-09-10 · open the first message on its own page

[PATCH] fix compile failure with non modular builds

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2008-09-10 00:04:19

commit deac93df26b20cf8438339b5935b5f5643bc30c9
Author: James Bottomley [off-list ref]
Date:   Wed Sep 3 20:43:36 2008 -0500

    lib: Correct printk %pF to work on all architectures

Broke the non modular builds by moving an essential function into
modules.c.  Fix this by moving it out again and into asm/sections.h as
an inline.  To do this, the definition of struct ppc64_opd_entry has
been lifted out of modules.c and put in asm/elf.h where it belongs.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>

---
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
index 80d1f39..64c6ee2 100644
--- a/arch/powerpc/include/asm/elf.h
+++ b/arch/powerpc/include/asm/elf.h
@@ -409,6 +409,13 @@ do {									\
 /* Keep this the last entry.  */
 #define R_PPC64_NUM		107
 
+/* There's actually a third entry here, but it's unused */
+struct ppc64_opd_entry
+{
+	unsigned long funcaddr;
+	unsigned long r2;
+};
+
 #ifdef  __KERNEL__
 
 #ifdef CONFIG_SPU_BASE
diff --git a/arch/powerpc/include/asm/sections.h b/arch/powerpc/include/asm/sections.h
index 7710e9e..07956f3 100644
--- a/arch/powerpc/include/asm/sections.h
+++ b/arch/powerpc/include/asm/sections.h
@@ -2,6 +2,8 @@
 #define _ASM_POWERPC_SECTIONS_H
 #ifdef __KERNEL__
 
+#include <linux/elf.h>
+#include <linux/uaccess.h>
 #include <asm-generic/sections.h>
 
 #ifdef __powerpc64__
@@ -17,7 +19,15 @@ static inline int in_kernel_text(unsigned long addr)
 }
 
 #undef dereference_function_descriptor
-void *dereference_function_descriptor(void *);
+static inline void *dereference_function_descriptor(void *ptr)
+{
+	struct ppc64_opd_entry *desc = ptr;
+	void *p;
+
+	if (!probe_kernel_address(&desc->funcaddr, p))
+		ptr = p;
+	return ptr;
+}
 
 #endif
 
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index ad79de2..1af2377 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -21,9 +21,7 @@
 #include <linux/err.h>
 #include <linux/vmalloc.h>
 #include <linux/bug.h>
-#include <linux/uaccess.h>
 #include <asm/module.h>
-#include <asm/sections.h>
 #include <asm/firmware.h>
 #include <asm/code-patching.h>
 #include <linux/sort.h>
@@ -43,13 +41,6 @@
 #define DEBUGP(fmt , ...)
 #endif
 
-/* There's actually a third entry here, but it's unused */
-struct ppc64_opd_entry
-{
-	unsigned long funcaddr;
-	unsigned long r2;
-};
-
 /* Like PPC32, we need little trampolines to do > 24-bit jumps (into
    the kernel itself).  But on PPC64, these need to be used for every
    jump, actually, to reset r2 (TOC+0x8000). */
@@ -452,13 +443,3 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
 
 	return 0;
 }
-
-void *dereference_function_descriptor(void *ptr)
-{
-	struct ppc64_opd_entry *desc = ptr;
-	void *p;
-
-	if (!probe_kernel_address(&desc->funcaddr, p))
-		ptr = p;
-	return ptr;
-}

Re: [PATCH] fix compile failure with non modular builds

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-09-10 00:09:54

On Tue, 2008-09-09 at 19:04 -0500, James Bottomley wrote:
commit deac93df26b20cf8438339b5935b5f5643bc30c9
Author: James Bottomley [off-list ref]
Date:   Wed Sep 3 20:43:36 2008 -0500

    lib: Correct printk %pF to work on all architectures

Broke the non modular builds by moving an essential function into
modules.c.  Fix this by moving it out again and into asm/sections.h as
an inline.  To do this, the definition of struct ppc64_opd_entry has
been lifted out of modules.c and put in asm/elf.h where it belongs.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Ouch. Ack.

Ben.
quoted hunk
---
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
index 80d1f39..64c6ee2 100644
--- a/arch/powerpc/include/asm/elf.h
+++ b/arch/powerpc/include/asm/elf.h
@@ -409,6 +409,13 @@ do {									\
 /* Keep this the last entry.  */
 #define R_PPC64_NUM		107
 
+/* There's actually a third entry here, but it's unused */
+struct ppc64_opd_entry
+{
+	unsigned long funcaddr;
+	unsigned long r2;
+};
+
 #ifdef  __KERNEL__
 
 #ifdef CONFIG_SPU_BASE
diff --git a/arch/powerpc/include/asm/sections.h b/arch/powerpc/include/asm/sections.h
index 7710e9e..07956f3 100644
--- a/arch/powerpc/include/asm/sections.h
+++ b/arch/powerpc/include/asm/sections.h
@@ -2,6 +2,8 @@
 #define _ASM_POWERPC_SECTIONS_H
 #ifdef __KERNEL__
 
+#include <linux/elf.h>
+#include <linux/uaccess.h>
 #include <asm-generic/sections.h>
 
 #ifdef __powerpc64__
@@ -17,7 +19,15 @@ static inline int in_kernel_text(unsigned long addr)
 }
 
 #undef dereference_function_descriptor
-void *dereference_function_descriptor(void *);
+static inline void *dereference_function_descriptor(void *ptr)
+{
+	struct ppc64_opd_entry *desc = ptr;

52 more quoted lines

Re: [PATCH] fix compile failure with non modular builds

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2008-09-10 00:11:45

On Wed, 2008-09-10 at 10:09 +1000, Benjamin Herrenschmidt wrote:
On Tue, 2008-09-09 at 19:04 -0500, James Bottomley wrote:
quoted
commit deac93df26b20cf8438339b5935b5f5643bc30c9
Author: James Bottomley [off-list ref]
Date:   Wed Sep 3 20:43:36 2008 -0500

    lib: Correct printk %pF to work on all architectures

Broke the non modular builds by moving an essential function into
modules.c.  Fix this by moving it out again and into asm/sections.h as
an inline.  To do this, the definition of struct ppc64_opd_entry has
been lifted out of modules.c and put in asm/elf.h where it belongs.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Ouch. Ack.
Actually, this is for your powerpc tree, so we actually run it through
some extended config testing this time ...

James

Re: [PATCH] fix compile failure with non modular builds

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-09-10 00:46:47

On Tue, 2008-09-09 at 19:11 -0500, James Bottomley wrote:
On Wed, 2008-09-10 at 10:09 +1000, Benjamin Herrenschmidt wrote:
quoted
On Tue, 2008-09-09 at 19:04 -0500, James Bottomley wrote:
quoted
commit deac93df26b20cf8438339b5935b5f5643bc30c9
Author: James Bottomley [off-list ref]
Date:   Wed Sep 3 20:43:36 2008 -0500

    lib: Correct printk %pF to work on all architectures

Broke the non modular builds by moving an essential function into
modules.c.  Fix this by moving it out again and into asm/sections.h as
an inline.  To do this, the definition of struct ppc64_opd_entry has
been lifted out of modules.c and put in asm/elf.h where it belongs.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Ouch. Ack.
Actually, this is for your powerpc tree, so we actually run it through
some extended config testing this time ...
Or rather Paul's tree :-)

He's on the way to Portland and I'm flying out tomorrow, but I'll make
sure it gets picked up.

I must admit that none of my test configs I think has module support
turned off (even if I tend to have all the stuff I need built-in).

Cheers,
Ben.

Re: [PATCH] fix compile failure with non modular builds

From: Stephen Rothwell <hidden>
Date: 2008-09-10 14:50:20

On Wed, 10 Sep 2008 10:46:39 +1000 Benjamin Herrenschmidt [off-list ref] wrote:
I must admit that none of my test configs I think has module support
turned off (even if I tend to have all the stuff I need built-in).
And our allnoconfig turns off CONFIG_64BIT, so we didn't see it in any of
our automated builds.  :-(

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help