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