0316e1a69f
Add the code necessary to create the linux trampoline blob. Don't enforce this for the in-coreboot build or use objcopy to produce linux_trampoline.o as it is a bit trickier to get all the details right than I had hoped: - you have to know the elf architecture of the host machine - you might have to have more tools (xxd, perl, etc) installed Change-Id: I9b7877c58d90f9fb21d16e0061a31e19fffa2470 Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: https://review.coreboot.org/12505 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
35 lines
1.1 KiB
Makefile
35 lines
1.1 KiB
Makefile
top ?= $(abspath ../..)
|
|
objutil ?= $(top)/util
|
|
|
|
CONFIG_FMD_GENPARSER := y
|
|
|
|
HOSTCC ?= $(CC)
|
|
OBJCOPY ?= objcopy
|
|
|
|
.PHONY: all
|
|
all: $(objutil)/cbfstool/cbfstool \
|
|
$(objutil)/cbfstool/fmaptool \
|
|
$(objutil)/cbfstool/rmodtool \
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) fmd_parser.c fmd_parser.h fmd_scanner.c fmd_scanner.h
|
|
$(RM) $(objutil)/cbfstool/cbfstool $(cbfsobj)
|
|
$(RM) $(objutil)/cbfstool/fmaptool $(fmapobj)
|
|
$(RM) $(objutil)/cbfstool/rmodtool $(rmodobj)
|
|
|
|
linux_trampoline.c: linux_trampoline.S
|
|
rm -f linux_trampoline.c
|
|
$(CC) -m32 -o linux_trampoline linux_trampoline.S -ffreestanding -nostdlib -nostdinc -Wl,--defsym=_start=0
|
|
$(OBJCOPY) -Obinary -j .data linux_trampoline trampoline
|
|
echo "/* This file is automatically generated. Do not manually change */" > trampoline.c
|
|
xxd -c 16 -i trampoline >> trampoline.c
|
|
perl -pi -e 's,unsigned int.*$$,,g;s,unsigned char,const unsigned char,g' trampoline.c
|
|
echo "const void * const trampoline_start = &trampoline;" >> trampoline.c
|
|
echo "const unsigned long trampoline_size = sizeof trampoline;" >> trampoline.c
|
|
mv trampoline.c linux_trampoline.c
|
|
rm linux_trampoline trampoline
|
|
|
|
.SILENT:
|
|
|
|
include Makefile.inc
|