/* DWARF debugging format support for GDB.
- Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Fred Fish at Cygnus Support. Portions based on dbxread.c,
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. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
/*
If you are looking for DWARF-2 support, you are in the wrong file.
DWARF-1 is slowly headed for obsoletion.
- In gcc HEAD 2003-11-29 16:28:31 UTC, no targets prefer dwarf-1.
+ In gcc 3.4.0, support for dwarf-1 has been removed.
In gcc 3.3.2, these targets prefer dwarf-1:
Some non-gcc compilers produce dwarf-1:
PR gdb/1179 was from a user with Diab C++ 4.3.
+ On 2003-07-25 the gdb list received a report from a user
+ with Diab Compiler 4.4b.
Other users have also reported using Diab compilers with dwarf-1.
+
+ Diab Compiler Suite 5.0.1 supports dwarf-2/dwarf-3 for C and C++.
+ (Diab(tm) Compiler Suite 5.0.1 Release Notes, DOC-14691-ZD-00,
+ Wind River Systems, 2002-07-31).
+
On 2003-06-09 the gdb list received a report from a user
with Absoft ProFortran f77 which is dwarf-1.
- -- chastain 2003-12-01
+ Absoft ProFortran Linux[sic] Fortran User Guide (no version,
+ but copyright dates are 1991-2001) says that Absoft ProFortran
+ supports -gdwarf1 and -gdwarf2.
+
+ -- chastain 2004-04-24
*/
/*
#include "defs.h"
#include "symtab.h"
#include "gdbtypes.h"
-#include "symfile.h"
#include "objfiles.h"
#include "elf/dwarf.h"
#include "buildsym.h"
bad_die_ref_complaint (int arg1, const char *arg2, int arg3)
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", reference to DIE (0x%x) outside compilation unit",
+ _("DIE @ 0x%x \"%s\", reference to DIE (0x%x) outside compilation unit"),
arg1, arg2, arg3);
}
unknown_attribute_form_complaint (int arg1, const char *arg2, int arg3)
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", unknown attribute form (0x%x)", arg1, arg2,
+ _("DIE @ 0x%x \"%s\", unknown attribute form (0x%x)"), arg1, arg2,
arg3);
}
dup_user_type_definition_complaint (int arg1, const char *arg2)
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", internal error: duplicate user type definition",
+ _("DIE @ 0x%x \"%s\", internal error: duplicate user type definition"),
arg1, arg2);
}
bad_array_element_type_complaint (int arg1, const char *arg2, int arg3)
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", bad array element type attribute 0x%x", arg1,
+ _("DIE @ 0x%x \"%s\", bad array element type attribute 0x%x"), arg1,
arg2, arg3);
}
{
if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
{
- error ("internal error - invalid fundamental type id %d", typeid);
+ error (_("internal error - invalid fundamental type id %d"), typeid);
}
/* Look for this particular type in the fundamental type vector. If one is
(bfd_bread (dbbase, dbsize, abfd) != dbsize))
{
xfree (dbbase);
- error ("can't read DWARF data from '%s'", bfd_get_filename (abfd));
+ error (_("can't read DWARF data from '%s'"), bfd_get_filename (abfd));
}
back_to = make_cleanup (xfree, dbbase);
{
utypep = *typep;
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", internal error: duplicate user type allocation",
+ _("DIE @ 0x%x \"%s\", internal error: duplicate user type allocation"),
DIE_ID, DIE_NAME);
}
else
/* Should never happen */
TYPE_CODE (type) = TYPE_CODE_UNDEF;
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", missing class, structure, or union tag",
+ _("DIE @ 0x%x \"%s\", missing class, structure, or union tag"),
DIE_ID, DIE_NAME);
break;
}
{
/* Munged subscript data or other problem, fake it. */
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", can't decode subscript data items",
+ _("DIE @ 0x%x \"%s\", can't decode subscript data items"),
DIE_ID, DIE_NAME);
nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
}
case FMT_UT_X_C:
case FMT_UT_X_X:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", array subscript format 0x%x not handled yet",
+ _("DIE @ 0x%x \"%s\", array subscript format 0x%x not handled yet"),
DIE_ID, DIE_NAME, format);
nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
rangetype = create_range_type ((struct type *) NULL, nexttype, 0, 0);
break;
default:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", unknown array subscript format %x", DIE_ID,
+ _("DIE @ 0x%x \"%s\", unknown array subscript format %x"), DIE_ID,
DIE_NAME, format);
nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
rangetype = create_range_type ((struct type *) NULL, nexttype, 0, 0);
{
/* FIXME: Can gdb even handle column major arrays? */
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", array not row major; not handled correctly",
+ _("DIE @ 0x%x \"%s\", array not row major; not handled correctly"),
DIE_ID, DIE_NAME);
}
sub = dip->at_subscr_data;
scan += strlen (scan) + 1;
nfields++;
/* Handcraft a new symbol for this enum member. */
- sym = (struct symbol *) obstack_alloc (&objfile->symbol_obstack,
+ sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
DEPRECATED_SYMBOL_NAME (sym) = create_name (list->field.name,
- &objfile->symbol_obstack);
+ &objfile->objfile_obstack);
SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
SYMBOL_CLASS (sym) = LOC_CONST;
TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
TYPE_NFIELDS (type) = nfields;
TYPE_FIELDS (type) = (struct field *)
- obstack_alloc (&objfile->symbol_obstack, sizeof (struct field) * nfields);
+ obstack_alloc (&objfile->objfile_obstack, sizeof (struct field) * nfields);
/* Copy the saved-up fields into the field vector. */
for (n = 0; (n < nfields) && (list != NULL); list = list->next)
{
FIXME: Add code to handle AT_abstract_origin tags properly. */
if (dip->at_name == NULL)
{
- complaint (&symfile_complaints, "DIE @ 0x%x, AT_name tag missing",
+ complaint (&symfile_complaints, _("DIE @ 0x%x, AT_name tag missing"),
DIE_ID);
return;
}
- if (objfile->ei.entry_point >= dip->at_low_pc &&
- objfile->ei.entry_point < dip->at_high_pc)
- {
- objfile->ei.entry_func_lowpc = dip->at_low_pc;
- objfile->ei.entry_func_highpc = dip->at_high_pc;
- }
new = push_context (0, dip->at_low_pc);
new->name = new_symbol (dip, objfile);
list_in_scope = &local_symbols;
struct cleanup *back_to;
struct symtab *symtab;
- if (objfile->ei.entry_point >= dip->at_low_pc &&
- objfile->ei.entry_point < dip->at_high_pc)
- {
- objfile->ei.deprecated_entry_file_lowpc = dip->at_low_pc;
- objfile->ei.deprecated_entry_file_highpc = dip->at_high_pc;
- }
set_cu_language (dip);
if (dip->at_producer != NULL)
{
case OP_DEREF2:
/* pop, deref and push 2 bytes (as a long) */
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", OP_DEREF2 address 0x%lx not handled",
+ _("DIE @ 0x%x \"%s\", OP_DEREF2 address 0x%lx not handled"),
DIE_ID, DIE_NAME, stack[stacki]);
break;
case OP_DEREF4: /* pop, deref and push 4 bytes (as a long) */
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", OP_DEREF4 address 0x%lx not handled",
+ _("DIE @ 0x%x \"%s\", OP_DEREF4 address 0x%lx not handled"),
DIE_ID, DIE_NAME, stack[stacki]);
break;
case OP_ADD: /* pop top 2 items, add, push result */
(bfd_bread (dbbase, dbsize, abfd) != dbsize))
{
xfree (dbbase);
- error ("can't read DWARF data");
+ error (_("can't read DWARF data"));
}
back_to = make_cleanup (xfree, dbbase);
(bfd_bread (lnsizedata, sizeof (lnsizedata), abfd)
!= sizeof (lnsizedata)))
{
- error ("can't read DWARF line number table size");
+ error (_("can't read DWARF line number table size"));
}
lnsize = target_to_host (lnsizedata, SIZEOF_LINETBL_LENGTH,
GET_UNSIGNED, pst->objfile);
(bfd_bread (lnbase, lnsize, abfd) != lnsize))
{
xfree (lnbase);
- error ("can't read DWARF line numbers");
+ error (_("can't read DWARF line numbers"));
}
make_cleanup (xfree, lnbase);
}
{
if (pst->readin)
{
- warning ("psymtab for %s already read in. Shouldn't happen.",
+ warning (_("psymtab for %s already read in. Shouldn't happen."),
pst->filename);
}
else
/* Inform about additional files that need to be read in. */
if (info_verbose)
{
+ /* FIXME: i18n: Need to make this a single
+ string. */
fputs_filtered (" ", gdb_stdout);
wrap_here ("");
fputs_filtered ("and ", gdb_stdout);
read_ofile_symtab (pst);
if (info_verbose)
{
- printf_filtered ("%d DIE's, sorting...", diecount);
+ printf_filtered (_("%d DIE's, sorting..."), diecount);
wrap_here ("");
gdb_flush (gdb_stdout);
}
{
if (pst->readin)
{
- warning ("psymtab for %s already read in. Shouldn't happen.",
+ warning (_("psymtab for %s already read in. Shouldn't happen."),
pst->filename);
}
else
disconcerting pauses. */
if (info_verbose)
{
- printf_filtered ("Reading in symbols for %s...",
+ printf_filtered (_("Reading in symbols for %s..."),
pst->filename);
gdb_flush (gdb_stdout);
}
/* Finish up the verbose info message. */
if (info_verbose)
{
- printf_filtered ("done.\n");
+ printf_filtered (_("done.\n"));
gdb_flush (gdb_stdout);
}
}
if (dip->at_name != NULL)
{
- sym = (struct symbol *) obstack_alloc (&objfile->symbol_obstack,
+ sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
sizeof (struct symbol));
OBJSTAT (objfile, n_syms++);
memset (sym, 0, sizeof (struct symbol));
if (dip->at_name != NULL)
{
sym = (struct symbol *)
- obstack_alloc (&objfile->symbol_obstack, sizeof (struct symbol));
+ obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
OBJSTAT (objfile, n_syms++);
memset (sym, 0, sizeof (struct symbol));
DEPRECATED_SYMBOL_NAME (sym) = create_name (dip->at_name,
- &objfile->symbol_obstack);
+ &objfile->objfile_obstack);
SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
SYMBOL_TYPE (sym) = type;
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
break;
default:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", botched modified type decoding (mtype 0x%x)",
+ _("DIE @ 0x%x \"%s\", botched modified type decoding (mtype 0x%x)"),
DIE_ID, DIE_NAME, mtype);
typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
break;
break;
case MOD_const:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", type modifier 'const' ignored", DIE_ID,
+ _("DIE @ 0x%x \"%s\", type modifier 'const' ignored"), DIE_ID,
DIE_NAME); /* FIXME */
break;
case MOD_volatile:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", type modifier 'volatile' ignored",
+ _("DIE @ 0x%x \"%s\", type modifier 'volatile' ignored"),
DIE_ID, DIE_NAME); /* FIXME */
break;
default:
#endif
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", unknown type modifier %u", DIE_ID,
+ _("DIE @ 0x%x \"%s\", unknown type modifier %u"), DIE_ID,
DIE_NAME, modifier);
}
break;
if (!(FT_lo_user <= fundtype && fundtype <= FT_hi_user))
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", unexpected fundamental type 0x%x",
+ _("DIE @ 0x%x \"%s\", unexpected fundamental type 0x%x"),
DIE_ID, DIE_NAME, fundtype);
}
}
((diep + dip->die_length) > (dbbase + dbsize)))
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", malformed DIE, bad length (%ld bytes)",
+ _("DIE @ 0x%x \"%s\", malformed DIE, bad length (%ld bytes)"),
DIE_ID, DIE_NAME, dip->die_length);
dip->die_length = 0;
}
if (nbytes == -1)
{
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", unknown attribute length, skipped remaining attributes",
+ _("DIE @ 0x%x \"%s\", unknown attribute length, skipped remaining attributes"),
DIE_ID, DIE_NAME);
diep = end;
continue;
break;
default:
complaint (&symfile_complaints,
- "DIE @ 0x%x \"%s\", no bfd support for %d byte data object",
+ _("DIE @ 0x%x \"%s\", no bfd support for %d byte data object"),
DIE_ID, DIE_NAME, nbytes);
rtnval = 0;
break;