]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gas/config/obj-ecoff.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / gas / config / obj-ecoff.c
index 71aade070835f4e7195c51ec18eeec6109b6dea0..90fc5745127098715990f25b324e066b955abdc1 100644 (file)
@@ -1,6 +1,5 @@
 /* ECOFF object file format.
-   Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002,
-   2005  Free Software Foundation, Inc.
+   Copyright (C) 1993-2022 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    This file was put together by Ian Lance Taylor <ian@cygnus.com>.
 
@@ -8,7 +7,7 @@
 
    GAS 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, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #define OBJ_HEADER "obj-ecoff.h"
 #include "as.h"
 #include "coff/internal.h"
 #include "bfd/libcoff.h"
 #include "bfd/libecoff.h"
+#include "bfd/ecoff-bfd.h"
 
 /* Almost all of the ECOFF support is actually in ecoff.c in the main
    gas directory.  This file mostly just arranges to call that one at
@@ -37,7 +37,7 @@ void
 ecoff_frob_file_before_fix (void)
 {
   bfd_vma addr;
-  asection **sec;
+  asection *sec;
 
   /* Set the section VMA values.  We force the .sdata and .sbss
      sections to the end to ensure that their VMA addresses are close
@@ -54,7 +54,7 @@ ecoff_frob_file_before_fix (void)
      This output ordering of sections is magic, on the Alpha, at
      least.  The .lita section must come before .lit8 and .lit4,
      otherwise the OSF/1 linker may silently trash the .lit{4,8}
-     section contents.  Also, .text must preceed .rdata.  These differ
+     section contents.  Also, .text must precede .rdata.  These differ
      from the order described in some parts of the DEC OSF/1 Assembly
      Language Programmer's Guide, but that order doesn't seem to work
      with their linker.
@@ -78,33 +78,32 @@ ecoff_frob_file_before_fix (void)
 
   addr = 0;
   for (i = 0; i < n_names; i++)
-    secs[i] = 0;
+    secs[i] = NULL;
 
-  for (sec = &stdoutput->sections; *sec !=  NULL;)
+  for (sec = stdoutput->sections; sec != NULL; sec = sec->next)
     {
       for (i = 0; i < n_names; i++)
-       if (!strcmp ((*sec)->name, names[i]))
+       if (!strcmp (sec->name, names[i]))
          {
-           secs[i] = *sec;
+           secs[i] = sec;
            bfd_section_list_remove (stdoutput, sec);
            break;
          }
       if (i == n_names)
        {
-         bfd_set_section_vma (stdoutput, *sec, addr);
-         addr += bfd_section_size (stdoutput, *sec);
-         sec = &(*sec)->next;
+         bfd_set_section_vma (sec, addr);
+         addr += bfd_section_size (sec);
        }
     }
   for (i = 0; i < n_names; i++)
     if (secs[i])
       {
-       bfd_set_section_vma (stdoutput, secs[i], addr);
-       addr += bfd_section_size (stdoutput, secs[i]);
+       bfd_set_section_vma (secs[i], addr);
+       addr += bfd_section_size (secs[i]);
       }
   for (i = n_names - 1; i >= 0; i--)
     if (secs[i])
-      bfd_section_list_insert (stdoutput, &stdoutput->sections, secs[i]);
+      bfd_section_list_prepend (stdoutput, secs[i]);
 
   /* Fill in the register masks.  */
   {
@@ -147,7 +146,7 @@ ecoff_frob_file (void)
   char *set;
 
   /* Build the ECOFF debugging information.  */
-  assert (ecoff_data (stdoutput) != 0);
+  gas_assert (ecoff_data (stdoutput) != 0);
   hdr = &ecoff_data (stdoutput)->debug_info.symbolic_header;
   ecoff_build_debug (hdr, &buf, debug_swap);
 
@@ -190,7 +189,7 @@ obj_ecoff_set_ext (symbolS *sym, EXTR *ext)
   know (bfd_asymbol_flavour (symbol_get_bfdsym (sym))
        == bfd_target_ecoff_flavour);
   esym = ecoffsymbol (symbol_get_bfdsym (sym));
-  esym->local = FALSE;
+  esym->local = false;
   esym->native = xmalloc (debug_swap->external_ext_size);
   (*debug_swap->swap_ext_out) (stdoutput, ext, esym->native);
 }
@@ -223,8 +222,8 @@ ecoff_separate_stab_sections (void)
    relating to debugging information are supported here.
 
    The following pseudo-ops from the Kane and Heinrich MIPS book
-   should be defined here, but are currently unsupported: .aent,
-   .bgnb, .endb, .verstamp, .vreg.
+   should be defined here, but are currently unsupported: .bgnb,
+   .endb, .verstamp, .vreg.
 
    The following pseudo-ops from the Kane and Heinrich MIPS book are
    MIPS CPU specific, and should be defined by tc-mips.c: .alias,
@@ -255,6 +254,7 @@ const pseudo_typeS obj_pseudo_table[] =
   { "val",     ecoff_directive_val,    0 },
 
   /* ECOFF specific debugging information.  */
+  { "aent",    ecoff_directive_ent,    1 },
   { "begin",   ecoff_directive_begin,  0 },
   { "bend",    ecoff_directive_bend,   0 },
   { "end",     ecoff_directive_end,    0 },
@@ -315,5 +315,7 @@ const struct format_ops ecoff_format_ops =
   ecoff_pop_insert,
   ecoff_set_ext,
   ecoff_read_begin_hook,
-  ecoff_symbol_new_hook
+  ecoff_symbol_new_hook,
+  ecoff_symbol_clone_hook,
+  0    /* adjust_symtab.  */
 };