« Previous | Next » 

Revision ff56954b


Added by Juergen Lock over 13 years ago

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

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,
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 += $(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 $
%.img: %.o
$(call quiet-command,$(LD) -Ttext 0 -e _start -s -o $
$<," Building $(TARGET_DIR)$@")

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 <>


  • added
  • modified
  • copied
  • renamed
  • deleted

View differences