/* corefile.c
- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
Free Software Foundation, Inc.
This file is part of GNU Binutils.
else
{
DBG (AOUTDEBUG, printf ("[get_src_info] no info for 0x%lx (%s:%d,%s)\n",
- (long) addr, fname ? fname : "<unknown>", l,
+ (unsigned long) addr,
+ fname ? fname : "<unknown>", l,
func_name ? func_name : "<unknown>"));
return FALSE;
}
done (1);
}
- /* The "+ 2" is for the sentinels. */
- symtab.base = (Sym *) xmalloc ((symtab.len + 2) * sizeof (Sym));
+ symtab.base = (Sym *) xmalloc (symtab.len * sizeof (Sym));
/* Pass 2 - create symbols. */
symtab.limit = symtab.base;
}
}
- symtab.limit->is_func = TRUE;
+ symtab.limit->is_func = (core_syms[i]->flags & BSF_FUNCTION) != 0;
symtab.limit->is_bb_head = TRUE;
if (class == 't')
++symtab.limit;
}
- /* Create sentinels. */
- sym_init (symtab.limit);
- symtab.limit->name = "<locore>";
- symtab.limit->addr = 0;
- symtab.limit->end_addr = min_vma - 1;
- ++symtab.limit;
-
- sym_init (symtab.limit);
- symtab.limit->name = "<hicore>";
- symtab.limit->addr = max_vma + 1;
- symtab.limit->end_addr = ~(bfd_vma) 0;
- ++symtab.limit;
-
symtab.len = symtab.limit - symtab.base;
symtab_finalize (&symtab);
}
char *prev_name, *prev_filename;
unsigned int prev_name_len, prev_filename_len;
bfd_vma vma, min_vma = ~(bfd_vma) 0, max_vma = 0;
- Sym *prev, dummy, *sentinel, *sym;
+ Sym *prev, dummy, *sym;
const char *filename;
int prev_line_num;
Sym_Table ltab;
else
{
sym = sym_lookup(&symtab, ltab.limit->addr);
- ltab.limit->is_static = sym->is_static;
+ if (sym)
+ ltab.limit->is_static = sym->is_static;
}
prev = ltab.limit;
++ltab.limit;
}
- /* Update sentinels. */
- sentinel = sym_lookup (&symtab, (bfd_vma) 0);
-
- if (sentinel
- && strcmp (sentinel->name, "<locore>") == 0
- && min_vma <= sentinel->end_addr)
- sentinel->end_addr = min_vma - 1;
-
- sentinel = sym_lookup (&symtab, ~(bfd_vma) 0);
-
- if (sentinel
- && strcmp (sentinel->name, "<hicore>") == 0
- && max_vma >= sentinel->addr)
- sentinel->addr = max_vma + 1;
-
/* Copy in function symbols. */
memcpy (ltab.limit, symtab.base, symtab.len * sizeof (Sym));
ltab.limit += symtab.len;