2001-03-08 00:13:50

by Akihiro Matsushima

[permalink] [raw]
Subject: Can't compile 2.4.2-ac14

Hello,
I receive the following error with make bzImage:

i386_ksyms.c:170: `do_BUG' undeclared here (not in a function)
i386_ksyms.c:170: initializer element is not constant
i386_ksyms.c:170: (near initialization for `__ksymtab_do_BUG.value')
make[1]: *** [i386_ksyms.o] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.2-ac14/arch/i386/kernel'
make: *** [_dir_arch/i386/kernel] Error 2


Regards,
Akihiro


2001-03-08 00:44:51

by Alan

[permalink] [raw]
Subject: Re: Can't compile 2.4.2-ac14

> Hello,
> I receive the following error with make bzImage:
>
> i386_ksyms.c:170: `do_BUG' undeclared here (not in a function)
> i386_ksyms.c:170: initializer element is not constant
> i386_ksyms.c:170: (near initialization for `__ksymtab_do_BUG.value')
> make[1]: *** [i386_ksyms.o] Error 1
> make[1]: Leaving directory `/usr/src/linux-2.4.2-ac14/arch/i386/kernel'
> make: *** [_dir_arch/i386/kernel] Error 2

Change it to

#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
#endif

sorry

2001-03-08 00:59:11

by J.A. Magallon

[permalink] [raw]
Subject: [PATCH] Re: Can't compile 2.4.2-ac14


On 03.08 MATSUSHIMA Akihiro wrote:
> Hello,
> I receive the following error with make bzImage:
>
> i386_ksyms.c:170: `do_BUG' undeclared here (not in a function)
> i386_ksyms.c:170: initializer element is not constant
> i386_ksyms.c:170: (near initialization for `__ksymtab_do_BUG.value')
> make[1]: *** [i386_ksyms.o] Error 1
> make[1]: Leaving directory `/usr/src/linux-2.4.2-ac14/arch/i386/kernel'
> make: *** [_dir_arch/i386/kernel] Error 2
>

Try this:

--- linux-2.4.2-ac14/arch/i386/mm/fault.c.orig Thu Mar 8 01:26:47 2001
+++ linux-2.4.2-ac14/arch/i386/mm/fault.c Thu Mar 8 01:27:10 2001
@@ -110,11 +110,13 @@
}
}

+#ifdef CONFIG_DEBUG_BUGVERBOSE
void do_BUG(const char *file, int line)
{
bust_spinlocks(1);
printk("kernel BUG at %s:%d!\n", file, line);
}
+#endif

asmlinkage void do_invalid_op(struct pt_regs *, unsigned long);
extern unsigned long idt;
--- linux-2.4.2-ac14/arch/i386/kernel/i386_ksyms.c.orig Thu Mar 8
01:27:56 2001
+++ linux-2.4.2-ac14/arch/i386/kernel/i386_ksyms.c Thu Mar 8 01:28:13
2001
@@ -167,5 +167,7 @@
EXPORT_SYMBOL(empty_zero_page);
#endif

+#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
+#endif


--
J.A. Magallon $> cd pub
mailto:[email protected] $> more beer

Linux werewolf 2.4.2-ac13 #3 SMP Wed Mar 7 00:09:17 CET 2001 i686

2001-03-08 01:10:11

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Re: Can't compile 2.4.2-ac14

"J . A . Magallon" wrote:
>
> Try this:

This is the better fix.

I apologise for this stuff-up.

-

2001-03-08 18:26:15

by Hugh Dickins

[permalink] [raw]
Subject: Re: [PATCH] Re: Can't compile 2.4.2-ac14

On Thu, 8 Mar 2001, Andrew Morton wrote:
> "J . A . Magallon" wrote:
> > Try this:
> This is the better fix.

I'm interested in the thinking here (because I tend the other way).

With J.A.M.'s patch blessed by Andrew, #ifdef CONFIG_DEBUG_BUGVERBOSE
goes around do_BUG() in fault.c, around its extern declaration in
page.h, and around its export in i386_ksyms.c. Which stops compiling
do_BUG() into an ndef CONFIG_DEBUG_BUGVERBOSE kernel.

But I have an interest in compiling (some) modules once to run with
different configurations of base kernel - and I'd expect the makers
of Linux distributions to have a similar interest. Just how many
versions of a driver do you need to build for your distribution?

My main concern is to let modules be independent of HIGHMEM config:
to which end I'd like one day (not imminent) to submit a patch in
which even CONFIG_NOHIGHMEM kernel would have stubs for kmap_high()
and kunmap_high(), to allow CONFIG_HIGHMEM modules to be linked in.

Of course there's a limit to how far such a programme should go,
but I don't think we should add CONFIG obstacles so cheaply avoided.
I'd prefer a module built with CONFIG_DEBUG_BUGVERBOSE to link into
a kernel built without CONFIG_DEBUG_BUGVERBOSE i.e. source as in -ac14,
but the #ifdef CONFIG_DEBUG_BUGVERBOSE moved down one line in page.h.

Am I a heretic?

Hugh