« Previous | Next » 

Revision ff56954b

IDff56954baf9cfab5cbbe18d10b4a09e4a17f39a8

Added by Juergen Lock over 11 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
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 $
+
%.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 <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences