1 # This creates the demonstration utility "lguest" which runs a Linux guest.
3 # For those people that have a separate object dir, look there for .config
6 ifeq ("$(origin O)", "command line")
10 # We rely on CONFIG_PAGE_OFFSET to know where to put lguest binary.
11 include $(KBUILD_OUTPUT
)/.config
12 LGUEST_GUEST_TOP
:= ($(CONFIG_PAGE_OFFSET
) - 0x08000000)
14 CFLAGS
:=-Wall
-Wmissing-declarations
-Wmissing-prototypes
-O3
-Wl
,-T
,lguest.lds
16 # Removing this works for some versions of ld.so (eg. Ubuntu Feisty) and
17 # not others (eg. FC7).
19 all: lguest.lds lguest
21 # The linker script on x86 is so complex the only way of creating one
22 # which will link our binary in the right place is to mangle the
25 $(LD
) --verbose | awk
'/^==========/ { PRINT=1; next; } /SIZEOF_HEADERS/ { gsub(/0x[0-9A-F]*/, "$(LGUEST_GUEST_TOP)") } { if (PRINT) print $$0; }' > $@
28 rm -f lguest.lds lguest