*** src/gas/config/tc-ppc.c	Thu May 10 15:21:10 2001
--- src/gas/config/tc-ppc.c	Tue May 22 14:54:52 2001
*************** ppc_stabx (ignore)
*** 2770,2777 ****
  
    symbol_get_tc (sym)->output = 1;
  
!   if (S_GET_STORAGE_CLASS (sym) == C_STSYM)
      symbol_get_tc (sym)->within = ppc_current_block;
  
    if (exp.X_op != O_symbol
        || ! S_IS_EXTERNAL (exp.X_add_symbol)
--- 2770,2801 ----
  
    symbol_get_tc (sym)->output = 1;
  
!   if (S_GET_STORAGE_CLASS (sym) == C_STSYM) {
! 	  
      symbol_get_tc (sym)->within = ppc_current_block;
+ 
+   /*
+ 	In this case :
+ 	
+ 	.bs name
+ 	.stabx	"z",arrays_,133,0
+ 	.es
+ 
+ 	.comm arrays_,13768,3
+ 
+ 	resolve_symbol_value will copy the exp's "within" into sym's when the
+ 	offset is 0.  Since this seems to be corner case problem,
+ 	only do the correction for storage class C_STSYM.  A better solution
+ 	would be to have the tc	field updated in ppc_symbol_new_hook.
+ 
+ 	Tom Rix, 5.23.01
+   */
+ 
+ 	if (exp.X_op == O_symbol) {
+ 		symbol_get_tc (exp.X_add_symbol)->within = ppc_current_block;
+ 	}
+   }
+   
  
    if (exp.X_op != O_symbol
        || ! S_IS_EXTERNAL (exp.X_add_symbol)
  

