Revision ff56954b
ID | ff56954baf9cfab5cbbe18d10b4a09e4a17f39a8 |
multiboot.S patch for old as(1) (was: Re: [Qemu-devel] Some OpenBSD/amd64 build fixes)
On Wed, Sep 23, 2009 at 10:55:02PM +0200, Juergen Lock wrote:
On Wed, Sep 23, 2009 at 09:31:16PM +0100, Laurence Tratt wrote:
[...]then the above error doesn't occur, but
pc-bios/optionrom/multiboot.S dies as follows:$
AS optionrom/multiboot.o
multiboot.S: Assembler messages:
multiboot.S:116: Error: `%es:-4(%edi)' is not a valid 16 bit base/index
expression
$What little Intel assembler I ever knew has long since departed from my
brain, so I don't know why that error occurs, nor what a fix might be.It occurs because of too old binutils (as(1) in this case), on FreeBSD
we now have a port for newer ones,
http://www.freshports.org/devel/binutils
so I depend on that and have the optionrom Makefile use the new as
like this: (the first change wrt CFLAGS is unrelated and has probably
been fixed in the meantime; it caused gmake to complain about
recursive use of CFLAGS.)Index: qemu/pc-bios/optionrom/Makefile
@ -9,10 +9,13
@CFLAGS = -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin
CFLAGS += -I$(SRC_PATH)
-CFLAGS += $(call cc-option, $(CFLAGS), -fno-stack-protector,"")
+CFLAGS := $(CFLAGS) $(call cc-option, $(CFLAGS), -fno-stack-protector,"")build-all: multiboot.bin
%.o: %.S
$(CC) -E $(CFLAGS) -o - -c $< |${LOCALBASE}/bin/as -V -Qy -o $$<," Building $(TARGET_DIR)$@")
+
%.img: %.o
$(call quiet-command,$(LD) -Ttext 0 -e _start -s -o $
That patch didn't seem to help on OpenBSD so I now finally got around
making another one that just emits the bytes of the offending insn
instead so people can keep using old assemblers:
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Files
- added
- modified
- copied
- renamed
- deleted