Fix ppc hidden plt patch.

This commit is contained in:
Nicholas Clifton 2009-12-18 14:53:13 +00:00
parent 8ef28f50d1
commit cff4ada549
2 changed files with 26 additions and 41 deletions

View File

@ -1,6 +1,6 @@
diff -rup ../binutils-2.20.51.0.2.original/bfd/ChangeLog bfd/ChangeLog diff -rup ../binutils-2.20.51.0.2.original/bfd/ChangeLog ./bfd/ChangeLog
--- ../binutils-2.20.51.0.2.original/bfd/ChangeLog 2009-12-17 16:08:07.000000000 +0000 --- ../binutils-2.20.51.0.2.original/bfd/ChangeLog 2009-12-17 16:08:07.000000000 +0000
+++ bfd/ChangeLog 2009-12-17 16:27:06.000000000 +0000 +++ ./bfd/ChangeLog 2009-12-17 17:20:30.000000000 +0000
@@ -1,3 +1,25 @@ @@ -1,3 +1,25 @@
+2009-12-17 Alan Modra <amodra@bigpond.net.au> +2009-12-17 Alan Modra <amodra@bigpond.net.au>
+ +
@ -27,9 +27,9 @@ diff -rup ../binutils-2.20.51.0.2.original/bfd/ChangeLog bfd/ChangeLog
2009-10-09 Tristan Gingold <gingold@adacore.com> 2009-10-09 Tristan Gingold <gingold@adacore.com>
* mach-o.c (bfd_mach_o_section_get_entry_size): Moved. * mach-o.c (bfd_mach_o_section_get_entry_size): Moved.
diff -rup ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c bfd/elf32-ppc.c diff -rup ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c ./bfd/elf32-ppc.c
--- ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c 2009-12-17 16:08:07.000000000 +0000 --- ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c 2009-12-17 16:08:07.000000000 +0000
+++ bfd/elf32-ppc.c 2009-12-17 16:23:22.000000000 +0000 +++ ./bfd/elf32-ppc.c 2009-12-18 13:54:26.000000000 +0000
@@ -3323,6 +3323,8 @@ update_plt_info (bfd *abfd, struct plt_e @@ -3323,6 +3323,8 @@ update_plt_info (bfd *abfd, struct plt_e
{ {
struct plt_entry *ent; struct plt_entry *ent;
@ -82,6 +82,15 @@ diff -rup ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c bfd/elf32-ppc.c
ent->plt.refcount -= 1; ent->plt.refcount -= 1;
} }
} }
@@ -4534,7 +4533,7 @@ ppc_elf_gc_sweep_hook (bfd *abfd,
if (r_type == R_PPC_PLTREL24 && info->shared)
addend = rel->r_addend;
ent = find_plt_ent (&h->plt.plist, got2, addend);
- if (ent->plt.refcount > 0)
+ if (ent != NULL && ent->plt.refcount > 0)
ent->plt.refcount -= 1;
}
break;
@@ -4582,9 +4581,11 @@ ppc_elf_tls_setup (bfd *obfd, @@ -4582,9 +4581,11 @@ ppc_elf_tls_setup (bfd *obfd,
&& tga->root.type == bfd_link_hash_undefweak))) && tga->root.type == bfd_link_hash_undefweak)))
{ {
@ -247,14 +256,14 @@ diff -rup ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c bfd/elf32-ppc.c
} }
- if (r_type == R_PPC_RELAX32_PLT) - if (r_type == R_PPC_RELAX32_PLT)
- goto relax32; - goto relax32;
- /* Fall thru */ /* Fall thru */
-
- case R_PPC_RELAX32PC: - case R_PPC_RELAX32PC:
- relocation -= (input_section->output_section->vma - relocation -= (input_section->output_section->vma
- + input_section->output_offset - + input_section->output_offset
- + rel->r_offset - 4); - + rel->r_offset - 4);
/* Fall thru */ - /* Fall thru */
-
- case R_PPC_RELAX32: - case R_PPC_RELAX32:
- relax32: - relax32:
+ case R_PPC_RELAX: + case R_PPC_RELAX:
@ -265,9 +274,9 @@ diff -rup ../binutils-2.20.51.0.2.original/bfd/elf32-ppc.c bfd/elf32-ppc.c
{ {
unsigned long t0; unsigned long t0;
unsigned long t1; unsigned long t1;
diff -rup ../binutils-2.20.51.0.2.original/bfd/elf64-ppc.c bfd/elf64-ppc.c diff -rup ../binutils-2.20.51.0.2.original/bfd/elf64-ppc.c ./bfd/elf64-ppc.c
--- ../binutils-2.20.51.0.2.original/bfd/elf64-ppc.c 2009-12-17 16:08:07.000000000 +0000 --- ../binutils-2.20.51.0.2.original/bfd/elf64-ppc.c 2009-12-17 16:08:07.000000000 +0000
+++ bfd/elf64-ppc.c 2009-12-17 16:10:41.000000000 +0000 +++ ./bfd/elf64-ppc.c 2009-12-17 17:20:30.000000000 +0000
@@ -5866,9 +5866,7 @@ ppc64_elf_gc_sweep_hook (bfd *abfd, stru @@ -5866,9 +5866,7 @@ ppc64_elf_gc_sweep_hook (bfd *abfd, stru
for (ent = h->plt.plist; ent != NULL; ent = ent->next) for (ent = h->plt.plist; ent != NULL; ent = ent->next)
if (ent->addend == rel->r_addend) if (ent->addend == rel->r_addend)
@ -279,36 +288,9 @@ diff -rup ../binutils-2.20.51.0.2.original/bfd/elf64-ppc.c bfd/elf64-ppc.c
ent->plt.refcount -= 1; ent->plt.refcount -= 1;
} }
break; break;
diff -rup ../binutils-2.20.51.0.2.original/include/elf/ChangeLog include/elf/ChangeLog diff -rup ../binutils-2.20.51.0.2.original/include/elf/ppc.h ./include/elf/ppc.h
--- ../binutils-2.20.51.0.2.original/include/elf/ChangeLog 2009-12-17 16:07:45.000000000 +0000
+++ include/elf/ChangeLog 2009-12-17 16:12:12.000000000 +0000
@@ -1,3 +1,9 @@
+2009-12-17 Alan Modra <amodra@bigpond.net.au>
+
+ * ppc.h (R_PPC_RELAX32, R_PPC_RELAX32PC, R_PPC_RELAX32_PLT,
+ R_PPC_RELAX32PC_PLT): Delete.
+ (R_PPC_RELAX, R_PPC_RELAX_PLT, R_PPC_RELAX_PLTREL24): Define.
+
2009-09-29 DJ Delorie <dj@redhat.com>
* rx.h: New file.
@@ -34,11 +40,11 @@
R_push, R_const, R_add, R_sub, R_mult, R_div, R_mod, R_lshift,
R_rshift, R_and, R_or, R_xor, R_land, R_lor, R_len, R_neg, R_comp,
R_page, R_hwpage, R_addr, R_pltpc, R_got.
-
+
2009-08-09 Michael Eager <eager@eagercon.com>
* elf/common.h: Define EM_resnnn reserved values. Add EM_AVR32,
- EM_STM8, EM_TILE64, EM_TILEPRO. Change EM_MICROBLAZE.
+ EM_STM8, EM_TILE64, EM_TILEPRO. Change EM_MICROBLAZE.
2009-08-06 Michael Eager <eager@eagercon.com>
diff -rup ../binutils-2.20.51.0.2.original/include/elf/ppc.h include/elf/ppc.h
--- ../binutils-2.20.51.0.2.original/include/elf/ppc.h 2009-12-17 16:07:45.000000000 +0000 --- ../binutils-2.20.51.0.2.original/include/elf/ppc.h 2009-12-17 16:07:45.000000000 +0000
+++ include/elf/ppc.h 2009-12-17 16:12:51.000000000 +0000 +++ ./include/elf/ppc.h 2009-12-17 17:20:30.000000000 +0000
@@ -73,10 +73,9 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type) @@ -73,10 +73,9 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
#ifndef RELOC_MACROS_GEN_FUNC #ifndef RELOC_MACROS_GEN_FUNC

View File

@ -17,7 +17,7 @@
Summary: A GNU collection of binary utilities Summary: A GNU collection of binary utilities
Name: %{?cross}binutils%{?_with_debug:-debug} Name: %{?cross}binutils%{?_with_debug:-debug}
Version: 2.20.51.0.2 Version: 2.20.51.0.2
Release: 10%{?dist} Release: 11%{?dist}
License: GPLv3+ License: GPLv3+
Group: Development/Tools Group: Development/Tools
URL: http://sources.redhat.com/binutils URL: http://sources.redhat.com/binutils
@ -35,7 +35,7 @@ Patch09: binutils-2.20.51.0.2-ifunc-ld-s.patch
Patch10: binutils-2.20.51.0.2-lwp.patch Patch10: binutils-2.20.51.0.2-lwp.patch
Patch11: binutils-2.20.51.0.2-enable-gold.patch Patch11: binutils-2.20.51.0.2-enable-gold.patch
Patch12: binutils-2.20.51.0.2-gas-expr.patch Patch12: binutils-2.20.51.0.2-gas-expr.patch
Patch13: binutils-2.20.51.0.2-ppc64-hidden-plt-relocs.patch Patch13: binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch
%define gold_arches %ix86 x86_64 %define gold_arches %ix86 x86_64
@ -427,6 +427,9 @@ exit 0
%endif # %{isnative} %endif # %{isnative}
%changelog %changelog
* Fri Dec 18 2009 Nick Clifton <nickc@redhat.com> - 2.20.51.0.2-11
- Add missing part of PR 11088 patch.
* Thu Dec 17 2009 Nick Clifton <nickc@redhat.com> - 2.20.51.0.2-10 * Thu Dec 17 2009 Nick Clifton <nickc@redhat.com> - 2.20.51.0.2-10
- Apply patch for PR 11088. (BZ 544149) - Apply patch for PR 11088. (BZ 544149)