fix 'dynreloc miscount' link error on Powerpc
authorSam Ravnborg <>
Thu, 26 Jul 2007 17:41:13 +0000 (10:41 -0700)
committerLinus Torvalds <>
Thu, 26 Jul 2007 18:35:18 +0000 (11:35 -0700)
Nathan Lynch <> reported:
2.6.23-rc1 breaks the build for 64-bit powerpc for me (using

  LD      vmlinux.o
powerpc64-unknown-linux-gnu-ld: dynreloc miscount for
kernel/built-in.o, section .opd
powerpc64-unknown-linux-gnu-ld: can not edit opd Bad value
make: *** [vmlinux.o] Error 1

However, I see a possibly related binutils patch:

It was tracked down to be caused by the weak prototype
declaration in mm.h:
__attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma);

But there is no need to make the declaration weak - only the definition
needs to be marked weak.  So drop the weak declaration.  And in the process
drop the duplicate definition in page.h for powerpc.

Note: the arch_vma_name fix for x86_64 needs to be applied first to avoid
breaking x86_64

Signed-off-by: Sam Ravnborg <>
Cc: Nathan Lynch <>
Cc: Paul Mackerras <>
Cc: Benjamin Herrenschmidt <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>

index 10c51f457d4887c1e89f9803e1c0e63355f4da6a..236a9210e5fc112b2ba41ab568cc81e4b36ce8e4 100644 (file)
@@ -190,7 +190,6 @@ extern void copy_user_page(void *to, void *from, unsigned long vaddr,
 extern int page_is_ram(unsigned long pfn);
 struct vm_area_struct;
-extern const char *arch_vma_name(struct vm_area_struct *vma);
 #include <asm-generic/memory_model.h>
 #endif /* __ASSEMBLY__ */
index c456c3a1c28e183461bf58ea1a73cb9f6ac2e0a4..3e9e8fec5a419bbb948c837415437f5310cd399e 100644 (file)
@@ -1246,7 +1246,7 @@ void drop_slab(void);
 extern int randomize_va_space;
-__attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma);
+const char * arch_vma_name(struct vm_area_struct *vma);
 #endif /* __KERNEL__ */
 #endif /* _LINUX_MM_H */