Re: [build bug] lguest build failure: drivers/lguest/x86/switcher_32.S:(.text+0x3815f8): undefined reference to `LGUEST_PAGES_regs_trapnum'

Sergio Luis
2008-02-18T01:30:06Z

Sergio Luis wrote:
> Christian Kujau wrote:
>> On Sun, 17 Feb 2008, Sergio Luis wrote:
>>> It doesn't fix the problem totally. If we select
>>> Virtualization->Linux hypervisor example code (CONFIG_LGUEST)
>>> as a module, we will get the same build errors,
>> Confirmed, the build errors persist with CONFIG_LGUEST=m and Rusty's
>> patch applied.
>>
>> thanks,
>> Christian.
>
> This will make sure CONFIG_LGUEST is set when building the linux hypervisor example code as both module and built-in,
> so that the LGUEST_* offsets will be generated for both cases in asm-offset.h.
> I am sure you guys will have a better way to fix this, but anyway...
> -sergio
>
> --- linux-2.6.25-rc2.orig/drivers/lguest/Kconfig 2008-02-16 23:21:29.000000000 -0300
> +++ linux-2.6.25-rc2/drivers/lguest/Kconfig 2008-02-17 21:44:57.000000000 -0300
> @@ -1,7 +1,17 @@
> config LGUEST
> - tristate "Linux hypervisor example code"
> + bool "Linux hypervisor"
> depends on X86_32 && EXPERIMENTAL && !X86_PAE && FUTEX && !(X86_VISWS || X86_VOYAGER)
> + default y
> + ---help---
> + This allows you to select the linux hypervisor example code.
> +
> +if LGUEST
> +
> +config LGUEST_HYPERVISOR
> + tristate "Linux hypervisor example code"
> + depends on LGUEST
> select HVC_DRIVER
> + default m
> ---help---
> This is a very simple module which allows you to run
> multiple instances of the same Linux kernel, using the
> @@ -10,3 +20,5 @@
> not "rustyvisor". See Documentation/lguest/lguest.txt.
>
> If unsure, say N. If curious, say M. If masochistic, say Y.
> +
> +endif # LGUEST
>
oops. sorry, I just realized I missed the makefile part. I changed the config symbol to CONFIG_LGUEST_HYPERVISOR so I should change it on the makefile as well.
reposting an updated patch for testing:
-sergio

lguest: makes sure CONFIG_LGUEST is defined when building it as a module and built-in into the kernel.

This will make sure CONFIG_LGUEST is set when building the linux hypervisor example code as both module and built-in,
so that the LGUEST_* offsets will be generated for both cases in asm-offset.h.

Signed-off-by: Sergio Luis <sergio@larces.uece.br>

Kconfig | 14 +++++++++++++-
Makefile | 2 +-
2 files changed, 14 insertions(+), 2 deletions(-)

diff -urN linux-2.6.25-rc2.orig/drivers/lguest/Kconfig linux-2.6.25-rc2/drivers/lguest/Kconfig
--- linux-2.6.25-rc2.orig/drivers/lguest/Kconfig 2008-02-16 23:21:29.000000000 -0300
+++ linux-2.6.25-rc2/drivers/lguest/Kconfig 2008-02-17 21:44:57.000000000 -0300
@@ -1,7 +1,17 @@
config LGUEST
- tristate "Linux hypervisor example code"
+ bool "Linux hypervisor"
depends on X86_32 && EXPERIMENTAL && !X86_PAE && FUTEX && !(X86_VISWS || X86_VOYAGER)
+ default y
+ ---help---
+ This allows you to select the linux hypervisor example code.
+
+if LGUEST
+
+config LGUEST_HYPERVISOR
+ tristate "Linux hypervisor example code"
+ depends on LGUEST
select HVC_DRIVER
+ default m
---help---
This is a very simple module which allows you to run
multiple instances of the same Linux kernel, using the
@@ -10,3 +20,5 @@
not "rustyvisor". See Documentation/lguest/lguest.txt.

If unsure, say N. If curious, say M. If masochistic, say Y.
+
+endif # LGUEST
diff -urN linux-2.6.25-rc2.orig/drivers/lguest/Makefile linux-2.6.25-rc2/drivers/lguest/Makefile
--- linux-2.6.25-rc2.orig/drivers/lguest/Makefile 2008-02-16 23:21:29.000000000 -0300
+++ linux-2.6.25-rc2/drivers/lguest/Makefile 2008-02-17 22:21:53.000000000 -0300
@@ -2,7 +2,7 @@
obj-$(CONFIG_LGUEST_GUEST) += lguest_device.o

# Host requires the other files, which can be a module.
-obj-$(CONFIG_LGUEST) += lg.o
+obj-$(CONFIG_LGUEST_HYPERVISOR) += lg.o
lg-y = core.o hypercalls.o page_tables.o interrupts_and_traps.o \
segments.o lguest_user.o