On Fri, Mar 08, 2013 at 12:03:15AM +0800, Peter Maydell wrote:
Earlier in this thread it's been stated that this often produces subtly broken blobs...
I think there have been some far reaching conclusions in this thread based on incorrect premises.
SeaBIOS has had problems with mis-compilations in the past. To handle this, the SeaBIOS build runs test cases on every compilation to verify the tool chain (see tools/test-build.sh). I have not seen a report of a guest visible SeaBIOS mis-compilation in many years.
There have been a few cases of guest bugs that get tickled when changes to SeaBIOS cause slightly different memory layouts. The last case of this that comes to mind is the JunOS bug that was tracked down a year and a half ago. The root cause of the FreeBSD issue raised in this thread is very similar - the full details aren't known yet, but we do know that a slightly different memory layout is ticking a bug in a FreeBSD page presence check.
Since changes are inevitable anyway (the only alternative would be to never enhance SeaBIOS), I don't believe that dictating one "true compiler" or one "true blob" is necessary or desirable.
-Kevin
Kevin O'Connor wrote:
I don't believe that dictating one "true compiler" or one "true blob" is necessary or desirable.
Sure. The point isn't to have only one correct way, but to have reliable results in the common case.
A reference toolchain and a reference blob both help accomplish that, but they're by no means the only, or even best, methods.
//Peter