tests/migration: Support cross compilation in generating boot header file
Recently a new configure option, CROSS_CC_GUEST, was added to $(TARGET)-softmmu/config-target.mak to support TCG-related tests. This patch tries to leverage this option to support cross compilation when the migration boot block file is being re-generated: * The x86 related files are moved to a new sub-dir (named ./i386). * A new top-layer Makefile is created in tests/migration/ directory. This Makefile searches and parses CROSS_CC_GUEST to generate CROSS_PREFIX. The CROSS_PREFIX, if available, is then passed to migration/$ARCH/Makefile. Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Wei Huang <wei@redhat.com> Message-Id: <1536174934-26022-3-git-send-email-wei@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
fe73077401
commit
d54927efdc
|
@ -83,7 +83,7 @@ static const char *tmpfs;
|
||||||
/* A simple PC boot sector that modifies memory (1-100MB) quickly
|
/* A simple PC boot sector that modifies memory (1-100MB) quickly
|
||||||
* outputting a 'B' every so often if it's still running.
|
* outputting a 'B' every so often if it's still running.
|
||||||
*/
|
*/
|
||||||
#include "tests/migration/x86-a-b-bootblock.h"
|
#include "tests/migration/i386/a-b-bootblock.h"
|
||||||
|
|
||||||
static void init_bootfile_x86(const char *bootpath)
|
static void init_bootfile_x86(const char *bootpath)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,31 +1,35 @@
|
||||||
# To specify cross compiler prefix, use CROSS_PREFIX=
|
#
|
||||||
# $ make CROSS_PREFIX=x86_64-linux-gnu-
|
# Copyright (c) 2018 Red Hat, Inc. and/or its affiliates
|
||||||
|
#
|
||||||
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
# See the COPYING file in the top-level directory.
|
||||||
|
#
|
||||||
|
|
||||||
|
TARGET_LIST = i386
|
||||||
|
|
||||||
|
SRC_PATH = ../..
|
||||||
|
|
||||||
override define __note
|
override define __note
|
||||||
/* This file is automatically generated from
|
/* This file is automatically generated from the assembly file in
|
||||||
* tests/migration/x86-a-b-bootblock.S, edit that and then run
|
* tests/migration/$@. Edit that file and then run "make all"
|
||||||
* tests/migration/rebuild-x86-bootblock.sh to update,
|
* inside tests/migration to update, and then remember to send both
|
||||||
* and then remember to send both in your patch submission.
|
* the header and the assembler differences in your patch submission.
|
||||||
*/
|
*/
|
||||||
endef
|
endef
|
||||||
export __note
|
export __note
|
||||||
|
|
||||||
.PHONY: all clean
|
find-arch-cross-cc = $(lastword $(shell grep -h "CROSS_CC_GUEST=" $(wildcard $(SRC_PATH)/$(patsubst i386,*86*,$(1))-softmmu/config-target.mak) /dev/null))
|
||||||
all: x86-a-b-bootblock.h
|
parse-cross-prefix = $(subst gcc,,$(patsubst cc,gcc,$(patsubst CROSS_CC_GUEST="%",%,$(call find-arch-cross-cc,$(1)))))
|
||||||
|
gen-cross-prefix = $(patsubst %-,CROSS_PREFIX=%-,$(call parse-cross-prefix,$(1)))
|
||||||
|
|
||||||
x86-a-b-bootblock.h: x86.bootsect
|
.PHONY: all $(TARGET_LIST)
|
||||||
echo "$$__note" > header.tmp
|
|
||||||
xxd -i $< | sed -e 's/.*int.*//' >> header.tmp
|
|
||||||
mv header.tmp $@
|
|
||||||
|
|
||||||
x86.bootsect: x86.boot
|
all: $(TARGET_LIST)
|
||||||
dd if=$< of=$@ bs=256 count=2 skip=124
|
|
||||||
|
|
||||||
x86.boot: x86.o
|
$(TARGET_LIST):
|
||||||
$(CROSS_PREFIX)objcopy -O binary $< $@
|
$(MAKE) -C $@ $(call gen-cross-prefix,$@)
|
||||||
|
|
||||||
x86.o: x86-a-b-bootblock.S
|
|
||||||
$(CROSS_PREFIX)gcc -m32 -march=i486 -c $< -o $@
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -rf *.boot *.o *.bootsect
|
for target in $(TARGET_LIST); do \
|
||||||
|
$(MAKE) -C $$target clean; \
|
||||||
|
done
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# To specify cross compiler prefix, use CROSS_PREFIX=
|
||||||
|
# $ make CROSS_PREFIX=x86_64-linux-gnu-
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
all: a-b-bootblock.h
|
||||||
|
|
||||||
|
a-b-bootblock.h: x86.bootsect
|
||||||
|
echo "$$__note" > header.tmp
|
||||||
|
xxd -i $< | sed -e 's/.*int.*//' >> header.tmp
|
||||||
|
mv header.tmp $@
|
||||||
|
|
||||||
|
x86.bootsect: x86.boot
|
||||||
|
dd if=$< of=$@ bs=256 count=2 skip=124
|
||||||
|
|
||||||
|
x86.boot: x86.o
|
||||||
|
$(CROSS_PREFIX)objcopy -O binary $< $@
|
||||||
|
|
||||||
|
x86.o: a-b-bootblock.S
|
||||||
|
$(CROSS_PREFIX)gcc -m32 -march=i486 -c $< -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@rm -rf *.boot *.o *.bootsect
|
|
@ -3,10 +3,6 @@
|
||||||
# range.
|
# range.
|
||||||
# Outputs an initial 'A' on serial followed by repeated 'B's
|
# Outputs an initial 'A' on serial followed by repeated 'B's
|
||||||
#
|
#
|
||||||
# run tests/migration/rebuild-x86-bootblock.sh
|
|
||||||
# to regenerate the hex, and remember to include both the .h and .s
|
|
||||||
# in any patches.
|
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates
|
# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates
|
||||||
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
# See the COPYING file in the top-level directory.
|
# See the COPYING file in the top-level directory.
|
|
@ -1,7 +1,7 @@
|
||||||
/* This file is automatically generated from
|
/* This file is automatically generated from the assembly file in
|
||||||
* tests/migration/x86-a-b-bootblock.s, edit that and then run
|
* tests/migration/i386. Edit that file and then run "make all"
|
||||||
* tests/migration/rebuild-x86-bootblock.sh to update,
|
* inside tests/migration to update, and then remember to send both
|
||||||
* and then remember to send both in your patch submission.
|
* the header and the assembler differences in your patch submission.
|
||||||
*/
|
*/
|
||||||
unsigned char x86_bootsect[] = {
|
unsigned char x86_bootsect[] = {
|
||||||
0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
|
0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
|
Loading…
Reference in New Issue