2004-07-26 Andrew Cagney <cagney@gnu.org>
[deliverable/binutils-gdb.git] / bfd / elfxx-ia64.c
index b19aac2c55d1c4e0885914fe59dd978f52e9709e..e0c70c11aeb86a4afdff9c75e7188ed6d5eb8d39 100644 (file)
@@ -180,13 +180,13 @@ static bfd_boolean elfNN_ia64_relax_section
   PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info,
          bfd_boolean *again));
 static void elfNN_ia64_relax_ldxmov
-  PARAMS((bfd *abfd, bfd_byte *contents, bfd_vma off));
+  PARAMS((bfd_byte *contents, bfd_vma off));
 static bfd_boolean is_unwind_section_name
   PARAMS ((bfd *abfd, const char *));
 static bfd_boolean elfNN_ia64_section_from_shdr
   PARAMS ((bfd *, Elf_Internal_Shdr *, const char *));
 static bfd_boolean elfNN_ia64_section_flags
-  PARAMS ((flagword *, Elf_Internal_Shdr *));
+  PARAMS ((flagword *, const Elf_Internal_Shdr *));
 static bfd_boolean elfNN_ia64_fake_sections
   PARAMS ((bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec));
 static void elfNN_ia64_final_write_processing
@@ -273,7 +273,7 @@ static bfd_boolean allocate_dynrel_entries
 static bfd_boolean elfNN_ia64_size_dynamic_sections
   PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
 static bfd_reloc_status_type elfNN_ia64_install_value
-  PARAMS ((bfd *abfd, bfd_byte *hit_addr, bfd_vma val, unsigned int r_type));
+  PARAMS ((bfd_byte *hit_addr, bfd_vma val, unsigned int r_type));
 static void elfNN_ia64_install_dyn_reloc
   PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec,
           asection *srel, bfd_vma offset, unsigned int type,
@@ -674,7 +674,7 @@ bfd_elfNN_ia64_after_parse (int itanium)
 }
 
 static void
-elfNN_ia64_relax_brl (bfd *abfd, bfd_byte *contents, bfd_vma off)
+elfNN_ia64_relax_brl (bfd_byte *contents, bfd_vma off)
 {
   int template;
   bfd_byte *hit_addr;
@@ -682,8 +682,8 @@ elfNN_ia64_relax_brl (bfd *abfd, bfd_byte *contents, bfd_vma off)
 
   hit_addr = (bfd_byte *) (contents + off);
   hit_addr -= (long) hit_addr & 0x3;
-  t0 = bfd_get_64 (abfd, hit_addr);
-  t1 = bfd_get_64 (abfd, hit_addr + 8);
+  t0 = bfd_getl64 (hit_addr);
+  t1 = bfd_getl64 (hit_addr + 8);
 
   /* Keep the instruction in slot 0. */
   i0 = (t0 >> 5) & 0x1ffffffffffLL;
@@ -700,8 +700,8 @@ elfNN_ia64_relax_brl (bfd *abfd, bfd_byte *contents, bfd_vma off)
   t0 = (i1 << 46) | (i0 << 5) | template;
   t1 = (i2 << 23) | (i1 >> 18);
 
-  bfd_put_64 (abfd, t0, hit_addr);
-  bfd_put_64 (abfd, t1, hit_addr + 8);
+  bfd_putl64 (t0, hit_addr);
+  bfd_putl64 (t1, hit_addr + 8);
 }
 \f
 /* These functions do relaxation for IA-64 ELF.  */
@@ -749,11 +749,6 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
          && sec->need_finalize_relax == 0))
     return TRUE;
 
-  /* If this is the first time we have been called for this section,
-     initialize the cooked size.  */
-  if (sec->_cooked_size == 0)
-    sec->_cooked_size = sec->_raw_size;
-
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
   /* Load the relocations for this section.  */
@@ -771,12 +766,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
     contents = elf_section_data (sec)->this_hdr.contents;
   else
     {
-      contents = (bfd_byte *) bfd_malloc (sec->_raw_size);
-      if (contents == NULL)
-       goto error_return;
-
-      if (! bfd_get_section_contents (abfd, sec, contents,
-                                     (file_ptr) 0, sec->_raw_size))
+      if (!bfd_malloc_and_get_section (abfd, sec, &contents))
        goto error_return;
     }
 
@@ -789,6 +779,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
       bfd_size_type amt;
       bfd_boolean is_branch;
       struct elfNN_ia64_dyn_sym_info *dyn_i;
+      char symtype;
 
       switch (r_type)
        {
@@ -864,6 +855,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
 
          toff = isym->st_value;
          dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE);
+         symtype = ELF_ST_TYPE (isym->st_info);
        }
       else
        {
@@ -908,13 +900,38 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
              tsec = h->root.u.def.section;
              toff = h->root.u.def.value;
            }
+
+         symtype = h->type;
        }
 
       if (tsec->sec_info_type == ELF_INFO_TYPE_MERGE)
-       toff = _bfd_merged_section_offset (abfd, &tsec,
-                                          elf_section_data (tsec)->sec_info,
-                                          toff + irel->r_addend,
-                                          (bfd_vma) 0);
+       {
+         /* At this stage in linking, no SEC_MERGE symbol has been
+            adjusted, so all references to such symbols need to be
+            passed through _bfd_merged_section_offset.  (Later, in
+            relocate_section, all SEC_MERGE symbols *except* for
+            section symbols have been adjusted.)
+
+            gas may reduce relocations against symbols in SEC_MERGE
+            sections to a relocation against the section symbol when
+            the original addend was zero.  When the reloc is against
+            a section symbol we should include the addend in the
+            offset passed to _bfd_merged_section_offset, since the
+            location of interest is the original symbol.  On the
+            other hand, an access to "sym+addend" where "sym" is not
+            a section symbol should not include the addend;  Such an
+            access is presumed to be an offset from "sym";  The
+            location of interest is just "sym".  */
+          if (symtype == STT_SECTION)
+            toff += irel->r_addend;
+          
+          toff = _bfd_merged_section_offset (abfd, &tsec,
+                                             elf_section_data (tsec)->sec_info,
+                                             toff);
+
+          if (symtype != STT_SECTION)
+            toff += irel->r_addend;
+       }
       else
        toff += irel->r_addend;
 
@@ -937,7 +954,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
              /* If the 60-bit branch is in 21-bit range, optimize it. */
              if (r_type == R_IA64_PCREL60B)
                {
-                 elfNN_ia64_relax_brl (abfd, contents, roff);
+                 elfNN_ia64_relax_brl (contents, roff);
 
                  irel->r_info
                    = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
@@ -954,6 +971,19 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
          else if (r_type == R_IA64_PCREL60B)
            continue;
 
+         /* We can't put a trampoline in a .init/.fini section. Issue
+            an error.  */
+         if (strcmp (sec->output_section->name, ".init") == 0
+             || strcmp (sec->output_section->name, ".fini") == 0)
+           {
+             (*_bfd_error_handler)
+               (_("%s: Can't relax br at 0x%lx in section `%s'. Please use brl or indirect branch."),
+                bfd_archive_filename (sec->owner),
+                (unsigned long) roff, sec->name);
+             bfd_set_error (bfd_error_bad_value);
+             goto error_return;
+           }
+
          /* If the branch and target are in the same section, you've
             got one honking big section and we can't help you.  You'll
             get an error message later.  */
@@ -979,7 +1009,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
                size = oor_branch_size;
 
              /* Resize the current section to make room for the new branch. */
-             trampoff = (sec->_cooked_size + 15) & (bfd_vma) -16;
+             trampoff = (sec->size + 15) & (bfd_vma) -16;
 
              /* If trampoline is out of range, there is nothing we
                 can do.  */
@@ -991,7 +1021,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
              contents = (bfd_byte *) bfd_realloc (contents, amt);
              if (contents == NULL)
                goto error_return;
-             sec->_cooked_size = amt;
+             sec->size = amt;
 
              if (tsec == ia64_info->plt_sec)
                {
@@ -1044,8 +1074,8 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
            }
 
          /* Fix up the existing branch to hit the trampoline.  */
-         if (elfNN_ia64_install_value (abfd, contents + roff, offset,
-                                       r_type) != bfd_reloc_ok)
+         if (elfNN_ia64_install_value (contents + roff, offset, r_type)
+             != bfd_reloc_ok)
            goto error_return;
 
          changed_contents = TRUE;
@@ -1084,7 +1114,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
            }
          else
            {
-             elfNN_ia64_relax_ldxmov (abfd, contents, roff);
+             elfNN_ia64_relax_ldxmov (contents, roff);
              irel->r_info = ELFNN_R_INFO (0, R_IA64_NONE);
              changed_contents = TRUE;
              changed_relocs = TRUE;
@@ -1147,8 +1177,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_data_got, &data);
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_fptr_got, &data);
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_local_got, &data);
-      ia64_info->got_sec->_raw_size = data.ofs;
-      ia64_info->got_sec->_cooked_size = data.ofs;
+      ia64_info->got_sec->size = data.ofs;
 
       /* ??? Resize .rela.got too.  */
     }
@@ -1172,8 +1201,7 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
 }
 
 static void
-elfNN_ia64_relax_ldxmov (abfd, contents, off)
-     bfd *abfd;
+elfNN_ia64_relax_ldxmov (contents, off)
      bfd_byte *contents;
      bfd_vma off;
 {
@@ -1189,7 +1217,7 @@ elfNN_ia64_relax_ldxmov (abfd, contents, off)
       abort ();
     }
 
-  dword = bfd_get_64 (abfd, contents + off);
+  dword = bfd_getl64 (contents + off);
   insn = (dword >> shift) & 0x1ffffffffffLL;
 
   r1 = (insn >> 6) & 127;
@@ -1201,7 +1229,7 @@ elfNN_ia64_relax_ldxmov (abfd, contents, off)
 
   dword &= ~(0x1ffffffffffLL << shift);
   dword |= (insn << shift);
-  bfd_put_64 (abfd, dword, contents + off);
+  bfd_putl64 (dword, contents + off);
 }
 \f
 /* Return TRUE if NAME is an unwind table section name.  */
@@ -1271,7 +1299,7 @@ elfNN_ia64_section_from_shdr (abfd, hdr, name)
 static bfd_boolean
 elfNN_ia64_section_flags (flags, hdr)
      flagword *flags;
-     Elf_Internal_Shdr *hdr;
+     const Elf_Internal_Shdr *hdr;
 {
   if (hdr->sh_flags & SHF_IA_64_SHORT)
     *flags |= SEC_SMALL_DATA;
@@ -2219,7 +2247,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
   const Elf_Internal_Rela *relend;
   Elf_Internal_Shdr *symtab_hdr;
   const Elf_Internal_Rela *rel;
-  asection *got, *fptr, *srel;
+  asection *got, *fptr, *srel, *pltoff;
 
   if (info->relocatable)
     return TRUE;
@@ -2227,7 +2255,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   ia64_info = elfNN_ia64_hash_table (info);
 
-  got = fptr = srel = NULL;
+  got = fptr = srel = pltoff = NULL;
 
   relend = relocs + sec->reloc_count;
   for (rel = relocs; rel < relend; ++rel)
@@ -2478,7 +2506,18 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
       if (need_entry & NEED_FULL_PLT)
        dyn_i->want_plt2 = 1;
       if (need_entry & NEED_PLTOFF)
-       dyn_i->want_pltoff = 1;
+       {
+         /* This is needed here, in case @pltoff is used in a non-shared
+            link.  */
+         if (!pltoff)
+           {
+             pltoff = get_pltoff (abfd, info, ia64_info);
+             if (!pltoff)
+               return FALSE;
+           }
+         
+         dyn_i->want_pltoff = 1;
+       }
       if ((need_entry & NEED_DYNREL) && (sec->flags & SEC_ALLOC))
        {
          if (!srel)
@@ -2797,7 +2836,7 @@ allocate_dynrel_entries (dyn_i, data)
        }
       if (rent->reltext)
        ia64_info->reltext = 1;
-      rent->srel->_raw_size += sizeof (ElfNN_External_Rela) * count;
+      rent->srel->size += sizeof (ElfNN_External_Rela) * count;
     }
 
   /* Take care of the GOT and PLT relocations.  */
@@ -2813,18 +2852,18 @@ allocate_dynrel_entries (dyn_i, data)
          || !x->info->pie
          || dyn_i->h == NULL
          || dyn_i->h->root.type != bfd_link_hash_undefweak)
-       ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
+       ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela);
     }
   if ((dynamic_symbol || shared) && dyn_i->want_tprel)
-    ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
+    ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela);
   if (dynamic_symbol && dyn_i->want_dtpmod)
-    ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
+    ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela);
   if (dynamic_symbol && dyn_i->want_dtprel)
-    ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
+    ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela);
   if (ia64_info->rel_fptr_sec && dyn_i->want_fptr)
     {
       if (dyn_i->h == NULL || dyn_i->h->root.type != bfd_link_hash_undefweak)
-       ia64_info->rel_fptr_sec->_raw_size += sizeof (ElfNN_External_Rela);
+       ia64_info->rel_fptr_sec->size += sizeof (ElfNN_External_Rela);
     }
 
   if (!resolved_zero && dyn_i->want_pltoff)
@@ -2839,7 +2878,7 @@ allocate_dynrel_entries (dyn_i, data)
       else if (shared)
        t = 2 * sizeof (ElfNN_External_Rela);
 
-      ia64_info->rel_pltoff_sec->_raw_size += t;
+      ia64_info->rel_pltoff_sec->size += t;
     }
 
   return TRUE;
@@ -2899,7 +2938,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
       sec = bfd_get_section_by_name (dynobj, ".interp");
       BFD_ASSERT (sec != NULL);
       sec->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
-      sec->_raw_size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
+      sec->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
     }
 
   /* Allocate the GOT entries.  */
@@ -2910,7 +2949,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_data_got, &data);
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_global_fptr_got, &data);
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_local_got, &data);
-      ia64_info->got_sec->_raw_size = data.ofs;
+      ia64_info->got_sec->size = data.ofs;
     }
 
   /* Allocate the FPTR entries.  */
@@ -2919,7 +2958,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
     {
       data.ofs = 0;
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_fptr, &data);
-      ia64_info->fptr_sec->_raw_size = data.ofs;
+      ia64_info->fptr_sec->size = data.ofs;
     }
 
   /* Now that we've seen all of the input files, we can decide which
@@ -2949,12 +2988,12 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
 
       BFD_ASSERT (ia64_info->root.dynamic_sections_created);
 
-      ia64_info->plt_sec->_raw_size = data.ofs;
+      ia64_info->plt_sec->size = data.ofs;
 
       /* If we've got a .plt, we need some extra memory for the dynamic
         linker.  We stuff these in .got.plt.  */
       sec = bfd_get_section_by_name (dynobj, ".got.plt");
-      sec->_raw_size = 8 * PLT_RESERVED_WORDS;
+      sec->size = 8 * PLT_RESERVED_WORDS;
     }
 
   /* Allocate the PLTOFF entries.  */
@@ -2963,7 +3002,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
     {
       data.ofs = 0;
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_pltoff_entries, &data);
-      ia64_info->pltoff_sec->_raw_size = data.ofs;
+      ia64_info->pltoff_sec->size = data.ofs;
     }
 
   if (ia64_info->root.dynamic_sections_created)
@@ -2972,7 +3011,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
         required.  */
 
       if (info->shared && ia64_info->self_dtpmod_offset != (bfd_vma) -1)
-       ia64_info->rel_got_sec->_raw_size += sizeof (ElfNN_External_Rela);
+       ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela);
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &data);
     }
 
@@ -2993,7 +3032,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
         function which decides whether anything needs to go into
         these sections.  */
 
-      strip = (sec->_raw_size == 0);
+      strip = (sec->size == 0);
 
       if (sec == ia64_info->got_sec)
        strip = FALSE;
@@ -3070,8 +3109,8 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
       else
        {
          /* Allocate memory for the section contents.  */
-         sec->contents = (bfd_byte *) bfd_zalloc (dynobj, sec->_raw_size);
-         if (sec->contents == NULL && sec->_raw_size != 0)
+         sec->contents = (bfd_byte *) bfd_zalloc (dynobj, sec->size);
+         if (sec->contents == NULL && sec->size != 0)
            return FALSE;
        }
     }
@@ -3125,8 +3164,7 @@ elfNN_ia64_size_dynamic_sections (output_bfd, info)
 }
 
 static bfd_reloc_status_type
-elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
-     bfd *abfd;
+elfNN_ia64_install_value (hit_addr, v, r_type)
      bfd_byte *hit_addr;
      bfd_vma v;
      unsigned int r_type;
@@ -3258,8 +3296,8 @@ elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
     {
     case IA64_OPND_IMMU64:
       hit_addr -= (long) hit_addr & 0x3;
-      t0 = bfd_get_64 (abfd, hit_addr);
-      t1 = bfd_get_64 (abfd, hit_addr + 8);
+      t0 = bfd_getl64 (hit_addr);
+      t1 = bfd_getl64 (hit_addr + 8);
 
       /* tmpl/s: bits  0.. 5 in t0
         slot 0: bits  5..45 in t0
@@ -3281,14 +3319,14 @@ elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
               | (((val >> 21) & 0x001) << 21)          /* ic */
               | (((val >> 63) & 0x001) << 36)) << 23;  /* i */
 
-      bfd_put_64 (abfd, t0, hit_addr);
-      bfd_put_64 (abfd, t1, hit_addr + 8);
+      bfd_putl64 (t0, hit_addr);
+      bfd_putl64 (t1, hit_addr + 8);
       break;
 
     case IA64_OPND_TGT64:
       hit_addr -= (long) hit_addr & 0x3;
-      t0 = bfd_get_64 (abfd, hit_addr);
-      t1 = bfd_get_64 (abfd, hit_addr + 8);
+      t0 = bfd_getl64 (hit_addr);
+      t1 = bfd_getl64 (hit_addr + 8);
 
       /* tmpl/s: bits  0.. 5 in t0
         slot 0: bits  5..45 in t0
@@ -3306,8 +3344,8 @@ elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
       t1 |= ((((val >> 0) & 0xfffffLL) << 13)          /* imm20b */
              | (((val >> 59) & 0x1LL) << 36)) << 23;   /* i */
 
-      bfd_put_64 (abfd, t0, hit_addr);
-      bfd_put_64 (abfd, t1, hit_addr + 8);
+      bfd_putl64 (t0, hit_addr);
+      bfd_putl64 (t1, hit_addr + 8);
       break;
 
     default:
@@ -3318,7 +3356,7 @@ elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
        case 2: shift = 23; hit_addr += 6; break;
        case 3: return bfd_reloc_notsupported; /* shouldn't happen...  */
        }
-      dword = bfd_get_64 (abfd, hit_addr);
+      dword = bfd_getl64 (hit_addr);
       insn = (dword >> shift) & 0x1ffffffffffLL;
 
       op = elf64_ia64_operands + opnd;
@@ -3328,7 +3366,7 @@ elfNN_ia64_install_value (abfd, hit_addr, v, r_type)
 
       dword &= ~(0x1ffffffffffLL << shift);
       dword |= (insn << shift);
-      bfd_put_64 (abfd, dword, hit_addr);
+      bfd_putl64 (dword, hit_addr);
       break;
 
     case IA64_OPND_NIL:
@@ -3382,8 +3420,7 @@ elfNN_ia64_install_dyn_reloc (abfd, info, sec, srel, offset, type,
   loc = srel->contents;
   loc += srel->reloc_count++ * sizeof (ElfNN_External_Rela);
   bfd_elfNN_swap_reloca_out (abfd, &outrel, loc);
-  BFD_ASSERT (sizeof (ElfNN_External_Rela) * srel->reloc_count
-             <= srel->_cooked_size);
+  BFD_ASSERT (sizeof (ElfNN_External_Rela) * srel->reloc_count <= srel->size);
 }
 
 /* Store an entry for target address TARGET_ADDR in the linkage table
@@ -3699,7 +3736,7 @@ elfNN_ia64_choose_gp (abfd, info)
        continue;
 
       lo = os->vma;
-      hi = os->vma + os->_raw_size;
+      hi = os->vma + os->size;
       if (hi < lo)
        hi = (bfd_vma) -1;
 
@@ -3835,7 +3872,7 @@ elfNN_ia64_final_link (abfd, info)
        {
          unwind_output_sec = s->output_section;
          unwind_output_sec->contents
-           = bfd_malloc (unwind_output_sec->_raw_size);
+           = bfd_malloc (unwind_output_sec->size);
          if (unwind_output_sec->contents == NULL)
            return FALSE;
        }
@@ -3849,13 +3886,13 @@ elfNN_ia64_final_link (abfd, info)
     {
       elfNN_ia64_unwind_entry_compare_bfd = abfd;
       qsort (unwind_output_sec->contents,
-            (size_t) (unwind_output_sec->_raw_size / 24),
+            (size_t) (unwind_output_sec->size / 24),
             24,
             elfNN_ia64_unwind_entry_compare);
 
       if (! bfd_set_section_contents (abfd, unwind_output_sec,
                                      unwind_output_sec->contents, (bfd_vma) 0,
-                                     unwind_output_sec->_raw_size))
+                                     unwind_output_sec->size))
        return FALSE;
     }
 
@@ -3963,8 +4000,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                                                    elf_section_data (msec)->
                                                    sec_info,
                                                    sym->st_value
-                                                   + dynent->addend,
-                                                   (bfd_vma) 0);
+                                                   + dynent->addend);
                      dynent->addend -= sym->st_value;
                      dynent->addend += msec->output_section->vma
                                        + msec->output_offset
@@ -4081,7 +4117,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_IA64_LTV32LSB:
        case R_IA64_LTV64MSB:
        case R_IA64_LTV64LSB:
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_GPREL22:
@@ -4099,7 +4135,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
              continue;
            }
          value -= gp_val;
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_LTOFF22:
@@ -4109,7 +4145,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
          value = set_got_entry (input_bfd, info, dyn_i, (h ? h->dynindx : -1),
                                 rel->r_addend, value, R_IA64_DIR64LSB);
          value -= gp_val;
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_PLTOFF22:
@@ -4119,7 +4155,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
           dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
          value = set_pltoff_entry (output_bfd, info, dyn_i, value, FALSE);
          value -= gp_val;
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_FPTR64I:
@@ -4184,7 +4220,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                                            dynindx, addend);
            }
 
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_LTOFF_FPTR22:
@@ -4226,7 +4262,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
            value = set_got_entry (output_bfd, info, dyn_i, dynindx,
                                   rel->r_addend, value, R_IA64_FPTR64LSB);
            value -= gp_val;
-           r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+           r = elfNN_ia64_install_value (hit_addr, value, r_type);
          }
          break;
 
@@ -4307,7 +4343,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
          value -= (input_section->output_section->vma
                    + input_section->output_offset
                    + rel->r_offset) & ~ (bfd_vma) 0x3;
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_SEGREL32MSB:
@@ -4351,8 +4387,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                    value -= p->p_vaddr;
                  else
                    value = 0;
-                 r = elfNN_ia64_install_value (output_bfd, hit_addr, value,
-                                               r_type);
+                 r = elfNN_ia64_install_value (hit_addr, value, r_type);
                }
              break;
            }
@@ -4366,7 +4401,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
            value -= input_section->output_section->vma;
          else
            value = 0;
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_IPLTMSB:
@@ -4407,16 +4442,15 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
            r_type = R_IA64_DIR64MSB;
          else
            r_type = R_IA64_DIR64LSB;
-         elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
-         r = elfNN_ia64_install_value (output_bfd, hit_addr + 8, gp_val,
-                                       r_type);
+         elfNN_ia64_install_value (hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr + 8, gp_val, r_type);
          break;
 
        case R_IA64_TPREL14:
        case R_IA64_TPREL22:
        case R_IA64_TPREL64I:
          value -= elfNN_ia64_tprel_base (info);
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_DTPREL14:
@@ -4425,7 +4459,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_IA64_DTPREL64LSB:
        case R_IA64_DTPREL64MSB:
          value -= elfNN_ia64_dtprel_base (info);
-         r = elfNN_ia64_install_value (output_bfd, hit_addr, value, r_type);
+         r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;
 
        case R_IA64_LTOFF_TPREL22:
@@ -4467,8 +4501,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
            value = set_got_entry (input_bfd, info, dyn_i, dynindx, r_addend,
                                   value, got_r_type);
            value -= gp_val;
-           r = elfNN_ia64_install_value (output_bfd, hit_addr, value,
-                                         r_type);
+           r = elfNN_ia64_install_value (hit_addr, value, r_type);
          }
          break;
 
@@ -4579,9 +4612,8 @@ elfNN_ia64_finish_dynamic_symbol (output_bfd, info, h, sym)
       loc = plt_sec->contents + dyn_i->plt_offset;
 
       memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SIZE);
-      elfNN_ia64_install_value (output_bfd, loc, index, R_IA64_IMM22);
-      elfNN_ia64_install_value (output_bfd, loc+2, -dyn_i->plt_offset,
-                               R_IA64_PCREL21B);
+      elfNN_ia64_install_value (loc, index, R_IA64_IMM22);
+      elfNN_ia64_install_value (loc+2, -dyn_i->plt_offset, R_IA64_PCREL21B);
 
       plt_addr = (plt_sec->output_section->vma
                  + plt_sec->output_offset
@@ -4594,8 +4626,7 @@ elfNN_ia64_finish_dynamic_symbol (output_bfd, info, h, sym)
          loc = plt_sec->contents + dyn_i->plt2_offset;
 
          memcpy (loc, plt_full_entry, PLT_FULL_ENTRY_SIZE);
-         elfNN_ia64_install_value (output_bfd, loc, pltoff_addr - gp_val,
-                                   R_IA64_IMM22);
+         elfNN_ia64_install_value (loc, pltoff_addr - gp_val, R_IA64_IMM22);
 
          /* Mark the symbol as undefined, rather than as defined in the
             plt section.  Leave the value alone.  */
@@ -4661,7 +4692,7 @@ elfNN_ia64_finish_dynamic_sections (abfd, info)
       sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
       BFD_ASSERT (sdyn != NULL);
       dyncon = (ElfNN_External_Dyn *) sdyn->contents;
-      dynconend = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+      dynconend = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->size);
 
       gp_val = _bfd_get_gp_value (abfd);
 
@@ -4718,7 +4749,7 @@ elfNN_ia64_finish_dynamic_sections (abfd, info)
                    + sgotplt->output_offset
                    - gp_val);
 
-         elfNN_ia64_install_value (abfd, loc+1, pltres, R_IA64_GPREL22);
+         elfNN_ia64_install_value (loc+1, pltres, R_IA64_GPREL22);
        }
     }
 
This page took 0.035458 seconds and 4 git commands to generate.