From e14e52f868afc2266920640776b7e54bc214ee91 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 8 Aug 2006 17:21:04 +0000 Subject: [PATCH] * 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. --- gas/ChangeLog | 6 ++++++ gas/config/tc-sh.c | 15 +++++++++++++++ 2 files changed, 21 insertions(+) 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 @@ -3315,6 +3315,21 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec, if (seginfo == NULL) return; + 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;