1

I am attempting to build SGABIOS on my Macbook Pro. Unfortunately, I am getting some strange compilation errors that I am not familiar with. When I attempt to run make, here is the output I get:

Ajax-2:sgabios-read-only dash$ make
rm -f .depend
cc -E -M -Wall -Os -m32 -nostdlib  sgabios.S >.tmpdepend && mv .tmpdepend .depend
make clean
rm -f sgabios.bin csum8  sgabios.o *.elf *.srec *.com version.h
touch sgabios.S
cc -Wall -Os -m32 -nostdlib -DBUILD_DATE="\"Fri Aug 31 19:10:03 UTC 2012\"" -DBUILD_SHORT_DATE="\"08/31/12\"" -DBUILD_HOST="\"Ajax-2.local\"" -DBUILD_USER="\"dash\""   -c -o sgabios.o sgabios.S
sgabios.S:24:Unknown pseudo-op: .type
sgabios.S:24:Rest of line ignored. 1st junk character valued 95 (_).
sgabios.S:30:Unknown pseudo-op: .size
sgabios.S:30:Rest of line ignored. 1st junk character valued 95 (_).
sgabios.S:33:Unknown pseudo-op: .type
sgabios.S:33:Rest of line ignored. 1st junk character valued 108 (l).
sgabios.S:156:Alignment too large: 15. assumed.
make: *** [sgabios.o] Error 1

My GCC version information is as follows:

Ajax-2:sgabios-read-only dash$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)

I have done extensive googling and monkeying and nothing seems to work. I have also tried the whole mess in cygwin, and I get nearly the same thing. For your reference, I've uploaded some files from the latest release:

sgabios.S

sgabios.h

Makefile

Update: Posted output of make in cygwin:

dash@Ajax_virtual ~/sgabios-read-only
$ make
rm -f .depend
cc -E -M -Wall -Os -m32 -nostdlib  sgabios.S >.tmpdepend && mv .tmpdepend .depen                                    d
make clean
make[1]: Entering directory `/home/dash/sgabios-read-only'
rm -f sgabios.bin csum8  sgabios.o *.elf *.srec *.com version.h
make[1]: Leaving directory `/home/dash/sgabios-read-only'
touch sgabios.S
cc -Wall -Os -m32 -nostdlib -DBUILD_DATE="\"Fri, Aug 31, 2012 10:14:21 PM\"" -DB                                    UILD_SHORT_DATE="\"08/31/12\"" -DBUILD_HOST="\"Ajax_virtual\"" -DBUILD_USER="\"d                                    ash\""   -c -o sgabios.o sgabios.S
sgabios.S: Assembler messages:
sgabios.S:22: Error: junk at end of line, first unrecognized character is `"'
sgabios.S:24: Warning: .type pseudo-op used outside of .def/.endef ignored.
sgabios.S:24: Error: junk at end of line, first unrecognized character is `_'
sgabios.S:30: Warning: .size pseudo-op used outside of .def/.endef ignored.
sgabios.S:30: Error: junk at end of line, first unrecognized character is `_'
sgabios.S:33: Warning: .type pseudo-op used outside of .def/.endef ignored.
sgabios.S:33: Error: junk at end of line, first unrecognized character is `l'
<builtin>: recipe for target `sgabios.o' failed
make: *** [sgabios.o] Error 1
Eicos
  • 35
  • 7

1 Answers1

2

This is because the assembler file is written for GNU as but OS X does not use it but rather its own assembler.

Furthermore, according to the documentation on the .type directive the meaning of the directive in GNU as depends on the target platform. The directives in the linked file are only valid for ELF targets as used on linux (and other unices) but cygwin is a COFF target.

Geoff Reedy
  • 34,891
  • 3
  • 56
  • 79
  • Thanks for your response. I also tried in cygwin and got nearly identical results, which I have posted above in an update. – Eicos Aug 31 '12 at 22:15
  • Thanks. I think the easiest way for me to do this is to get Ubuntu running in a Virtualbox and try it from there. – Eicos Sep 01 '12 at 02:33