On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow SeaBIOS to fetch the emulation to use from the environment variables.
This allows SeaBIOS to compile on FreeBSD with gcc.
Signed-off-by: Roger Pau Monné roger.pau@citrix.com Cc: Ian Campbell ian.campbell@citrix.com --- Changes in v2: - Rebase on top of master --- Makefile | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index e567ba1..4338f94 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ STRIP=$(CROSS_PREFIX)strip PYTHON=python CPP=cpp IASL:=iasl +LD32BIT_FLAG:=-melf_i386
# Source files SRCBOTH=misc.c stacks.c output.c string.c x86.c block.c cdrom.c mouse.c kbd.c \ @@ -154,8 +155,8 @@ $(OUT)romlayout16.lds: $(OUT)ccode32flat.o $(OUT)code32seg.o $(OUT)ccode16.o $(O @echo " Building ld scripts" $(Q)./scripts/buildversion.sh $(OUT)version.c $(Q)$(CC) $(CFLAGS32FLAT) -c $(OUT)version.c -o $(OUT)version.o - $(Q)$(LD) -melf_i386 -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o - $(Q)$(LD) -melf_i386 -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o + $(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o + $(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o $(Q)$(OBJDUMP) -thr $(OUT)code32flat.o > $(OUT)code32flat.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code32seg.o > $(OUT)code32seg.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code16.o > $(OUT)code16.o.objdump
On Wed, 2014-04-16 at 09:14 +0200, Roger Pau Monne wrote:
On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow SeaBIOS to fetch the emulation to use from the environment variables.
This allows SeaBIOS to compile on FreeBSD with gcc.
Signed-off-by: Roger Pau Monné roger.pau@citrix.com Cc: Ian Campbell ian.campbell@citrix.com
Since you CCd me, FWIW: Acked-by: Ian Campbell ian.campbell@citrix.com
Changes in v2:
- Rebase on top of master
Makefile | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index e567ba1..4338f94 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ STRIP=$(CROSS_PREFIX)strip PYTHON=python CPP=cpp IASL:=iasl +LD32BIT_FLAG:=-melf_i386
# Source files SRCBOTH=misc.c stacks.c output.c string.c x86.c block.c cdrom.c mouse.c kbd.c \ @@ -154,8 +155,8 @@ $(OUT)romlayout16.lds: $(OUT)ccode32flat.o $(OUT)code32seg.o $(OUT)ccode16.o $(O @echo " Building ld scripts" $(Q)./scripts/buildversion.sh $(OUT)version.c $(Q)$(CC) $(CFLAGS32FLAT) -c $(OUT)version.c -o $(OUT)version.o
- $(Q)$(LD) -melf_i386 -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o
- $(Q)$(LD) -melf_i386 -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o
- $(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o
- $(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o $(Q)$(OBJDUMP) -thr $(OUT)code32flat.o > $(OUT)code32flat.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code32seg.o > $(OUT)code32seg.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code16.o > $(OUT)code16.o.objdump
2014-04-16 9:14 GMT+02:00 Roger Pau Monne roger.pau@citrix.com:
On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow SeaBIOS to fetch the emulation to use from the environment variables.
This allows SeaBIOS to compile on FreeBSD with gcc.
+LD32BIT_FLAG:=-melf_i386
That will not work, see below for proof.
With your patch applied, on FreeBSD 10.0-RELEASE and gcc 4.7.3 installed from ports:
Building ld scripts ./scripts/buildversion.sh out/version.c Version: rel-1.7.4-86-g028f348-dirty-20140416_140430-machete gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-stack-protector -DMODE16=0 -DMODESEGMENT=0 -fomit-frame-pointer -c out/version.c -o out/version.o ld -melf_i386 -r out/ccode32flat.o out/version.o -o out/code32flat.o ld: unrecognised emulation mode: elf_i386 Supported emulations: elf_x86_64_fbsd elf_i386_fbsd gmake: *** [out/romlayout16.lds] Error 1
With 'LD32BIT_FLAG:=-melf_i386_fbsd':
Building ld scripts ./scripts/buildversion.sh out/version.c Version: rel-1.7.4-86-g028f348-dirty-20140416_140652-machete gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-stack-protector -DMODE16=0 -DMODESEGMENT=0 -fomit-frame-pointer -c out/version.c -o out/version.o ld -melf_i386_fbsd -r out/ccode32flat.o out/version.o -o out/code32flat.o ld -melf_i386_fbsd -r out/ccode16.o out/romlayout.o -o out/code16.o
And:
$ gcc47 -dumpspecs | grep elf_i386 %{!static:--eh-frame-hdr} %{m32:-m elf_i386_fbsd} %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} %{v:-V} %{assert*} %{R*} %{rpath*} %{defsym*} %{shared:-Bshareable %{h*} %{soname*}} %{!shared: %{!static: %{rdynamic:-export-dynamic} -dynamic-linker %(fbsd_dynamic_linker) } %{static:-Bstatic}} %{symbolic:-Bsymbolic}
2014-04-16 9:14 GMT+02:00 Roger Pau Monne roger.pau@citrix.com:
On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow SeaBIOS to fetch the emulation to use from the environment variables.
This allows SeaBIOS to compile on FreeBSD with gcc.
Signed-off-by: Roger Pau Monné roger.pau@citrix.com
Acked-by: Idwer Vollering vidwer@gmail.com
With the note that one needs to use ld from ports' binutils, not the shipped ld:
$ /usr/bin/ld -V && /usr/local/bin/ld -V GNU ld 2.17.50 [FreeBSD] 2007-07-03 Supported emulations: elf_x86_64_fbsd elf_i386_fbsd GNU ld (GNU Binutils) 2.24 Supported emulations: elf_x86_64_fbsd elf_i386_fbsd elf_x86_64 elf_i386 elf_l1om elf_l1om_fbsd elf_k1om elf_k1om_fbsd
Cc: Ian Campbell ian.campbell@citrix.com
Changes in v2:
- Rebase on top of master
Makefile | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index e567ba1..4338f94 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ STRIP=$(CROSS_PREFIX)strip PYTHON=python CPP=cpp IASL:=iasl +LD32BIT_FLAG:=-melf_i386
# Source files SRCBOTH=misc.c stacks.c output.c string.c x86.c block.c cdrom.c mouse.c kbd.c \ @@ -154,8 +155,8 @@ $(OUT)romlayout16.lds: $(OUT)ccode32flat.o $(OUT)code32seg.o $(OUT)ccode16.o $(O @echo " Building ld scripts" $(Q)./scripts/buildversion.sh $(OUT)version.c $(Q)$(CC) $(CFLAGS32FLAT) -c $(OUT)version.c -o $(OUT)version.o
$(Q)$(LD) -melf_i386 -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o
$(Q)$(LD) -melf_i386 -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o
$(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode32flat.o $(OUT)version.o -o $(OUT)code32flat.o
$(Q)$(LD) $(LD32BIT_FLAG) -r $(OUT)ccode16.o $(OUT)romlayout.o -o $(OUT)code16.o $(Q)$(OBJDUMP) -thr $(OUT)code32flat.o > $(OUT)code32flat.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code32seg.o > $(OUT)code32seg.o.objdump $(Q)$(OBJDUMP) -thr $(OUT)code16.o > $(OUT)code16.o.objdump
-- 1.7.7.5 (Apple Git-26)
SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios
On Wed, Apr 16, 2014 at 09:14:16AM +0200, Roger Pau Monne wrote:
On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow SeaBIOS to fetch the emulation to use from the environment variables.
This allows SeaBIOS to compile on FreeBSD with gcc.
Thanks. I applied this patch.
-Kevin