/* stabs.c -- Parse COFF debugging information
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
NULL, dhandle),
0, n - 1, false);
}
+ else
+ {
+ fprintf (stderr, _("%s: parse_coff_type: Bad type code 0x%x\n"),
+ program_name, ntype);
+ return DEBUG_TYPE_NULL;
+ }
return type;
}
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
- fprintf (stderr, "%s: bfd_coff_get_syment failed: %s\n",
+ fprintf (stderr, _("%s: bfd_coff_get_syment failed: %s\n"),
program_name, bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
{
if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
{
- fprintf (stderr, "%s: bfd_coff_get_auxent failed: %s\n",
+ fprintf (stderr, _("%s: bfd_coff_get_auxent failed: %s\n"),
program_name, bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
parse_coff_enum_type (abfd, symbols, types, pauxent, dhandle)
bfd *abfd;
struct coff_symbols *symbols;
- struct coff_types *types;
+ struct coff_types *types ATTRIBUTE_UNUSED;
union internal_auxent *pauxent;
PTR dhandle;
{
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
- fprintf (stderr, "%s: bfd_coff_get_syment failed: %s\n",
+ fprintf (stderr, _("%s: bfd_coff_get_syment failed: %s\n"),
program_name, bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
static boolean
parse_coff_symbol (abfd, types, sym, coff_symno, psyment, dhandle, type,
within_function)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
struct coff_types *types;
asymbol *sym;
long coff_symno;
const char *fnname;
int fnclass;
int fntype;
+ bfd_vma fnend;
alent *linenos;
boolean within_function;
long this_coff_symno;
fnname = NULL;
fnclass = 0;
fntype = 0;
+ fnend = 0;
linenos = NULL;
within_function = false;
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
- fprintf (stderr, "%s: bfd_coff_get_syment failed: %s\n",
+ fprintf (stderr, _("%s: bfd_coff_get_syment failed: %s\n"),
program_name, bfd_errmsg (bfd_get_error ()));
return false;
}
{
if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
{
- fprintf (stderr, "%s: bfd_coff_get_auxent failed: %s\n",
+ fprintf (stderr, _("%s: bfd_coff_get_auxent failed: %s\n"),
program_name, bfd_errmsg (bfd_get_error ()));
return false;
}
fnname = name;
fnclass = syment.n_sclass;
fntype = syment.n_type;
+ if (syment.n_numaux > 0)
+ fnend = bfd_asymbol_value (sym) + auxent.x_sym.x_misc.x_fsize;
+ else
+ fnend = 0;
linenos = BFD_SEND (abfd, _get_lineno, (abfd, sym));
break;
}
{
if (fnname == NULL)
{
- fprintf (stderr, "%s: %ld: .bf without preceding function\n",
+ fprintf (stderr, _("%s: %ld: .bf without preceding function\n"),
program_name, this_coff_symno);
return false;
}
{
if (! within_function)
{
- fprintf (stderr, "%s: %ld: unexpected .ef\n",
+ fprintf (stderr, _("%s: %ld: unexpected .ef\n"),
program_name, this_coff_symno);
return false;
}
- if (! debug_end_function (dhandle, bfd_asymbol_value (sym)))
+ if (bfd_asymbol_value (sym) > fnend)
+ fnend = bfd_asymbol_value (sym);
+ if (! debug_end_function (dhandle, fnend))
return false;
+ fnend = 0;
within_function = false;
}
break;