patches/binutils/2.13.90.0.2/rh62-binutils-2.11.93.0.2-sparc-nonpic.patch
changeset 330 447b203edc2e
parent 329 419d959441ed
child 331 0c05f9ea3254
     1.1 --- a/patches/binutils/2.13.90.0.2/rh62-binutils-2.11.93.0.2-sparc-nonpic.patch	Tue Aug 14 19:32:22 2007 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,96 +0,0 @@
     1.4 -2002-04-20  Jakub Jelinek  <jakub@redhat.com>
     1.5 -
     1.6 -	* elf32-sparc.c (elf32_sparc_relocate_section): Find real output
     1.7 -	section with SEC_MERGE.
     1.8 -	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
     1.9 -
    1.10 ---- binutils/bfd/elf32-sparc.c.jj	Sat Apr 20 22:11:57 2002
    1.11 -+++ binutils/bfd/elf32-sparc.c	Sat Apr 20 23:06:33 2002
    1.12 -@@ -1144,7 +1144,7 @@ elf32_sparc_relocate_section (output_bfd
    1.13 -       struct elf_link_hash_entry *h;
    1.14 -       Elf_Internal_Sym *sym;
    1.15 -       asection *sec;
    1.16 --      bfd_vma relocation, off;
    1.17 -+      bfd_vma relocation, off, orig_addend = 0;
    1.18 -       bfd_reloc_status_type r;
    1.19 -       boolean is_plt = false;
    1.20 -       boolean unresolved_reloc;
    1.21 -@@ -1192,6 +1192,7 @@ elf32_sparc_relocate_section (output_bfd
    1.22 - 	{
    1.23 - 	  sym = local_syms + r_symndx;
    1.24 - 	  sec = local_sections[r_symndx];
    1.25 -+	  orig_addend = rel->r_addend;
    1.26 - 	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel);
    1.27 - 	}
    1.28 -       else
    1.29 -@@ -1527,6 +1528,25 @@ elf32_sparc_relocate_section (output_bfd
    1.30 - 			  asection *osec;
    1.31 - 
    1.32 - 			  osec = sec->output_section;
    1.33 -+			  /* FIXME: As soon as making sections zero size
    1.34 -+			     is possible, this if can go away.  */
    1.35 -+			  if (bfd_is_abs_section (osec)
    1.36 -+			      && h == NULL
    1.37 -+			      && (sec->flags & SEC_MERGE)
    1.38 -+			      && ELF_ST_TYPE (sym->st_info) == STT_SECTION
    1.39 -+			      && (elf_section_data (sec)->sec_info_type
    1.40 -+				  == ELF_INFO_TYPE_MERGE))
    1.41 -+			    {
    1.42 -+			      asection *msec;
    1.43 -+
    1.44 -+			      msec = sec;
    1.45 -+			      _bfd_merged_section_offset (output_bfd, &msec,
    1.46 -+					elf_section_data (sec)->sec_info,
    1.47 -+					sym->st_value + orig_addend,
    1.48 -+					(bfd_vma) 0);
    1.49 -+			      osec = msec->output_section;
    1.50 -+			     }
    1.51 -+
    1.52 - 			  indx = elf_section_data (osec)->dynindx;
    1.53 - 
    1.54 - 			  /* FIXME: we really should be able to link non-pic
    1.55 ---- binutils/bfd/elf64-sparc.c.jj	Sat Apr 20 22:11:57 2002
    1.56 -+++ binutils/bfd/elf64-sparc.c	Sat Apr 20 23:12:18 2002
    1.57 -@@ -1939,7 +1939,7 @@ sparc64_elf_relocate_section (output_bfd
    1.58 -       struct elf_link_hash_entry *h;
    1.59 -       Elf_Internal_Sym *sym;
    1.60 -       asection *sec;
    1.61 --      bfd_vma relocation, off;
    1.62 -+      bfd_vma relocation, off, orig_addend = 0;
    1.63 -       bfd_reloc_status_type r;
    1.64 -       boolean is_plt = false;
    1.65 -       boolean unresolved_reloc;
    1.66 -@@ -1982,6 +1982,7 @@ sparc64_elf_relocate_section (output_bfd
    1.67 - 	{
    1.68 - 	  sym = local_syms + r_symndx;
    1.69 - 	  sec = local_sections[r_symndx];
    1.70 -+	  orig_addend = rel->r_addend;
    1.71 - 	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel);
    1.72 - 	}
    1.73 -       else
    1.74 -@@ -2211,6 +2212,25 @@ sparc64_elf_relocate_section (output_bfd
    1.75 - 			    asection *osec;
    1.76 - 
    1.77 - 			    osec = sec->output_section;
    1.78 -+			    /* FIXME: As soon as making sections zero size
    1.79 -+			       is possible, this if can go away.  */
    1.80 -+			    if (bfd_is_abs_section (osec)
    1.81 -+				&& h == NULL
    1.82 -+				&& (sec->flags & SEC_MERGE)
    1.83 -+				&& ELF_ST_TYPE (sym->st_info) == STT_SECTION
    1.84 -+				&& (elf_section_data (sec)->sec_info_type
    1.85 -+				    == ELF_INFO_TYPE_MERGE))
    1.86 -+			      {
    1.87 -+				asection *msec;
    1.88 -+
    1.89 -+				msec = sec;
    1.90 -+				_bfd_merged_section_offset (output_bfd, &msec,
    1.91 -+					elf_section_data (sec)->sec_info,
    1.92 -+					sym->st_value + orig_addend,
    1.93 -+					(bfd_vma) 0);
    1.94 -+				osec = msec->output_section;
    1.95 -+			      }
    1.96 -+
    1.97 - 			    indx = elf_section_data (osec)->dynindx;
    1.98 - 
    1.99 - 			    /* FIXME: we really should be able to link non-pic