aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-11-20 19:01:23 +1030
committerAlan Modra <amodra@gmail.com>2014-11-20 21:37:05 +1030
commit0cfb07174869f3542a96619fb36a85398af35da2 (patch)
tree475d002c3cbdcd13a1666e89d6e5cf1326e7c4dc /bfd
parent1e269e9b8fb2acf403bfa09486cdc5d496bbf27b (diff)
downloadgdb-0cfb07174869f3542a96619fb36a85398af35da2.zip
gdb-0cfb07174869f3542a96619fb36a85398af35da2.tar.gz
gdb-0cfb07174869f3542a96619fb36a85398af35da2.tar.bz2
PPC gold doesn't check for overflow properly
Corrects overflow test for rel14, addr14, rel24, addr24 branch relocs, and prints an information message to give a hint as to how a branch that can't reach a stub might be cured. bfd/ * elf64-ppc.c (group_sections): Init stub14_group_size from --stub-group-size parameter divided by 1024. gold/ * powerpc.cc (Stub_control::Stub_control): Init stub14_group_size_ from --stub-group-size parameter divided by 1024. (Powerpc_relocate_functions::rela, rela_ua): Add fieldsize template parameter. Update all uses. (Target_powerpc::Relocate::relocate): Rename has_plt_value to has_stub_value. Set for long branches. Don't report overflow for branch to undefined weak symbols. Print info message on overflowing branch to stub.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf64-ppc.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fb9de4a..7b8bb30 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2014-11-20 Alan Modra <amodra@gmail.com>
+ * elf64-ppc.c (group_sections): Init stub14_group_size from
+ --stub-group-size parameter divided by 1024.
+
+2014-11-20 Alan Modra <amodra@gmail.com>
+
* elf32-ppc.c (ppc_elf_relax_section): Correct ppc476 workaround
alignment calculation.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 901a88d..0245a2c 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -11805,7 +11805,7 @@ group_sections (struct ppc_link_hash_table *htab,
bfd_boolean suppress_size_errors;
suppress_size_errors = FALSE;
- stub14_group_size = stub_group_size;
+ stub14_group_size = stub_group_size >> 10;
if (stub_group_size == 1)
{
/* Default values. */