Re: 2.6.9-rc1-mm1 - undefined references - [PATCH]

Adrian Bunk
2004-08-28T08:54:14Z

On Thu, Aug 26, 2004 at 08:53:08PM +0200, Paolo Ornati wrote:
> On Thursday 26 August 2004 10:47, you wrote:
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.9-rc1/2.6.9-rc1-mm1/
> >
>
> make[1]: `arch/i386/kernel/asm-offsets.s' is up to date.
> CHK include/linux/compile.h
> CPP arch/i386/kernel/vsyscall.lds.s
> SYSCALL arch/i386/kernel/vsyscall-int80.so
> SYSCALL arch/i386/kernel/vsyscall-sysenter.so
> AS arch/i386/kernel/vsyscall.o
> SYSCALL arch/i386/kernel/vsyscall-syms.o
> LD arch/i386/kernel/built-in.o
> GEN .version
> CHK include/linux/compile.h
> UPD include/linux/compile.h
> CC init/version.o
> LD init/built-in.o
> LD .tmp_vmlinux1
> drivers/built-in.o(.data+0x40a68): undefined reference to `cfb_fillrect'
> drivers/built-in.o(.data+0x40a6c): undefined reference to `cfb_copyarea'
> make: *** [.tmp_vmlinux1] Error 1
>
>
> as shown by the code (drivers/video/tdfxfb.c):
>
> #ifdef CONFIG_FB_3DFX_ACCEL
> .fb_fillrect = tdfxfb_fillrect,
> .fb_copyarea = tdfxfb_copyarea,
> .fb_imageblit = tdfxfb_imageblit,
> .fb_cursor = tdfxfb_cursor,
> #else
> .fb_fillrect = cfb_fillrect,
> .fb_copyarea = cfb_copyarea,
> .fb_imageblit = cfb_imageblit,
> .fb_cursor = soft_cursor,
> #endif
>
> 3dfx framebuffer driver depends on "cfb_fillrect.c" and "cfb_copyarea.c"
> if it's compiled without CONFIG_FB_3DFX_ACCEL turned on...
>...

Your analysis is correct, but the following patch is a bit better since
it doesn't add a tdfxfb_lib:

Signed-off-by: Adrian Bunk <bunk@fs.tum.de>

--- linux-2.6.9-rc1-mm1-full/drivers/video/Makefile.old 2004-08-28 10:41:30.000000000 +0200
+++ linux-2.6.9-rc1-mm1-full/drivers/video/Makefile 2004-08-28 10:46:20.000000000 +0200
@@ -35,6 +35,9 @@
obj-$(CONFIG_FB_GBE) += gbefb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_SGIVW) += sgivwfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_3DFX) += tdfxfb.o cfbimgblt.o
+ifneq ($(CONFIG_FB_3DFX_ACCEL),y)
+ obj-$(CONFIG_FB_3DFX) += cfbfillrect.o cfbcopyarea.o
+endif
obj-$(CONFIG_FB_MAC) += macfb.o macmodes.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_HP300) += hpfb.o cfbfillrect.o cfbimgblt.o
obj-$(CONFIG_FB_OF) += offb.o cfbfillrect.o cfbimgblt.o cfbcopyarea.o