tlink.c (scan_linker_output): Parse linker messages from darwin9's linker better.

* tlink.c (scan_linker_output): Parse linker messages from
	darwin9's linker better.

From-SVN: r122286
This commit is contained in:
Mike Stump 2007-02-24 06:22:12 +00:00
parent c4f46fdee9
commit e7d406d539
1 changed files with 11 additions and 9 deletions

View File

@ -607,7 +607,7 @@ scan_linker_output (const char *fname)
{
FILE *stream = fopen (fname, "r");
char *line;
int skip_next_line = 0;
int skip_next_in_line = 0;
while ((line = tfgets (stream)) != NULL)
{
@ -616,11 +616,11 @@ scan_linker_output (const char *fname)
int end;
int ok = 0;
if (skip_next_line)
{
skip_next_line = 0;
/* On darwin9, we might have to skip " in " lines as well. */
if (skip_next_in_line
&& strstr (p, " in "))
continue;
}
skip_next_in_line = 0;
while (*p && ISSPACE ((unsigned char) *p))
++p;
@ -662,17 +662,19 @@ scan_linker_output (const char *fname)
demangled *dem = 0;
q = 0;
/* On darwin9, we look for "foo" referenced from:\n.*\n */
/* On darwin9, we look for "foo" referenced from:\n\(.* in .*\n\)* */
if (strcmp (oldq, "referenced from:") == 0)
{
/* We have to remember that we found a symbol to tweak. */
ok = 1;
/* We actually want to start from the first word on the line. */
/* We actually want to start from the first word on the
line. */
oldq = p;
/* Since the format is multiline, we have to skip the next line. */
skip_next_line = 1;
/* Since the format is multiline, we have to skip
following lines with " in ". */
skip_next_in_line = 1;
}
/* First try `GNU style'. */