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..