Re: 2.5.14-dj1: misc.o: undefined reference to `__io_virt_debug'

From: Brian Gerst (bgerst@didntduck.org)
Date: Tue May 07 2002 - 17:43:54 EST


Martin J. Bligh wrote:
>>>>Compiling misc.c with -O0 gives a better error message:
>>>>
>>>><-- snip -->
>>>>
>>>>...
>>>>ld -m elf_i386 -Ttext 0x100000 -e startup_32 -o bvmlinux head.o misc.o
>>>>piggy.o
>>>>misc.o: In function `outb_quad':
>>>>misc.o(.text+0x289c): undefined reference to `__io_virt_debug'
>>>>make[2]: *** [bvmlinux] Error 1
>>>>make[2]: Leaving directory
>>>>`/home/bunk/linux/kernel-2.5/linux-2.5.14-modular/arch/i386/boot/compressed'
>>>
>>>Seems like you're not linking in lib/iodebug.c for some reason.
>>>
>>>outb_quad calls readb, which calls __io_virt, which calls __io_virt_debug,
>>>which is defined in iodebug.c
>>
>>It's in the boot decompression code, before any of that stuff is
>>available. I'm working on a patch.
>
>
> Is this arch/i386/boot/compressed/misc.c ?
> I can't see how it would be doing outb_quad, and even if it was, it
> would be totally pointless, as xquad_portio isn't set yet ....
>
> M.
>

This patch fixes the compile problem, but I'm not quite convinced it's
the best solution. The decompressor is a completely seperate
environment from the kernel, so including kernel headers continues to
invite problems like this in the future.

-- 

Brian Gerst

diff -urN linux-2.5.14-dj1/arch/i386/boot/compressed/misc.c linux/arch/i386/boot/compressed/misc.c --- linux-2.5.14-dj1/arch/i386/boot/compressed/misc.c Thu Mar 7 21:18:54 2002 +++ linux/arch/i386/boot/compressed/misc.c Tue May 7 18:04:08 2002 @@ -124,10 +124,6 @@ static int vidport; static int lines, cols; -#ifdef CONFIG_MULTIQUAD -static void *xquad_portio = NULL; -#endif - #include "../../../../lib/inflate.c" static void *malloc(int size) @@ -202,10 +198,10 @@ SCREEN_INFO.orig_y = y; pos = (x + cols * y) * 2; /* Update cursor position */ - outb_p(14, vidport); - outb_p(0xff & (pos >> 9), vidport+1); - outb_p(15, vidport); - outb_p(0xff & (pos >> 1), vidport+1); + outb_local(14, vidport); slow_down_io(); + outb_local(0xff & (pos >> 9), vidport+1); slow_down_io(); + outb_local(15, vidport); slow_down_io(); + outb_local(0xff & (pos >> 1), vidport+1); slow_down_io(); } static void* memset(void* s, int c, size_t n)

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue May 07 2002 - 22:00:31 EST