From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MLznV-0006Yl-7X for qemu-devel@nongnu.org; Wed, 01 Jul 2009 09:24:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MLznQ-0006Ux-Hc for qemu-devel@nongnu.org; Wed, 01 Jul 2009 09:24:24 -0400 Received: from [199.232.76.173] (port=59894 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MLznQ-0006Uo-6i for qemu-devel@nongnu.org; Wed, 01 Jul 2009 09:24:20 -0400 Received: from mail-qy0-f191.google.com ([209.85.221.191]:60541) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MLznP-0001kA-5C for qemu-devel@nongnu.org; Wed, 01 Jul 2009 09:24:19 -0400 Received: by qyk29 with SMTP id 29so968913qyk.4 for ; Wed, 01 Jul 2009 06:24:13 -0700 (PDT) Message-ID: <4A4B637A.9070804@codemonkey.ws> Date: Wed, 01 Jul 2009 08:24:10 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] MINGW: Unable to link multiboot.img + strnlen missing References: <97c31bd80907010604n72803d55qb4b79fb2d42847ce@mail.gmail.com> In-Reply-To: <97c31bd80907010604n72803d55qb4b79fb2d42847ce@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bartlomiej Celary Cc: qemu-devel@nongnu.org, Alexander Graf Bartlomiej Celary wrote: > Hi, > I have recently updated my git snapshot and had 2 problems: > Thanks for the report. > 1. There is no strnlen function in MINGW (not sure if it has been > added recently as I might be using an outdated version...) > That should be easy enough to fix. Can you send a patch? > 2. I was not able to link multiboot.bin using mingw: > > for d in pc-bios/optionrom; do \ > make -C $d || exit 1 ; \ > done > make[1]: Entering directory `/home/abc024/work/qemu/pc-bios/optionrom' > gcc -o signrom -g -Wall signrom.c > gcc -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer > -fno-builtin -I/home/abc024/work/qemu -o multiboot.o -c multiboot.S > ld --oformat binary -Ttext 0 -o multiboot.img multiboot.o > D:\mingw\bin\ld.exe: cannot perform PE operations on non PE output > file 'multiboot.img'. > make[1]: *** [multiboot.img] Error 1 > rm multiboot.o > make[1]: Leaving directory `/home/abc024/work/qemu/pc-bios/optionrom' > make: *** [roms] Error 1 > > And it looks that this workaround did the trick: > > diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile > old mode 100644 > new mode 100755 > index c4a6f42..f414eba > --- a/pc-bios/optionrom/Makefile > +++ b/pc-bios/optionrom/Makefile > @@ -34,8 +34,14 @@ build-all: multiboot.bin > %.o: %.S > $(CC) $(CFLAGS) -o $@ -c $< > > -%.img: %.o > - $(LD) --oformat binary -Ttext 0 -o $@ $< > +%.img: %.out > + $(OBJCOPY) -O binary -j .text $< $@ > + > +%.out: %.o > + $(LD) -Ttext 0 -e _start -s -o $@ $< > > %.bin: %.img signrom > ./signrom $< $@ > > Obviously objcopy needs to be defined in the config.mak file. > I'm not sure I understand why this works, but if you resubmit the patch with a Signed-off-by, we can apply it. It's unfortunate that we need to do the signrom step now that I think about it as it's bad for cross-compilation. Maybe we should sign anything without a checksum when doing option rom loading. What do you think Alex? Regards, Anthony Liguori > Regards, > Bartek Celary > > >