* ldmisc.c (vfinfo <%C,%D,%G>): Always output bfd, section and offset.
This commit is contained in:
parent
344897cceb
commit
5cfb2bb208
2 changed files with 29 additions and 40 deletions
|
@ -1,3 +1,7 @@
|
|||
2002-09-21 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ldmisc.c (vfinfo <%C,%D,%G>): Always output bfd, section and offset.
|
||||
|
||||
2002-09-17 Stan Cox <scox@redhat.com>
|
||||
|
||||
* emulparams/elf32bmipn32-defs.sh: New file.
|
||||
|
|
65
ld/ldmisc.c
65
ld/ldmisc.c
|
@ -236,9 +236,8 @@ vfinfo (fp, fmt, arg)
|
|||
case 'C':
|
||||
case 'D':
|
||||
case 'G':
|
||||
/* Clever filename:linenumber with function name if possible,
|
||||
or section name as a last resort. The arguments are a BFD,
|
||||
a section, and an offset. */
|
||||
/* Clever filename:linenumber with function name if possible.
|
||||
The arguments are a BFD, a section, and an offset. */
|
||||
{
|
||||
static bfd *last_bfd;
|
||||
static char *last_file = NULL;
|
||||
|
@ -280,68 +279,54 @@ vfinfo (fp, fmt, arg)
|
|||
}
|
||||
}
|
||||
|
||||
lfinfo (fp, "%B(%s+0x%v)", abfd, section->name, offset);
|
||||
|
||||
discard_last = true;
|
||||
if (bfd_find_nearest_line (abfd, section, asymbols, offset,
|
||||
&filename, &functionname,
|
||||
&linenumber))
|
||||
{
|
||||
if (functionname != NULL && fmt[-1] == 'G')
|
||||
{
|
||||
lfinfo (fp, "%B:", abfd);
|
||||
if (filename != NULL
|
||||
&& strcmp (filename, bfd_get_filename (abfd)) != 0)
|
||||
fprintf (fp, "%s:", filename);
|
||||
lfinfo (fp, "%T", functionname);
|
||||
}
|
||||
else if (functionname != NULL && fmt[-1] == 'C')
|
||||
{
|
||||
if (filename == (char *) NULL)
|
||||
filename = abfd->filename;
|
||||
boolean need_colon = true;
|
||||
|
||||
if (functionname != NULL && fmt[-1] == 'C')
|
||||
{
|
||||
if (last_bfd == NULL
|
||||
|| last_file == NULL
|
||||
|| last_function == NULL
|
||||
|| last_bfd != abfd
|
||||
|| strcmp (last_file, filename) != 0
|
||||
|| (filename != NULL
|
||||
&& strcmp (last_file, filename) != 0)
|
||||
|| strcmp (last_function, functionname) != 0)
|
||||
{
|
||||
/* We use abfd->filename in this initial line,
|
||||
in case filename is a .h file or something
|
||||
similarly unhelpful. */
|
||||
lfinfo (fp, _("%B: In function `%T':\n"),
|
||||
abfd, functionname);
|
||||
lfinfo (fp, _(": In function `%T':\n"),
|
||||
functionname);
|
||||
need_colon = false;
|
||||
|
||||
last_bfd = abfd;
|
||||
if (last_file != NULL)
|
||||
free (last_file);
|
||||
last_file = xstrdup (filename);
|
||||
last_file = NULL;
|
||||
if (filename)
|
||||
last_file = xstrdup (filename);
|
||||
if (last_function != NULL)
|
||||
free (last_function);
|
||||
last_function = xstrdup (functionname);
|
||||
}
|
||||
discard_last = false;
|
||||
if (linenumber != 0)
|
||||
fprintf (fp, "%s:%u", filename, linenumber);
|
||||
else
|
||||
lfinfo (fp, "%s(%s+0x%v)", filename, section->name,
|
||||
offset);
|
||||
}
|
||||
else if (filename == NULL
|
||||
|| strcmp (filename, abfd->filename) == 0)
|
||||
|
||||
if (filename != NULL)
|
||||
{
|
||||
lfinfo (fp, "%B(%s+0x%v)", abfd, section->name,
|
||||
offset);
|
||||
if (linenumber != 0)
|
||||
lfinfo (fp, ":%u", linenumber);
|
||||
if (need_colon)
|
||||
putc (':', fp);
|
||||
fputs (filename, fp);
|
||||
}
|
||||
else if (linenumber != 0)
|
||||
lfinfo (fp, "%B:%s:%u", abfd, filename, linenumber);
|
||||
else
|
||||
lfinfo (fp, "%B(%s+0x%v):%s", abfd, section->name,
|
||||
offset, filename);
|
||||
|
||||
if (functionname != NULL && fmt[-1] == 'G')
|
||||
lfinfo (fp, ":%T", functionname);
|
||||
else if (filename != NULL && linenumber != 0)
|
||||
fprintf (fp, ":%u", linenumber);
|
||||
}
|
||||
else
|
||||
lfinfo (fp, "%B(%s+0x%v)", abfd, section->name, offset);
|
||||
|
||||
if (discard_last)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue