Package: kvmtool Version: 0.20160419-1 Severity: important Tags: sid + patch Justification: FTBFS User: [email protected] Usertags: mips-patch
Package kvmtool FTBFS for mips64el with the following error: > LINK lkvm > /usr/bin/ld: guest/guest_init.o: warning: linking abicalls files with > non-abicalls files > /usr/bin/ld: guest/guest_init.o: linking 32-bit code with 64-bit code > /usr/bin/ld: failed to merge target specific data of file guest/guest_init.o > collect2: error: ld returned 1 exit status > Makefile:381: recipe for target 'lkvm' failed > make[1]: *** [lkvm] Error 1 Full build log: https://buildd.debian.org/status/fetch.php?pkg=kvmtool&arch=mips64el&ver=0.20160419-1&stamp=1463209003 The reason for that is behaviour is the way of creation guest_init.o. > ld -r -b binary -o guest/guest_init.o guest/init Resulting file is "MIPS-I" instead of expected "MIPS64 rel2". > file guest/guest_init.o.cp > guest/guest_init.o.cp: ELF 64-bit LSB relocatable, MIPS, MIPS-I version 1 > (SYSV), not stripped If options "-r -b binary" are used, linker will ignore flags of input file "Flags: 0x80000006, pic, cpic, mips64r2", and flags of resulting guest_init.o file will be "Flags: 0x0". Solution for this issue could be using different method for creation guest_init.o. If xxd and gcc are used instead of ld, resulting file will have regular flags. > xxd -i guest/init | $(CC) -c -x c - -o guest/guest_init.o Here are proposed changes for this issue. http://www.spinics.net/lists/kvm/msg118016.html I have created a patch that fixes this issue modeled on mentioned solution. Using this patch I was able to build kvmtool for mips64el, mipsel, i386, amd64. The patch is attached. Could you please consider including this patch.
--- kvmtool-0.20160419.orig/Makefile +++ kvmtool-0.20160419/Makefile @@ -395,8 +395,7 @@ endif $(GUEST_INIT): guest/init.c $(E) " LINK " $@ $(Q) $(CC) $(GUEST_INIT_FLAGS) guest/init.c -o $@ - $(Q) $(LD) -r -b binary -o guest/guest_init.o $(GUEST_INIT) - + $(Q) xxd -i $@ | $(CC) -c -x c - -o guest/guest_init.o %.s: %.c $(Q) $(CC) -o $@ -S $(CFLAGS) -fverbose-asm $< --- kvmtool-0.20160419.orig/builtin-setup.c +++ kvmtool-0.20160419/builtin-setup.c @@ -146,8 +146,8 @@ static int extract_file(const char *gues return 0; } -extern char _binary_guest_init_start; -extern char _binary_guest_init_size; +extern char guest_init; +extern char guest_init_len; extern char _binary_guest_pre_init_start; extern char _binary_guest_pre_init_size; @@ -163,8 +163,8 @@ int kvm_setup_guest_init(const char *gue return err; #endif err = extract_file(guestfs_name, "virt/init", - &_binary_guest_init_start, - &_binary_guest_init_size); + &guest_init, + &guest_init_len); return err; } #else

