/* 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>.
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
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
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.
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. */
{
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);
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);
}
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,
{ "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 },
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. */
};