Subject: Re: kernel build error, (3/11 SUP)
To: Rick Byers <rickb@iaw.on.ca>
From: Bill Sommerfeld <sommerfeld@orchard.east-arlington.ma.us>
List: current-users
Date: 03/12/1997 10:55:37
> ../../../../arch/i386/i386/locore.s:419: Error: Relocation error. Absolute 0 assumed.
The 3/9 "fix" to gnu/usr.bin/gas/expr.c would seem to be at fault, as
it changes how gas evaluates expressions like `L1-L2', and line 419 of
the i386 locore.s is:
movl $(((_end-_edata)+3)>>2),%ecx
I don't understand gas internals at all, and don't want to, but the
change in question was:
*** expr.c 1996/11/03 17:48:17 1.5
--- expr.c 1997/03/09 20:49:06 1.6
***************
*** 25,31 ****
*/
#ifndef lint
! static char rcsid[] = "$Id: expr.c,v 1.5 1996/11/03 17:48:17 ws Exp $";
#endif
#include <ctype.h>
--- 25,31 ----
*/
#ifndef lint
! static char rcsid[] = "$Id: expr.c,v 1.6 1997/03/09 20:49:06 pk Exp $";
#endif
#include <ctype.h>
***************
*** 521,526 ****
--- 521,527 ----
|| (expressionP->X_subtract_symbol
&& expressionP->X_add_symbol
&& expressionP->X_subtract_symbol->sy_frag == expressionP->X_add_symbol->sy_frag
+ && SEG_NORMAL (S_GET_SEGMENT (expressionP->X_add_symbol))
&& S_GET_VALUE(expressionP->X_subtract_symbol) == S_GET_VALUE(expressionP->X_add_symbol))) {
expressionP->X_subtract_symbol = NULL;
expressionP->X_add_symbol = NULL;
it should be easy to back this out..