aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf64-ppc.c15
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-ppc.c2
4 files changed, 17 insertions, 9 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1bbbb87..b55f3ad 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-02 Alan Modra <amodra@gmail.com>
+
+ * elf64-ppc.c (ppc64_elf_relocate_section): Set "relocation" for
+ .TOC. after relocatable check.
+
2013-07-01 Alan Modra <amodra@gmail.com>
* elf64-ppc.h (ppc64_elf_toc): Delete.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index fb808d6..7829520 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -12467,13 +12467,6 @@ ppc64_elf_relocate_section (bfd *output_bfd,
}
}
}
- if (h_elf == htab->elf.hgot)
- {
- relocation = (TOCstart
- + htab->stub_group[input_section->id].toc_off);
- sec = bfd_abs_section_ptr;
- unresolved_reloc = FALSE;
- }
}
h = (struct ppc_link_hash_entry *) h_elf;
@@ -12486,6 +12479,14 @@ ppc64_elf_relocate_section (bfd *output_bfd,
if (info->relocatable)
continue;
+ if (h != NULL && &h->elf == htab->elf.hgot)
+ {
+ relocation = (TOCstart
+ + htab->stub_group[input_section->id].toc_off);
+ sec = bfd_abs_section_ptr;
+ unresolved_reloc = FALSE;
+ }
+
/* TLS optimizations. Replace instruction sequences and relocs
based on information we collected in tls_optimize. We edit
RELOCS so that --emit-relocs will output something sensible
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5e7a493..7f7d0e8 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2013-07-02 Alan Modra <amodra@gmail.com>
+
+ * config/tc-ppc.c (ppc_elf_adjust_symtab): Don't make .TOC. weak.
+
2013-06-26 Maciej W. Rozycki <macro@codesourcery.com>
* doc/as.texinfo (Overview): Remove @samp from MIPS ISA names.
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index d4f6b71..7aebda8 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -2318,8 +2318,6 @@ ppc_elf_adjust_symtab (void)
asymbol *bsym = symbol_get_bfdsym (symp);
if ((bsym->flags & BSF_KEEP) == 0)
symbol_remove (symp, &symbol_rootP, &symbol_lastP);
- else
- S_SET_WEAK (symp);
}
}
}