Update year range in copyright notice of all files.
[deliverable/binutils-gdb.git] / bfd / coff-aux.c
index 53822f04ed713920c92045e34c1572345aac5919..0f0b4f02a4eebb6dca2daa22c37c85d99a6e0703 100644 (file)
@@ -1,24 +1,25 @@
 /* BFD back-end for Apple M68K COFF A/UX 3.x files.
-   Copyright 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1996-2017 Free Software Foundation, Inc.
    Written by Richard Henderson <rth@tamu.edu>.
 
-This file is part of BFD, the Binary File Descriptor library.
+   This file is part of BFD, the Binary File Descriptor library.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
-#define TARGET_SYM     m68kaux_coff_vec
+#define TARGET_SYM     m68k_coff_aux_vec
 #define TARGET_NAME    "coff-m68k-aux"
 
 #ifndef TARG_AUX
@@ -37,15 +38,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define COFF_COMMON_ADDEND
 
-#include "bfd.h"
 #include "sysdep.h"
-
-static boolean coff_m68k_aux_link_add_one_symbol
-  PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
-           asection *, bfd_vma, const char *, boolean, boolean,
-           struct bfd_link_hash_entry **));
+#include "bfd.h"
 
 #define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
+static bfd_boolean
+coff_m68k_aux_link_add_one_symbol
+  (struct bfd_link_info *, bfd *, const char *, flagword, asection *,
+   bfd_vma, const char *, bfd_boolean, bfd_boolean,
+   struct bfd_link_hash_entry **);
+
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata     NULL
+#endif
 
 #include "coff/aux-coff.h"  /* override coff/internal.h and coff/m68k.h */
 #include "coff-m68k.c"
@@ -56,75 +61,80 @@ static boolean coff_m68k_aux_link_add_one_symbol
    shared libraries work here, but can work if you are careful with
    what you include in the shared object.  */
 
-static boolean
-coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
-                                  string, copy, collect, hashp)
-     struct bfd_link_info *info;
-     bfd *abfd;
-     const char *name;
-     flagword flags;
-     asection *section;
-     bfd_vma value;
-     const char *string;
-     boolean copy;
-     boolean collect;
-     struct bfd_link_hash_entry **hashp;
+static bfd_boolean
+coff_m68k_aux_link_add_one_symbol (struct bfd_link_info *info,
+                                  bfd *abfd,
+                                  const char *name,
+                                  flagword flags,
+                                  asection *section,
+                                  bfd_vma value,
+                                  const char *string,
+                                  bfd_boolean copy,
+                                  bfd_boolean collect,
+                                  struct bfd_link_hash_entry **hashp)
 {
-  struct bfd_link_hash_entry *h;
+  struct bfd_link_hash_entry *h, *inh, *t;
 
-  if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0 &&
-      !bfd_is_und_section (section) &&
-      !bfd_is_com_section (section))
+  if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0
+      && !bfd_is_und_section (section)
+      && !bfd_is_com_section (section))
     {
       /* The new symbol is a definition or an indirect definition */
 
       /* This bit copied from linker.c */
       if (hashp != NULL && *hashp != NULL)
-       {
-         h = *hashp;
-         BFD_ASSERT (strcmp (h->root.string, name) == 0);
-       }
+       h = *hashp;
       else
        {
-         h = bfd_link_hash_lookup (info->hash, name, true, copy, false);
+         h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
          if (h == NULL)
            {
              if (hashp != NULL)
                *hashp = NULL;
-             return false;
+             return FALSE;
            }
        }
 
-      if (info->notice_hash != (struct bfd_hash_table *) NULL
-         && (bfd_hash_lookup (info->notice_hash, name, false, false)
-             != (struct bfd_hash_entry *) NULL))
-       {
-         if (! (*info->callbacks->notice) (info, name, abfd, section, value))
-           return false;
-       }
-
       if (hashp != (struct bfd_link_hash_entry **) NULL)
        *hashp = h;
       /* end duplication from linker.c */
 
-      if (h->type == bfd_link_hash_defined
-         || h->type == bfd_link_hash_indirect)
+      t = h;
+      inh = NULL;
+      if (h->type == bfd_link_hash_indirect)
        {
-         asection *msec;
+         inh = h->u.i.link;
+         t = inh;
+       }
 
-         if (h->type == bfd_link_hash_defined)
-           msec = h->u.def.section;
-         else
-           msec = bfd_ind_section_ptr;
+      if (t->type == bfd_link_hash_defined)
+       {
+         asection *msec = t->u.def.section;
+         bfd_boolean special = FALSE;
 
          if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
            {
-             h->u.def.section = section;
-             h->u.def.value = value;
-             return true;
+             t->u.def.section = section;
+             t->u.def.value = value;
+             special = TRUE;
            }
          else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
-           return true;
+           special = TRUE;
+
+         if (special)
+           {
+             if (info->notice_all
+                 || (info->notice_hash != NULL
+                     && bfd_hash_lookup (info->notice_hash, name,
+                                         FALSE, FALSE) != NULL))
+               {
+                 if (!(*info->callbacks->notice) (info, h, inh,
+                                                  abfd, section, value, flags))
+                   return FALSE;
+               }
+
+             return TRUE;
+           }
        }
     }
 
This page took 0.026974 seconds and 4 git commands to generate.