Replace "if (x) free (x)" with "free (x)", bfd
[deliverable/binutils-gdb.git] / bfd / elf64-alpha.c
index ca15944e608da0138e36e6713422c5a6d09ac344..4e4efae0b1bf2d76980d7f51a6a4183674d3e1de 100644 (file)
@@ -144,14 +144,14 @@ struct alpha_elf_reloc_entry
   /* Which .reloc section? */
   asection *srel;
 
-  /* What kind of relocation? */
-  unsigned int rtype;
-
-  /* Is this against read-only section? */
-  unsigned int reltext : 1;
+  /* Which section this relocation is against? */
+  asection *sec;
 
   /* How many did we find?  */
   unsigned long count;
+
+  /* What kind of relocation? */
+  unsigned int rtype;
 };
 
 struct alpha_elf_link_hash_entry
@@ -1422,30 +1422,18 @@ elf64_alpha_read_ecoff_info (bfd *abfd, asection *section,
   return TRUE;
 
  error_return:
-  if (ext_hdr != NULL)
-    free (ext_hdr);
-  if (debug->line != NULL)
-    free (debug->line);
-  if (debug->external_dnr != NULL)
-    free (debug->external_dnr);
-  if (debug->external_pdr != NULL)
-    free (debug->external_pdr);
-  if (debug->external_sym != NULL)
-    free (debug->external_sym);
-  if (debug->external_opt != NULL)
-    free (debug->external_opt);
-  if (debug->external_aux != NULL)
-    free (debug->external_aux);
-  if (debug->ss != NULL)
-    free (debug->ss);
-  if (debug->ssext != NULL)
-    free (debug->ssext);
-  if (debug->external_fdr != NULL)
-    free (debug->external_fdr);
-  if (debug->external_rfd != NULL)
-    free (debug->external_rfd);
-  if (debug->external_ext != NULL)
-    free (debug->external_ext);
+  free (ext_hdr);
+  free (debug->line);
+  free (debug->external_dnr);
+  free (debug->external_pdr);
+  free (debug->external_sym);
+  free (debug->external_opt);
+  free (debug->external_aux);
+  free (debug->ss);
+  free (debug->ssext);
+  free (debug->external_fdr);
+  free (debug->external_rfd);
+  free (debug->external_ext);
   return FALSE;
 }
 
@@ -1998,9 +1986,9 @@ elf64_alpha_check_relocs (bfd *abfd, struct bfd_link_info *info,
                    return FALSE;
 
                  rent->srel = sreloc;
+                 rent->sec = sec;
                  rent->rtype = r_type;
                  rent->count = 1;
-                 rent->reltext = (sec->flags & SEC_READONLY) != 0;
 
                  rent->next = h->reloc_entries;
                  h->reloc_entries = rent;
@@ -2014,7 +2002,13 @@ elf64_alpha_check_relocs (bfd *abfd, struct bfd_link_info *info,
                 loaded into memory, we need a RELATIVE reloc.  */
              sreloc->size += sizeof (Elf64_External_Rela);
              if (sec->flags & SEC_READONLY)
-               info->flags |= DF_TEXTREL;
+               {
+                 info->flags |= DF_TEXTREL;
+                 info->callbacks->minfo
+                   (_("%pB: dynamic relocation against `%pT' in "
+                      "read-only section `%pA'\n"),
+                    sec->owner, h->root.root.root.string, sec);
+               }
            }
        }
     }
@@ -2699,10 +2693,17 @@ elf64_alpha_calc_dynrel_sizes (struct alpha_elf_link_hash_entry *h,
                                                 bfd_link_pie (info));
       if (entries)
        {
+         asection *sec = relent->sec;
          relent->srel->size +=
            entries * sizeof (Elf64_External_Rela) * relent->count;
-         if (relent->reltext)
-           info->flags |= DT_TEXTREL;
+         if ((sec->flags & SEC_READONLY) != 0)
+           {
+             info->flags |= DT_TEXTREL;
+             info->callbacks->minfo
+               (_("%pB: dynamic relocation against `%pT' in "
+                  "read-only section `%pA'\n"),
+                sec->owner, h->root.root.root.string, sec);
+           }
        }
     }
 
@@ -3173,12 +3174,10 @@ elf64_alpha_relax_opt_call (struct alpha_relax_info *info, bfd_vma symval)
 
       if (!gpdisp || gpdisp->r_addend != 4)
        {
-         if (tsec_free)
-           free (tsec_free);
+         free (tsec_free);
          return 0;
        }
-      if (tsec_free)
-       free (tsec_free);
+      free (tsec_free);
     }
 
   /* We've now determined that we can skip an initial gp load.  Verify
@@ -4024,14 +4023,11 @@ elf64_alpha_relax_section (bfd *abfd, asection *sec,
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (info.contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != info.contents)
+  if (elf_section_data (sec)->this_hdr.contents != info.contents)
     free (info.contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -5525,6 +5521,9 @@ static const struct elf_size_info alpha_elf_size_info =
 #define elf_backend_special_sections \
   elf64_alpha_special_sections
 
+#define elf_backend_strip_zero_sized_dynamic_sections \
+  _bfd_elf_strip_zero_sized_dynamic_sections
+
 /* A few constants that determine how the .plt section is set up.  */
 #define elf_backend_want_got_plt 0
 #define elf_backend_plt_readonly 0
This page took 0.02971 seconds and 4 git commands to generate.