On Tue, Jul 05, 2016 at 03:49:34PM +0200, Roger Pau Monné wrote:
Hello,
I'm seeing the following issue when building SeaBIOS with gcc > 4.8:
Compiling whole program out/ccode32flat.o Compiling whole program out/code32seg.o Compiling whole program out/ccode16.o /tmp//ccecsJuF.s: Assembler messages: /tmp//ccecsJuF.s:539: Error: register save offset not a multiple of 8
[...]
/tmp//ccecsJuF.s:27692: Error: register save offset not a multiple of 8 Makefile:154: recipe for target 'out/ccode16.o' failed gmake: *** [out/ccode16.o] Error 1
This works fine when using gcc 4.8, but fails in the same way with gcc 5.4. The assembler version used is:
GNU assembler version 2.25.1 (x86_64-portbld-freebsd11.0) using BFD version (GNU Binutils) 2.25.1
What causes this issue seems to be the usage of the "-m16" gcc flag, which was introduced in gcc 4.9 AFAICT. The following workaround solves the issue, but I would like to know if anyone else has seen this with newer gcc versions, or if the gcc version from FreeBSD ports is broken.
I normally compile with gcc v5.3.1. SeaBIOS is known to compile on gcc v6 also. I guess this is something strange in FreeBSD.
-Kevin