From: dj Date: Tue, 8 Aug 2006 17:21:04 +0000 (+0000) Subject: * config/tc-sh.c (sh_frob_section): Canonicalize pointers to local X-Git-Tag: drop_9x_support_start~2006 X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=5e8a641ffb86dc0a4b8a7aa8a4fcc0ecb8f21692;p=pf3gnuchains%2Fpf3gnuchains4x.git * config/tc-sh.c (sh_frob_section): Canonicalize pointers to local vs full symbols so that we never have more than one pointer value for any given symbol in our symbol table. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index ce2e4fef8e..f4430b2c3d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2006-08-08 DJ Delorie + + * config/tc-sh.c (sh_frob_section): Canonicalize pointers to local + vs full symbols so that we never have more than one pointer value + for any given symbol in our symbol table. + 2006-08-08 Sterling Augustine * dwarf2dbg.c (out_debug_info): Add new parameter ranges_seg diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index f33c1c5611..1abbaad09f 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -3318,6 +3318,21 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec, for (fix = seginfo->fix_root; fix != NULL; fix = fix->fx_next) { symbolS *sym; + + sym = fix->fx_addsy; + /* Check for a local_symbol. */ + if (sym && sym->bsym == NULL) + { + struct local_symbol *ls = (struct local_symbol *)sym; + /* See if it's been converted. If so, canonicalize. */ + if (local_symbol_converted_p (ls)) + fix->fx_addsy = local_symbol_get_real_symbol (ls); + } + } + + for (fix = seginfo->fix_root; fix != NULL; fix = fix->fx_next) + { + symbolS *sym; bfd_vma val; fixS *fscan; struct sh_count_relocs info;