6570c45995
S.Caglar Onur points out that many distributions don't ship a static zlib. Unfortunately the launcher currently maps virtual device memory where shared libraries want to go. The solution is to pre-scan the args to figure out how much memory we have, then allocate devices above that, rather than down from the top possible address. This also turns out to be simpler. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
27 lines
886 B
Makefile
27 lines
886 B
Makefile
# This creates the demonstration utility "lguest" which runs a Linux guest.
|
|
|
|
# For those people that have a separate object dir, look there for .config
|
|
KBUILD_OUTPUT := ../..
|
|
ifdef O
|
|
ifeq ("$(origin O)", "command line")
|
|
KBUILD_OUTPUT := $(O)
|
|
endif
|
|
endif
|
|
# We rely on CONFIG_PAGE_OFFSET to know where to put lguest binary.
|
|
include $(KBUILD_OUTPUT)/.config
|
|
LGUEST_GUEST_TOP := ($(CONFIG_PAGE_OFFSET) - 0x08000000)
|
|
|
|
CFLAGS:=-Wall -Wmissing-declarations -Wmissing-prototypes -O3 -Wl,-T,lguest.lds
|
|
LDLIBS:=-lz
|
|
|
|
all: lguest.lds lguest
|
|
|
|
# The linker script on x86 is so complex the only way of creating one
|
|
# which will link our binary in the right place is to mangle the
|
|
# default one.
|
|
lguest.lds:
|
|
$(LD) --verbose | awk '/^==========/ { PRINT=1; next; } /SIZEOF_HEADERS/ { gsub(/0x[0-9A-F]*/, "$(LGUEST_GUEST_TOP)") } { if (PRINT) print $$0; }' > $@
|
|
|
|
clean:
|
|
rm -f lguest.lds lguest
|