lkml.org 
[lkml]   [2002]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.5.14-dj1: misc.o: undefined reference to `__io_virt_debug'
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)
\
 
 \ /
  Last update: 2005-03-22 13:25    [W:0.032 / U:2.320 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site