public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Re: HPPA/SOM Patch
  1999-07-01  0:00   ` Mark Klein
@ 1999-07-01  0:00     ` Ian Lance Taylor
  1999-07-01  0:00       ` Jeffrey A Law
  0 siblings, 1 reply; 9+ messages in thread
From: Ian Lance Taylor @ 1999-07-01  0:00 UTC (permalink / raw)
  To: mklein; +Cc: binutils

   Date: Fri, 04 Jun 1999 13:08:43 -0700
   From: Mark Klein <mklein@dis.com>

   >If so, why is hppa_fix_adjustable being called after set_symtab?

   It is part of my earlier fix. There are certain fixups that don't
   have a symbol associated with them. In that case, the original
   code referenced a dummy symbol. I changed that to the symbol_get_bfdsym()
   call below.

   *** 2886,2892 **** 
   case R_ENTRY: 
   case R_EXIT: 
   /* There is no symbol associated with these fixups. */ 
   ! relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym; 
   relocs[i]->addend = fixp->fx_offset; 
   break; 
   --- 2893,2900 ---- 
   case R_ENTRY: 
   case R_EXIT: 
   /* There is no symbol associated with these fixups. */ 
   ! relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); 
   ! *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); 
   relocs[i]->addend = fixp->fx_offset; 
   break; 

   That in turn is causing tc_gen_reloc() to be invoked within write_relocs()
   and voila!

I don't quite follow that, actually.  I don't see why calling
symbol_get_bfdsym is causing tc_gen_reloc to get called.  But I'll
take your word for it.

   So, did I make a wrong assumption here, or should set_symtab be delayed
   until after the bfd_map_over_sections (stdoutput, write_relocs, (char *) 0) ?

No, I believe set_symtab must be called before the relocations are
written out.

One way to avoid it would be to call symbol_get_bfdsym immediately
after creating dummy_symbol, to force it to be converted to a real
symbol before set_symtab is called.

Another way would be not use dummy_symbol for this at all, and instead
call bfd_create_empty_symbol directly to get something you can set the
reloc sym_ptr_ptr field to point to.

Ian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00 HPPA/SOM Patch Mark Klein
  1999-07-01  0:00 ` Jeffrey A Law
  1999-07-01  0:00 ` Mark Klein
@ 1999-07-01  0:00 ` Ian Lance Taylor
  1999-07-01  0:00   ` Mark Klein
  2 siblings, 1 reply; 9+ messages in thread
From: Ian Lance Taylor @ 1999-07-01  0:00 UTC (permalink / raw)
  To: mklein; +Cc: binutils

   Date: Fri, 04 Jun 1999 11:11:37 -0700
   From: Mark Klein <mklein@dis.com>

   At 02:01 PM 6/4/99 -0400, Ian Lance Taylor wrote:

   >Unfortunately, I can't easily test this, because I can't compile som.h
   >in a cross configuration.  Can you do some more debugging on it?  It's
   >presumably due to a call to symbol_new from local_symbol_convert, but
   >what is causing local_symbol_convert to be called?

   Ah ... symbol_mark_used_in_reloc called from hppa_fix_adjustable.

OK, what's calling that?

hppa_fix_adjustable should normally be called by adjust_reloc_syms.
However, adjust_reloc_syms is called before set_symtab, which is where
the symbol table is frozen.  So I'm clearly missing something.

Is it true that set_symtab is called before the error occurs?

If so, why is hppa_fix_adjustable being called after set_symtab?

If not, why is the error occurring?

Ian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00 HPPA/SOM Patch Mark Klein
@ 1999-07-01  0:00 ` Jeffrey A Law
  1999-07-01  0:00 ` Mark Klein
  1999-07-01  0:00 ` Ian Lance Taylor
  2 siblings, 0 replies; 9+ messages in thread
From: Jeffrey A Law @ 1999-07-01  0:00 UTC (permalink / raw)
  To: Mark Klein; +Cc: Ian Lance Taylor, binutils

  In message < 4.1.19990604110845.00bb5100@garfield.dis.com >you write:
  > Ah ... symbol_mark_used_in_reloc called from hppa_fix_adjustable.
  > 
  > I'm not sure what is intended here ... :-/
For SOM, you need to actually keep track of which symbols are used.  A symbol
which is imported, but never used is not supposed to be added to the
symbol table.

At one time, the generic gas code did not set sy_used_in_reloc for the
sym2 in a sym1-sym2 expression.  Thus hppa_fix_adjustable would set the
flag.
jeff

^ permalink raw reply	[flat|nested] 9+ messages in thread

* HPPA/SOM Patch
@ 1999-07-01  0:00 ` Mark Klein
  1999-07-01  0:00   ` Ian Lance Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mark Klein @ 1999-07-01  0:00 UTC (permalink / raw)
  To: binutils

The patch below will propagate Ian's fixes to SOM. While it now compiles
cleanly, I do get the following in my testing:

/tmp(303): as -v enquire.s
GNU assembler version 2.9.4 (hppa1.0-hp-mpeix) using BFD version 2.9.4
enquire.s: Assembler messages:
enquire.s:33753: Internal error, aborting at ../../gas/symbols.c line 93 in symb
ol_new
Please report this bug.
/tmp(304): 

It appears that the symbol table is locked.

1999-06-04  Mark Klein <mklein@dis.com>                           

        * config/tc-hppa.c: Propagate symbol handling changes to SOM.

Index: tc-hppa.c
===================================================================
RCS file: /cvs/binutils/binutils/gas/config/tc-hppa.c,v
retrieving revision 1.4
diff -c -r1.4 tc-hppa.c
*** tc-hppa.c	1999/06/03 12:42:35	1.4
--- tc-hppa.c	1999/06/04 17:30:12
***************
*** 2813,2819 ****
      {
        code = *codes[i];
  
!       relocs[i]->sym_ptr_ptr = &fixp->fx_addsy->bsym;
        relocs[i]->howto = bfd_reloc_type_lookup (stdoutput, code);
        relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  
--- 2813,2820 ----
      {
        code = *codes[i];
  
!       relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!       *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
        relocs[i]->howto = bfd_reloc_type_lookup (stdoutput, code);
        relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  
***************
*** 2824,2846 ****
  	     of two symbols.  With that in mind we fill in all four
  	     relocs now and break out of the loop.  */
  	  assert (i == 1);
! 	  relocs[0]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[0]->howto = bfd_reloc_type_lookup (stdoutput, *codes[0]);
  	  relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[0]->addend = 0;
! 	  relocs[1]->sym_ptr_ptr = &fixp->fx_addsy->bsym;
  	  relocs[1]->howto = bfd_reloc_type_lookup (stdoutput, *codes[1]);
  	  relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[1]->addend = 0;
! 	  relocs[2]->sym_ptr_ptr = &fixp->fx_subsy->bsym;
  	  relocs[2]->howto = bfd_reloc_type_lookup (stdoutput, *codes[2]);
  	  relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[2]->addend = 0;
! 	  relocs[3]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[3]->howto = bfd_reloc_type_lookup (stdoutput, *codes[3]);
  	  relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[3]->addend = 0;
! 	  relocs[4]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[4]->howto = bfd_reloc_type_lookup (stdoutput, *codes[4]);
  	  relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[4]->addend = 0;
--- 2825,2852 ----
  	     of two symbols.  With that in mind we fill in all four
  	     relocs now and break out of the loop.  */
  	  assert (i == 1);
!     relocs[0]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[0]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[0]->howto = bfd_reloc_type_lookup (stdoutput, *codes[0]);
  	  relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[0]->addend = 0;
!     relocs[1]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[1]->howto = bfd_reloc_type_lookup (stdoutput, *codes[1]);
  	  relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[1]->addend = 0;
!     relocs[2]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[2]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[2]->howto = bfd_reloc_type_lookup (stdoutput, *codes[2]);
  	  relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[2]->addend = 0;
!     relocs[3]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[3]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[3]->howto = bfd_reloc_type_lookup (stdoutput, *codes[3]);
  	  relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[3]->addend = 0;
!     relocs[4]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[4]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[4]->howto = bfd_reloc_type_lookup (stdoutput, *codes[4]);
  	  relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[4]->addend = 0;
***************
*** 2878,2884 ****
  	case R_N0SEL:
  	case R_N1SEL:
  	  /* There is no symbol or addend associated with these fixups.  */
! 	  relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym;
  	  relocs[i]->addend = 0;
  	  break;
  
--- 2884,2891 ----
  	case R_N0SEL:
  	case R_N1SEL:
  	  /* There is no symbol or addend associated with these fixups.  */
!     relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol);
  	  relocs[i]->addend = 0;
  	  break;
  
***************
*** 2886,2892 ****
  	case R_ENTRY:
  	case R_EXIT:
  	  /* There is no symbol associated with these fixups.  */
! 	  relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym;
  	  relocs[i]->addend = fixp->fx_offset;
  	  break;
  
--- 2893,2900 ----
  	case R_ENTRY:
  	case R_EXIT:
  	  /* There is no symbol associated with these fixups.  */
!     relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!     *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol);
  	  relocs[i]->addend = fixp->fx_offset;
  	  break;
  
***************
*** 6555,6561 ****
        && (hppa_fix->segment->flags & SEC_CODE))
      {
        /* Apparently sy_used_in_reloc never gets set for sub symbols.  */
!       fixp->fx_subsy->sy_used_in_reloc = 1;
        return 0;
      }
  
--- 6563,6569 ----
        && (hppa_fix->segment->flags & SEC_CODE))
      {
        /* Apparently sy_used_in_reloc never gets set for sub symbols.  */
!       symbol_mark_used_in_reloc (fixp->fx_subsy);
        return 0;
      }
  

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00     ` Ian Lance Taylor
@ 1999-07-01  0:00       ` Jeffrey A Law
  0 siblings, 0 replies; 9+ messages in thread
From: Jeffrey A Law @ 1999-07-01  0:00 UTC (permalink / raw)
  To: Ian Lance Taylor; +Cc: mklein, binutils

  In message < 19990605035401.13429.qmail@daffy.airs.com >you write:
  > No, I believe set_symtab must be called before the relocations are
  > written out.
  > 
  > One way to avoid it would be to call symbol_get_bfdsym immediately
  > after creating dummy_symbol, to force it to be converted to a real
  > symbol before set_symtab is called.
  > 
  > Another way would be not use dummy_symbol for this at all, and instead
  > call bfd_create_empty_symbol directly to get something you can set the
  > reloc sym_ptr_ptr field to point to.
What I do not understand (possibly because I haven't read Ian's revamped
code yet) is what we gain by not using bfd_abs_symbol anymore.  ie, what
is the point behind generating some new dummy symbol when we have a suitable
symbol handy?

Or is it the case that bfd_abs_symbol is no longer useable in this manner?

jeff

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00 ` Ian Lance Taylor
@ 1999-07-01  0:00   ` Mark Klein
  1999-07-01  0:00     ` Ian Lance Taylor
  0 siblings, 1 reply; 9+ messages in thread
From: Mark Klein @ 1999-07-01  0:00 UTC (permalink / raw)
  To: Ian Lance Taylor; +Cc: binutils

At 02:22 PM 6/4/99 -0400, Ian Lance Taylor wrote:

>Is it true that set_symtab is called before the error occurs?

Yes.

>If so, why is hppa_fix_adjustable being called after set_symtab?

It is part of my earlier fix. There are certain fixups that don't
have a symbol associated with them. In that case, the original
code referenced a dummy symbol. I changed that to the symbol_get_bfdsym()
call below.

*** 2886,2892 **** 
case R_ENTRY: 
case R_EXIT: 
/* There is no symbol associated with these fixups. */ 
! relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym; 
relocs[i]->addend = fixp->fx_offset; 
break; 
--- 2893,2900 ---- 
case R_ENTRY: 
case R_EXIT: 
/* There is no symbol associated with these fixups. */ 
! relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); 
! *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol); 
relocs[i]->addend = fixp->fx_offset; 
break; 

That in turn is causing tc_gen_reloc() to be invoked within write_relocs()
and voila!

So, did I make a wrong assumption here, or should set_symtab be delayed
until after the bfd_map_over_sections (stdoutput, write_relocs, (char *) 0) ?

Regards,

M.
--
Mark Klein                                    DIS International, Ltd.
http://www.dis.com                            415-892-8400
PGP Public Key Available
--

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00   ` Ian Lance Taylor
@ 1999-07-01  0:00 Mark Klein
  1999-07-01  0:00 ` Jeffrey A Law
                   ` (2 more replies)
  -1 siblings, 3 replies; 9+ messages in thread
From: Mark Klein @ 1999-07-01  0:00 UTC (permalink / raw)
  To: Ian Lance Taylor; +Cc: binutils

At 02:01 PM 6/4/99 -0400, Ian Lance Taylor wrote:

>Unfortunately, I can't easily test this, because I can't compile som.h
>in a cross configuration.  Can you do some more debugging on it?  It's
>presumably due to a call to symbol_new from local_symbol_convert, but
>what is causing local_symbol_convert to be called?

Ah ... symbol_mark_used_in_reloc called from hppa_fix_adjustable.

I'm not sure what is intended here ... :-/
--
Mark Klein                                    DIS International, Ltd.
http://www.dis.com                            415-892-8400
PGP Public Key Available
--

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
  1999-07-01  0:00 ` Mark Klein
@ 1999-07-01  0:00   ` Ian Lance Taylor
  0 siblings, 0 replies; 9+ messages in thread
From: Ian Lance Taylor @ 1999-07-01  0:00 UTC (permalink / raw)
  To: mklein; +Cc: binutils

   Date: Fri, 4 Jun 1999 10:38:55 -0700 (PDT)
   From: Mark Klein <mklein@dis.com>

   The patch below will propagate Ian's fixes to SOM.

I checked this in.  Thanks for sending it.

   While it now compiles
   cleanly, I do get the following in my testing:

   /tmp(303): as -v enquire.s
   GNU assembler version 2.9.4 (hppa1.0-hp-mpeix) using BFD version 2.9.4
   enquire.s: Assembler messages:
   enquire.s:33753: Internal error, aborting at ../../gas/symbols.c line 93 in symb
   ol_new
   Please report this bug.
   /tmp(304): 

   It appears that the symbol table is locked.

Unfortunately, I can't easily test this, because I can't compile som.h
in a cross configuration.  Can you do some more debugging on it?  It's
presumably due to a call to symbol_new from local_symbol_convert, but
what is causing local_symbol_convert to be called?

Ian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: HPPA/SOM Patch
@ 1999-07-01  0:00 Mark Klein
  0 siblings, 0 replies; 9+ messages in thread
From: Mark Klein @ 1999-07-01  0:00 UTC (permalink / raw)
  To: binutils

In chasing this a bit further, I see that the problem arises while trying
to convert the dummy_symbol from a local symbol to real symbol after 
set_symtab has been called. I also see that in my cut/paste zealousness,
I blew the original patch. Here is an updated version:

1999-06-04  Mark Klein <mklein@dis.com>

        * config/tc-hppa.c (md_begin): Convert local symbol dummy_symbol to
          real. OBJ_SOM only.
          (tc_gen_reloc): Still need bfd_abs_symbol in some relocs.

Index: tc-hppa.c
===================================================================
RCS file: /cvs/binutils/binutils/gas/config/tc-hppa.c,v
retrieving revision 1.4
diff -c -r1.4 tc-hppa.c
*** tc-hppa.c	1999/06/03 12:42:35	1.4
--- tc-hppa.c	1999/06/05 03:49:48
***************
*** 702,710 ****
  /* Holds the last field selector.  */
  static int hppa_field_selector;
  
! 
  /* A dummy bfd symbol so that all relocations have symbols of some kind.  */
  static symbolS *dummy_symbol;
  
  /* Nonzero if errors are to be printed.  */
  static int print_errors = 1;
--- 702,711 ----
  /* Holds the last field selector.  */
  static int hppa_field_selector;
  
! #ifdef OBJ_SOM
  /* A dummy bfd symbol so that all relocations have symbols of some kind.  */
  static symbolS *dummy_symbol;
+ #endif
  
  /* Nonzero if errors are to be printed.  */
  static int print_errors = 1;
***************
*** 1339,1346 ****
--- 1340,1351 ----
       anything into the old one switch to the new one now.  */
    subseg_set (text_section, 0);
  
+ #ifdef OBJ_SOM
    dummy_symbol = symbol_find_or_make ("L$dummy");
    S_SET_SEGMENT (dummy_symbol, text_section);
+   /* Force the symbol to be converted to a real symbol. */
+   (void) symbol_get_bfdsym (dummy_symbol); 
+ #endif
  }
  
  /* Assemble a single instruction storing it into a frag.  */
***************
*** 2813,2819 ****
      {
        code = *codes[i];
  
!       relocs[i]->sym_ptr_ptr = &fixp->fx_addsy->bsym;
        relocs[i]->howto = bfd_reloc_type_lookup (stdoutput, code);
        relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  
--- 2818,2825 ----
      {
        code = *codes[i];
  
!       relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!       *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
        relocs[i]->howto = bfd_reloc_type_lookup (stdoutput, code);
        relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  
***************
*** 2824,2846 ****
  	     of two symbols.  With that in mind we fill in all four
  	     relocs now and break out of the loop.  */
  	  assert (i == 1);
! 	  relocs[0]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[0]->howto = bfd_reloc_type_lookup (stdoutput, *codes[0]);
  	  relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[0]->addend = 0;
! 	  relocs[1]->sym_ptr_ptr = &fixp->fx_addsy->bsym;
  	  relocs[1]->howto = bfd_reloc_type_lookup (stdoutput, *codes[1]);
  	  relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[1]->addend = 0;
! 	  relocs[2]->sym_ptr_ptr = &fixp->fx_subsy->bsym;
  	  relocs[2]->howto = bfd_reloc_type_lookup (stdoutput, *codes[2]);
  	  relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[2]->addend = 0;
! 	  relocs[3]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[3]->howto = bfd_reloc_type_lookup (stdoutput, *codes[3]);
  	  relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[3]->addend = 0;
! 	  relocs[4]->sym_ptr_ptr = (asymbol **) &bfd_abs_symbol;
  	  relocs[4]->howto = bfd_reloc_type_lookup (stdoutput, *codes[4]);
  	  relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[4]->addend = 0;
--- 2830,2854 ----
  	     of two symbols.  With that in mind we fill in all four
  	     relocs now and break out of the loop.  */
  	  assert (i == 1);
! 	  relocs[0]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol);
  	  relocs[0]->howto = bfd_reloc_type_lookup (stdoutput, *codes[0]);
  	  relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[0]->addend = 0;
! 	  relocs[1]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
! 	  *relocs[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  	  relocs[1]->howto = bfd_reloc_type_lookup (stdoutput, *codes[1]);
  	  relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[1]->addend = 0;
! 	  relocs[2]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
! 	  *relocs[2]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_subsy);
  	  relocs[2]->howto = bfd_reloc_type_lookup (stdoutput, *codes[2]);
  	  relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[2]->addend = 0;
! 	  relocs[3]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol);
  	  relocs[3]->howto = bfd_reloc_type_lookup (stdoutput, *codes[3]);
  	  relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[3]->addend = 0;
! 	  relocs[4]->sym_ptr_ptr = (asymbol **) &(bfd_abs_symbol);
  	  relocs[4]->howto = bfd_reloc_type_lookup (stdoutput, *codes[4]);
  	  relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where;
  	  relocs[4]->addend = 0;
***************
*** 2878,2884 ****
  	case R_N0SEL:
  	case R_N1SEL:
  	  /* There is no symbol or addend associated with these fixups.  */
! 	  relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym;
  	  relocs[i]->addend = 0;
  	  break;
  
--- 2886,2893 ----
  	case R_N0SEL:
  	case R_N1SEL:
  	  /* There is no symbol or addend associated with these fixups.  */
!           relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!           *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol);
  	  relocs[i]->addend = 0;
  	  break;
  
***************
*** 2886,2892 ****
  	case R_ENTRY:
  	case R_EXIT:
  	  /* There is no symbol associated with these fixups.  */
! 	  relocs[i]->sym_ptr_ptr = &dummy_symbol->bsym;
  	  relocs[i]->addend = fixp->fx_offset;
  	  break;
  
--- 2895,2902 ----
  	case R_ENTRY:
  	case R_EXIT:
  	  /* There is no symbol associated with these fixups.  */
!           relocs[i]->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
!           *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (dummy_symbol);
  	  relocs[i]->addend = fixp->fx_offset;
  	  break;
  
***************
*** 6555,6561 ****
        && (hppa_fix->segment->flags & SEC_CODE))
      {
        /* Apparently sy_used_in_reloc never gets set for sub symbols.  */
!       fixp->fx_subsy->sy_used_in_reloc = 1;
        return 0;
      }
  
--- 6565,6571 ----
        && (hppa_fix->segment->flags & SEC_CODE))
      {
        /* Apparently sy_used_in_reloc never gets set for sub symbols.  */
!       symbol_mark_used_in_reloc (fixp->fx_subsy);
        return 0;
      }
  

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~1999-07-01  0:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-07-01  0:00 HPPA/SOM Patch Mark Klein
1999-07-01  0:00 ` Jeffrey A Law
1999-07-01  0:00 ` Mark Klein
1999-07-01  0:00   ` Ian Lance Taylor
1999-07-01  0:00 ` Ian Lance Taylor
1999-07-01  0:00   ` Mark Klein
1999-07-01  0:00     ` Ian Lance Taylor
1999-07-01  0:00       ` Jeffrey A Law
  -- strict thread matches above, loose matches on Subject: below --
1999-07-01  0:00 Mark Klein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).