On 04.04.2008 15:08, Stefan Reinauer wrote:
Carl-Daniel Hailfinger wrote:
On 04.04.2008 04:40, Stefan Reinauer wrote:
The idea to this patch is from Patrick Georgi but I reimplemented it from scratch since I can't reach the other box for a few days. It fixes stage0_i586.S assembling on the latest official GNU binutils version. Without this patch the compilation fails with:
AS build/arch/x86/stage0_i586.o /Users/stepan/Devel/coreboot-v3/arch/x86/stage0_i586.S: Assembler messages: /Users/stepan/Devel/coreboot-v3/arch/x86/stage0_i586.S:345: Error: missing ')'
[..]
Sorry, that patch only papers over the bug. If we ever decide to use CAR at another location, this will break again and we'll have to duplicate some of the code you touched in the patch. I'd prefer to know why a division fails, but a subtractoin succeeds.
Why is that code more position dependent than the previous, non-compiling code?
You hardcode the segment size to 4k. If we place the CAR area somewhere else, we have to deal with 16k and even 64k segments. The current code uses abstract segments as a unit and that abstraction is removed by the patch.
While I think, requiring the latest version of binutils (or, any other toolchain part, for that matter) is fair, we should not require features that do not work in the latest "stable" version but require a snapshot release to be installed.
It works in older versions. The version you used is buggy. There is no reason not to blacklist that broken version unless someone can prove that the new behaviour is correct according to any spec.
Regards, Carl-Daniel