| From 84ed8a99058e61567f495cc43118344261641c5f Mon Sep 17 00:00:00 2001 |
| From: Geert Uytterhoeven <geert@linux-m68k.org> |
| Date: Wed, 18 Dec 2013 17:08:48 -0800 |
| Subject: sh: always link in helper functions extracted from libgcc |
| |
| From: Geert Uytterhoeven <geert@linux-m68k.org> |
| |
| commit 84ed8a99058e61567f495cc43118344261641c5f upstream. |
| |
| E.g. landisk_defconfig, which has CONFIG_NTFS_FS=m: |
| |
| ERROR: "__ashrdi3" [fs/ntfs/ntfs.ko] undefined! |
| |
| For "lib-y", if no symbols in a compilation unit are referenced by other |
| units, the compilation unit will not be included in vmlinux. This |
| breaks modules that do reference those symbols. |
| |
| Use "obj-y" instead to fix this. |
| |
| http://kisskb.ellerman.id.au/kisskb/buildresult/8838077/ |
| |
| This doesn't fix all cases. There are others, e.g. udivsi3. |
| This is also not limited to sh, many architectures handle this in the |
| same way. |
| |
| A simple solution is to unconditionally include all helper functions. |
| A more complex solution is to make the choice of "lib-y" or "obj-y" depend |
| on CONFIG_MODULES: |
| |
| obj-$(CONFIG_MODULES) += ... |
| lib-y($CONFIG_MODULES) += ... |
| |
| Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> |
| Cc: Paul Mundt <lethal@linux-sh.org> |
| Tested-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> |
| Reviewed-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/sh/lib/Makefile | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/sh/lib/Makefile |
| +++ b/arch/sh/lib/Makefile |
| @@ -6,7 +6,7 @@ lib-y = delay.o memmove.o memchr.o \ |
| checksum.o strlen.o div64.o div64-generic.o |
| |
| # Extracted from libgcc |
| -lib-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \ |
| +obj-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \ |
| ashlsi3.o ashrsi3.o ashiftrt.o lshrsi3.o \ |
| udiv_qrnnd.o |
| |