if (!core_text_space)
{
- fprintf (stderr, _("%s: ran out room for %ld bytes of text space\n"),
- whoami, core_text_sect->_raw_size);
+ fprintf (stderr, _("%s: ran out room for %lu bytes of text space\n"),
+ whoami, (unsigned long) core_text_sect->_raw_size);
done (1);
}
if (!bfd_get_section_contents (core_bfd, core_text_sect, core_text_space,
&& fname && func_name && l)
{
DBG (AOUTDEBUG, printf ("[get_src_info] 0x%lx -> %s:%d (%s)\n",
- addr, fname, l, func_name));
+ (unsigned long) addr, fname, l, func_name));
*filename = fname;
*name = func_name;
*line_num = l;
* entered.
*/
void
-DEFUN (core_create_function_syms, (core_bfd), bfd * core_bfd)
+core_create_function_syms (core_bfd)
+ bfd *core_bfd ATTRIBUTE_UNUSED;
{
bfd_vma min_vma = ~0, max_vma = 0;
int class;
{
DBG (AOUTDEBUG,
printf ("[core_create_function_syms] rejecting: 0x%lx %s\n",
- core_syms[i]->value, core_syms[i]->name));
+ (unsigned long) core_syms[i]->value,
+ core_syms[i]->name));
continue;
}
/* This should be replaced with a binary search or hashed
DBG (AOUTDEBUG, printf ("[core_create_function_syms] %ld %s 0x%lx\n",
(long) (symtab.limit - symtab.base),
- symtab.limit->name, symtab.limit->addr));
+ symtab.limit->name,
+ (unsigned long) symtab.limit->addr));
++symtab.limit;
}
void
DEFUN (core_create_line_syms, (core_bfd), bfd * core_bfd)
{
- char prev_name[PATH_MAX], prev_filename[PATH_MAX];
+ char *prev_name, *prev_filename;
+ int prev_name_len, prev_filename_len;
bfd_vma vma, min_vma = ~0, max_vma = 0;
bfd_vma offset;
Sym *prev, dummy, *sentinel, *sym;
* Of course, this is rather slow and it would be better if
* bfd would provide an iterator for enumerating all line infos
*/
- prev_name[0] = '\0';
+ prev_name_len = PATH_MAX;
+ prev_filename_len = PATH_MAX;
+ prev_name = xmalloc (prev_name_len);
+ prev_filename = xmalloc (prev_filename_len);
ltab.len = 0;
- prev_filename[0] = '\0';
prev_line_num = 0;
for (offset = 0; offset < core_text_sect->_raw_size; offset += min_insn_size)
{
+ int len;
+
vma = core_text_sect->vma + offset;
if (!get_src_info (vma, &filename, &dummy.name, &dummy.line_num)
- || (prev_line_num == dummy.line_num &&
- strcmp (prev_name, dummy.name) == 0
+ || (prev_line_num == dummy.line_num
+ && prev_name != NULL
+ && strcmp (prev_name, dummy.name) == 0
&& strcmp (prev_filename, filename) == 0))
{
continue;
++ltab.len;
prev_line_num = dummy.line_num;
+
+ len = strlen (dummy.name);
+ if (len >= prev_name_len)
+ {
+ prev_name_len = len + 1024;
+ free (prev_name);
+ prev_name = xmalloc (prev_name_len);
+ }
strcpy (prev_name, dummy.name);
+
+ len = strlen (filename);
+ if (len >= prev_filename_len)
+ {
+ prev_filename_len = len + 1024;
+ free (prev_filename);
+ prev_filename = xmalloc (prev_filename_len);
+ }
strcpy (prev_filename, filename);
min_vma = MIN (vma, min_vma);
max_vma = MAX (vma, max_vma);
}
+ free (prev_name);
+ free (prev_filename);
+
/* make room for function symbols, too: */
ltab.len += symtab.len;
ltab.base = (Sym *) xmalloc (ltab.len * sizeof (Sym));
discard_underscores = 0;
}
- DBG (AOUTDEBUG, printf ("[core_create_line_syms] %d %s 0x%lx\n",
- ltab.limit - ltab.base, ltab.limit->name,
- ltab.limit->addr));
+ DBG (AOUTDEBUG, printf ("[core_create_line_syms] %lu %s 0x%lx\n",
+ (unsigned long) (ltab.limit - ltab.base),
+ ltab.limit->name,
+ (unsigned long) ltab.limit->addr));
++ltab.limit;
}