/* Output VMS debug format symbol table information from GCC.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
Free Software Foundation, Inc.
Contributed by Douglas B. Rupp (rupp@gnat.com).
Updated by Bernard W. Giroud (bgiroud@users.sourceforge.net).
static vms_func_ref func_table;
/* Local pointer to the name of the main input file. Initialized in
- avmdbgout_init. */
+ vmsdbgout_init. */
static const char *primary_filename;
static char *module_producer;
static unsigned int lookup_filename (const char *);
static void addr_const_to_string (char *, rtx);
static int write_debug_header (DST_HEADER *, const char *, int);
-static int write_debug_addr (char *, const char *, int);
+static int write_debug_addr (const char *, const char *, int);
static int write_debug_data1 (unsigned int, const char *, int);
static int write_debug_data2 (unsigned int, const char *, int);
static int write_debug_data4 (unsigned long, const char *, int);
static int write_debug_data8 (unsigned long long, const char *, int);
-static int write_debug_delta4 (char *, char *, const char *, int);
-static int write_debug_string (char *, const char *, int);
+static int write_debug_delta4 (const char *, const char *, const char *, int);
+static int write_debug_string (const char *, const char *, int);
static int write_modbeg (int);
static int write_modend (int);
static int write_rtnbeg (int, int);
static void vmsdbgout_end_source_file (unsigned int);
static void vmsdbgout_begin_block (unsigned int, unsigned int);
static void vmsdbgout_end_block (unsigned int, unsigned int);
-static bool vmsdbgout_ignore_block (tree);
+static bool vmsdbgout_ignore_block (const_tree);
static void vmsdbgout_source_line (unsigned int, const char *);
static void vmsdbgout_begin_prologue (unsigned int, const char *);
static void vmsdbgout_end_prologue (unsigned int, const char *);
vmsdbgout_decl,
vmsdbgout_global_decl,
debug_nothing_tree_int, /* type_decl */
- debug_nothing_tree_tree, /* imported_module_or_decl */
+ debug_nothing_tree_tree_tree_bool, /* imported_module_or_decl */
debug_nothing_tree, /* deferred_inline_function */
vmsdbgout_abstract_function,
debug_nothing_rtx, /* label */
do \
{ \
register int slen = strlen(P); \
- register char *p = (P); \
+ register const char *p = (P); \
register int i; \
fprintf (FILE, "\t.ascii \""); \
for (i = 0; i < slen; i++) \
nonzero. */
static int
-write_debug_addr (char *symbol, const char *comment, int dosizeonly)
+write_debug_addr (const char *symbol, const char *comment, int dosizeonly)
{
if (!dosizeonly)
{
DOSIZEONLY is nonzero. */
static int
-write_debug_delta4 (char *label1, char *label2, const char *comment,
- int dosizeonly)
+write_debug_delta4 (const char *label1, const char *label2,
+ const char *comment, int dosizeonly)
{
if (!dosizeonly)
{
nonzero. */
static int
-write_debug_string (char *string, const char *comment, int dosizeonly)
+write_debug_string (const char *string, const char *comment, int dosizeonly)
{
if (!dosizeonly)
{
int totsize = 0;
/* Assumes primary filename has Unix syntax file spec. */
- module_name = xstrdup (basename ((char *) primary_filename));
+ module_name = xstrdup (lbasename (primary_filename));
m = strrchr (module_name, '.');
if (m)
static int
write_rtnbeg (int rtnnum, int dosizeonly)
{
- char *rtnname;
+ const char *rtnname;
int rtnnamelen;
char *rtnentryname;
int totsize = 0;
DST_PROLOG prolog;
vms_func_ref fde = &func_table[rtnnum];
- rtnname = (char *)fde->vms_func_name;
+ rtnname = fde->vms_func_name;
rtnnamelen = strlen (rtnname);
rtnentryname = concat (rtnname, "..en", NULL);
dosizeonly);
totsize += write_debug_data1 (strlen (go), "length of main_name",
dosizeonly);
- totsize += write_debug_string ((char *) go, "main name", dosizeonly);
+ totsize += write_debug_string (go, "main name", dosizeonly);
}
/* The header length never includes the length byte. */
(src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_b_src_df_filename,
"source_corr (filename length)", dosizeonly);
- totsize += write_debug_string (file_info_entry.file_name,
+ totsize += write_debug_string (remap_debug_filename (
+ file_info_entry.file_name),
"source file name", dosizeonly);
totsize += write_debug_data1 (src_cmdtrlr.dst_b_src_df_libmodname,
"source_corr (libmodname)", dosizeonly);
/* Not implemented in VMS Debug. */
static bool
-vmsdbgout_ignore_block (tree block)
+vmsdbgout_ignore_block (const_tree block)
{
bool retval = 0;
static unsigned int last_file_lookup_index = 0;
register char *fn;
register unsigned i;
- char *fnam;
+ const char *fnam;
long long cdt;
long ebk;
short ffb;
ebk = 0;
ffb = 0;
rfo = 0;
- fnam = (char *) "";
+ fnam = "";
flen = 0;
}
{
file_info_table_allocated += FILE_TABLE_INCREMENT;
- file_info_table = xrealloc (file_info_table,
- (file_info_table_allocated
- * sizeof (dst_file_info_entry)));
+ file_info_table = XRESIZEVEC (dst_file_info_entry, file_info_table,
+ file_info_table_allocated);
}
/* Add the new entry to the end of the filename table. */
if (line_info_table_in_use == line_info_table_allocated)
{
line_info_table_allocated += LINE_INFO_TABLE_INCREMENT;
- line_info_table = xrealloc (line_info_table,
- (line_info_table_allocated
- * sizeof (dst_line_info_entry)));
+ line_info_table = XRESIZEVEC (dst_line_info_entry, line_info_table,
+ line_info_table_allocated);
}
/* Add the new entry at the end of the line_info_table. */
primary_filename = main_input_filename;
/* Allocate the initial hunk of the file_info_table. */
- file_info_table
- = xcalloc (FILE_TABLE_INCREMENT, sizeof (dst_file_info_entry));
+ file_info_table = XCNEWVEC (dst_file_info_entry, FILE_TABLE_INCREMENT);
file_info_table_allocated = FILE_TABLE_INCREMENT;
/* Skip the first entry - file numbers begin at 1 */
func_table_in_use = 1;
/* Allocate the initial hunk of the line_info_table. */
- line_info_table
- = xcalloc (LINE_INFO_TABLE_INCREMENT, sizeof (dst_line_info_entry));
+ line_info_table = XCNEWVEC (dst_line_info_entry, LINE_INFO_TABLE_INCREMENT);
line_info_table_allocated = LINE_INFO_TABLE_INCREMENT;
/* zero-th entry is allocated, but unused */
line_info_table_in_use = 1;