diff options
Diffstat (limited to 'bfd/elf32-sh64.c')
-rw-r--r-- | bfd/elf32-sh64.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/bfd/elf32-sh64.c b/bfd/elf32-sh64.c index 1a2acc1..4728842 100644 --- a/bfd/elf32-sh64.c +++ b/bfd/elf32-sh64.c @@ -403,11 +403,11 @@ sh64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) { struct elf_link_hash_entry *h; - /* For relocateable links, we register the DataLabel sym in its own + /* For relocatable links, we register the DataLabel sym in its own right, and tweak the name when it's output. Otherwise, we make an indirect symbol of it. */ flagword flags - = info->relocateable || info->emitrelocations + = info->relocatable || info->emitrelocations ? BSF_GLOBAL : BSF_GLOBAL | BSF_INDIRECT; char *dl_name @@ -451,9 +451,9 @@ sh64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp) free (dl_name); if (h->type != STT_DATALABEL - || ((info->relocateable || info->emitrelocations) + || ((info->relocatable || info->emitrelocations) && h->root.type != bfd_link_hash_undefined) - || (! info->relocateable && !info->emitrelocations + || (! info->relocatable && !info->emitrelocations && h->root.type != bfd_link_hash_indirect)) { /* Make sure we don't get confused on invalid input. */ @@ -498,7 +498,7 @@ sh64_elf_link_output_symbol_hook (abfd, info, cname, sym, input_sec) { char *name = (char *) cname; - if (info->relocateable || info->emitrelocations) + if (info->relocatable || info->emitrelocations) { if (ELF_ST_TYPE (sym->st_info) == STT_DATALABEL) name[strlen (name) - strlen (DATALABEL_SUFFIX)] = 0; |