mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/build: Don't convert boot/{cmdline,head}.bin back to .S
There's no point wasting time converting binaries back to asm source. Just use .incbin directly. Explain in head.S what these binaries are. Also, explicitly align the blobs. They contain 4-byte objects, and happen to be 4-byte aligned currently because of the position of `lret` and the size of cmdline.S but this is incredibly fragile. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
1af4e0189f
commit
1ab7c128d9
2 files changed
+11
-11
No files matched your search
@@ -7,10 +7,8 @@ targets += $(head-srcs:.S=.o)
|
||||
|
||||
head-srcs := $(addprefix $(obj)/, $(head-srcs))
|
||||
|
||||
ifdef building_out_of_srctree
|
||||
$(obj)/head.o: CFLAGS-y += -iquote $(obj)
|
||||
endif
|
||||
$(obj)/head.o: $(head-srcs)
|
||||
$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
|
||||
$(obj)/head.o: $(head-srcs:.S=.bin)
|
||||
|
||||
CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
|
||||
$(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
|
||||
@@ -27,14 +25,10 @@ $(head-srcs:.S=.o): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
|
||||
LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
|
||||
LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
|
||||
|
||||
$(head-srcs): %.S: %.bin
|
||||
(od -v -t x $< | tr -s ' ' | awk 'NR > 1 {print s} {s=$$0}' | \
|
||||
sed 's/ /,0x/g' | sed 's/,0x$$//' | sed 's/^[0-9]*,/ .long /') >$@
|
||||
|
||||
%.bin: %.lnk
|
||||
$(OBJCOPY) -j .text -O binary $< $@
|
||||
|
||||
%.lnk: %.o $(src)/build32.lds
|
||||
$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
|
||||
|
||||
clean-files := cmdline.S reloc.S *.lnk *.bin
|
||||
clean-files := *.lnk *.bin
|
||||
@@ -777,11 +777,17 @@ trampoline_setup:
|
||||
/* Jump into the relocated trampoline. */
|
||||
lret
|
||||
|
||||
/*
|
||||
* cmdline and reloc are written in C, and linked to be 32bit PIC with
|
||||
* entrypoints at 0 and using the stdcall convention.
|
||||
*/
|
||||
ALIGN
|
||||
cmdline_parse_early:
|
||||
#include "cmdline.S"
|
||||
.incbin "cmdline.bin"
|
||||
|
||||
ALIGN
|
||||
reloc:
|
||||
#include "reloc.S"
|
||||
.incbin "reloc.bin"
|
||||
|
||||
ENTRY(trampoline_start)
|
||||
#include "trampoline.S"
|
||||
|
||||