Fix seg-fault running strip on a corrupt binary.
[deliverable/binutils-gdb.git] / bfd / elfxx-tilegx.c
index 3423bacc6c16d4af0c43ec60a5d1208a66ff679c..9cd71b64650b59be7be1c3d304ae0dcf4e1cb930 100644 (file)
@@ -1439,8 +1439,7 @@ tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   /* This function may be called more than once.  */
-  s = bfd_get_linker_section (abfd, ".got");
-  if (s != NULL)
+  if (htab->sgot != NULL)
     return TRUE;
 
   flags = bed->dynamic_sec_flags;
@@ -1725,8 +1724,9 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
       if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
        {
-         (*_bfd_error_handler) (_("%B: bad symbol index: %d"),
-                                abfd, r_symndx);
+         /* xgettext:c-format */
+         _bfd_error_handler (_("%B: bad symbol index: %d"),
+                             abfd, r_symndx);
          return FALSE;
        }
 
@@ -1832,7 +1832,8 @@ tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                   tls_type = old_tls_type;
                 else
                   {
-                    (*_bfd_error_handler)
+                   _bfd_error_handler
+                     /* xgettext:c-format */
                       (_("%B: `%s' accessed both as normal and thread local symbol"),
                        abfd, h ? h->root.root.string : "<local>");
                     return FALSE;
@@ -3170,7 +3171,8 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
       if ((unsigned int)r_type >= ARRAY_SIZE (tilegx_elf_howto_table))
        {
           /* Not clear if we need to check here, but just be paranoid. */
-         (*_bfd_error_handler)
+         _bfd_error_handler
+           /* xgettext:c-format */
            (_("%B: unrecognized relocation (0x%x) in section `%A'"),
             input_bfd, r_type, input_section);
          bfd_set_error (bfd_error_bad_value);
@@ -3729,7 +3731,7 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                          if (indx == 0)
                            {
                              BFD_FAIL ();
-                             (*_bfd_error_handler)
+                             _bfd_error_handler
                                (_("%B: probably compiled without -fPIC?"),
                                 input_bfd);
                              bfd_set_error (bfd_error_bad_value);
@@ -3978,7 +3980,8 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
               && h->def_dynamic)
          && _bfd_elf_section_offset (output_bfd, info, input_section,
                                      rel->r_offset) != (bfd_vma) -1)
-       (*_bfd_error_handler)
+       _bfd_error_handler
+         /* xgettext:c-format */
          (_("%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"),
           input_bfd,
           input_section,
@@ -4044,15 +4047,14 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
          switch (r)
            {
            case bfd_reloc_overflow:
-             r = info->callbacks->reloc_overflow
+             (*info->callbacks->reloc_overflow)
                (info, (h ? &h->root : NULL), name, howto->name,
                 (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
-             r = info->callbacks->undefined_symbol
-               (info, name, input_bfd, input_section, rel->r_offset,
-                TRUE);
+             (*info->callbacks->undefined_symbol)
+               (info, name, input_bfd, input_section, rel->r_offset, TRUE);
              break;
 
            case bfd_reloc_outofrange:
@@ -4073,11 +4075,8 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            }
 
          if (msg)
-           r = info->callbacks->warning
-             (info, msg, name, input_bfd, input_section, rel->r_offset);
-
-         if (! r)
-           return FALSE;
+           (*info->callbacks->warning) (info, msg, name, input_bfd,
+                                        input_section, rel->r_offset);
        }
     }
 
@@ -4330,7 +4329,7 @@ tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
     {
       if (bfd_is_abs_section (htab->elf.sgotplt->output_section))
        {
-         (*_bfd_error_handler)
+         _bfd_error_handler
            (_("discarded output section: `%A'"), htab->elf.sgotplt);
          return FALSE;
        }
@@ -4430,14 +4429,16 @@ tilegx_additional_program_headers (bfd *abfd,
 
 
 bfd_boolean
-_bfd_tilegx_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+_bfd_tilegx_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
+  bfd *obfd = info->output_bfd;
   const char *targ1 = bfd_get_target (ibfd);
   const char *targ2 = bfd_get_target (obfd);
 
   if (strcmp (targ1, targ2) != 0)
     {
-      (*_bfd_error_handler)
+      _bfd_error_handler
+       /* xgettext:c-format */
        (_("%B: Cannot link together %s and %s objects."),
         ibfd, targ1, targ2);
       bfd_set_error (bfd_error_bad_value);
This page took 0.024654 seconds and 4 git commands to generate.