/* ECOFF debugging support.
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file was put together by Ian Lance Taylor <ian@cygnus.com>. A
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,
#include "as.h"
/* This file is compiled conditionally for those targets which use
- ECOFF debugging information (e.g., MIPS ECOFF, MIPS ELF, Alpha
- ECOFF). */
+ ECOFF debugging information (e.g., MIPS ELF, Alpha ECOFF). */
#include "ecoff.h"
#include "coff/internal.h"
#include "coff/symconst.h"
#include "aout/stab_gnu.h"
-
+#include "filenames.h"
#include "safe-ctype.h"
/* Why isn't this in coff/sym.h? */
obj->ecoff_symbol = NULL;
obj->ecoff_extern_size = 0;
}
+
+void
+ecoff_symbol_clone_hook (symbolS *newsymP, symbolS *orgsymP)
+{
+ OBJ_SYMFIELD_TYPE *n, *o;
+
+ n = symbol_get_obj (newsymP);
+ o = symbol_get_obj (orgsymP);
+ memcpy (n, o, sizeof *n);
+}
\f
/* Add a page to a varray object. */
ty = add_aux_sym_tir (&last_func_type_info,
hash_no,
&cur_file_ptr->thash_head[0]);
-
+ (void) ty;
/* This seems to be unnecessary. I'm not even sure what it is
* intended to do. It's from mips-tfile.
* if (last_func_sym_value != (symbolS *) NULL)
fil_ptr = fil_ptr->next_file)
{
if (first_ch == fil_ptr->name[0]
- && strcmp (file_name, fil_ptr->name) == 0
+ && filename_cmp (file_name, fil_ptr->name) == 0
&& fil_ptr->fdr.fMerge)
{
cur_file_ptr = fil_ptr;
void
ecoff_new_file (const char *name, int appfile ATTRIBUTE_UNUSED)
{
- if (cur_file_ptr != NULL && strcmp (cur_file_ptr->name, name) == 0)
+ if (cur_file_ptr != NULL && filename_cmp (cur_file_ptr->name, name) == 0)
return;
add_file (name, 0, 0);
free (coff_sym_name);
if (coff_tag != (char *) NULL)
free (coff_tag);
-
+
coff_sym_name = xstrdup (name);
coff_type = type_info_init;
coff_storage_class = sc_Nil;
{
/* Add a dummy @stabs dymbol. */
stabs_seen = 1;
- (void) add_ecoff_symbol (stabs_symbol, stNil, scInfo,
+ (void) add_ecoff_symbol (stabs_symbol, st_Nil, sc_Info,
(symbolS *) NULL,
(bfd_vma) 0, (symint_t) -1,
ECOFF_MARK_STAB (0));
but with the name .scommon. */
if (scom_section.name == NULL)
{
- scom_section = bfd_com_section;
+ scom_section = *bfd_com_section_ptr;
scom_section.name = ".scommon";
scom_section.output_section = &scom_section;
scom_section.symbol = &scom_symbol;
scom_section.symbol_ptr_ptr = &scom_section.symbol;
- scom_symbol = *bfd_com_section.symbol;
+ scom_symbol = *bfd_com_section_ptr->symbol;
scom_symbol.name = ".scommon";
scom_symbol.section = &scom_section;
}
if (need < PAGE_SIZE)
need = PAGE_SIZE;
want = (*bufend - *buf) + need;
- *buf = xrealloc (*buf, want);
+ *buf = (char *) xrealloc (*buf, want);
*bufend = *buf + want;
return *buf + at;
}
unsigned long offset)
{
const bfd_size_type external_sym_size = backend->external_sym_size;
- void (* const swap_sym_out) (bfd *, const SYMR *, PTR)
+ void (* const swap_sym_out) (bfd *, const SYMR *, void *)
= backend->swap_sym_out;
char *sym_out;
long isym;
sc = sc_Bss;
else if (strcmp (segname, ".sbss") == 0)
sc = sc_SBss;
- else if (seg == &bfd_abs_section)
+ else if (seg == bfd_abs_section_ptr)
sc = sc_Abs;
else
{
sym_ptr->ecoff_sym.asym.iss =
begin_ptr->ecoff_sym.asym.iss;
- begin_type = begin_ptr->ecoff_sym.asym.st;
+ begin_type = (st_t) begin_ptr->ecoff_sym.asym.st;
if (begin_type == st_File
|| begin_type == st_Block)
{
unsigned long offset)
{
const bfd_size_type external_pdr_size = backend->external_pdr_size;
- void (* const swap_pdr_out) (bfd *, const PDR *, PTR)
+ void (* const swap_pdr_out) (bfd *, const PDR *, void *)
= backend->swap_pdr_out;
char *pdr_out;
long iproc;
unsigned long offset)
{
const bfd_size_type external_fdr_size = backend->external_fdr_size;
- void (* const swap_fdr_out) (bfd *, const FDR *, PTR)
+ void (* const swap_fdr_out) (bfd *, const FDR *, void *)
= backend->swap_fdr_out;
long ifile;
char *fdr_out;
/* Build the symbolic information. */
offset = 0;
- buf = xmalloc (PAGE_SIZE);
+ buf = (char *) xmalloc (PAGE_SIZE);
bufend = buf + PAGE_SIZE;
/* Build the line number information. */
ptr->free = alloc_counts[(int) alloc_type_scope].free_list.f_scope;
alloc_counts[(int) alloc_type_scope].free_list.f_scope = ptr;
#else
- free ((PTR) ptr);
+ free ((void *) ptr);
#endif
}
\f
as_where (&filename, &lineno);
if (current_stabs_filename == (char *) NULL
- || strcmp (current_stabs_filename, filename))
+ || filename_cmp (current_stabs_filename, filename))
add_file (filename, 0, 1);
list = allocate_lineno_list ();