[kvm-unit-tests PATCH v2 1/2] powerpc: allow to build big-endian binaries on little-endian host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



boot_rom will be always big endian (like SLOF is).
Make the endianness of the test files configurable with
arch_CFLAGS and arch_LDFLAGS.

For the moment, this only works with big endian.

Of course, once build on a little endian host, these binaries
can be used on the little endian host to test the
big endian mode of KVM.

Signed-off-by: Laurent Vivier <lvivier@xxxxxxxxxx>
---
 configure               |  2 +-
 powerpc/Makefile.common | 13 ++++++-------
 powerpc/Makefile.ppc64  |  3 +++
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/configure b/configure
index 7d5702e..a685cca 100755
--- a/configure
+++ b/configure
@@ -7,7 +7,7 @@ ld=ld
 objcopy=objcopy
 objdump=objdump
 ar=ar
-arch=`uname -m | sed -e s/i.86/i386/ | sed -e 's/arm.*/arm/'`
+arch=`uname -m | sed -e 's/i.86/i386/;s/arm.*/arm/;s/ppc64.*/ppc64/'`
 host=$arch
 cross_prefix=
 
diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common
index cad728e..cc27ac8 100644
--- a/powerpc/Makefile.common
+++ b/powerpc/Makefile.common
@@ -11,6 +11,7 @@ all: $(TEST_DIR)/boot_rom.bin test_cases
 
 ##################################################################
 
+CFLAGS += $(arch_CFLAGS)
 CFLAGS += -std=gnu99
 CFLAGS += -ffreestanding
 CFLAGS += -Wextra
@@ -30,13 +31,11 @@ cflatobjs += lib/powerpc/hcall.o
 cflatobjs += lib/powerpc/setup.o
 cflatobjs += lib/powerpc/rtas.o
 
-libgcc := $(shell $(CC) $(machine) --print-libgcc-file-name)
-
-FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc)
-%.elf: LDFLAGS = $(CFLAGS) -nostdlib -pie
+FLATLIBS = $(libcflat) $(LIBFDT_archive)
+%.elf: LDFLAGS = $(arch_LDFLAGS) -nostdlib -pie
 %.elf: %.o $(FLATLIBS) powerpc/flat.lds
-	$(CC) $(LDFLAGS) -o $@ \
-		-Wl,-T,powerpc/flat.lds,--build-id=none \
+	$(LD) $(LDFLAGS) -o $@ \
+	      -T powerpc/flat.lds --build-id=none \
 		$(filter %.o, $^) $(FLATLIBS)
 	@echo -n Checking $@ for unsupported reloc types...
 	@if $(OBJDUMP) -R $@ | grep R_ | grep -v R_PPC64_RELATIVE; then	\
@@ -50,7 +49,7 @@ $(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf
 	$(OBJCOPY) -O binary $^ >(cat - >>$@)
 
 $(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o
-	$(LD) -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
+	$(LD) -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
 
 powerpc_clean: libfdt_clean asm_offsets_clean
 	$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
diff --git a/powerpc/Makefile.ppc64 b/powerpc/Makefile.ppc64
index 899dd5e..1cf277e 100644
--- a/powerpc/Makefile.ppc64
+++ b/powerpc/Makefile.ppc64
@@ -6,6 +6,9 @@
 bits = 64
 ldarch = elf64-powerpc
 
+arch_CFLAGS = -mbig-endian
+arch_LDFLAGS = -EB
+
 cstart.o = $(TEST_DIR)/cstart64.o
 reloc.o  = $(TEST_DIR)/reloc64.o
 cflatobjs += lib/ppc64/spinlock.o
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux