diff options
author | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-24 06:22:12 +0000 |
---|---|---|
committer | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-24 06:22:12 +0000 |
commit | d11c218949676961e1826706e25a709db31cd308 (patch) | |
tree | d29c1cc7a2a865f80752fe23fcaed4cedc5bc6c0 /gcc/tlink.c | |
parent | b9bbc2790bcf71d84ffad29ff2f8d044539a63ee (diff) | |
download | gcc-d11c218949676961e1826706e25a709db31cd308.tar.gz |
* tlink.c (scan_linker_output): Parse linker messages from
darwin9's linker better.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122286 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tlink.c')
-rw-r--r-- | gcc/tlink.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/gcc/tlink.c b/gcc/tlink.c index 8e79d2415d4..7907f419488 100644 --- a/gcc/tlink.c +++ b/gcc/tlink.c @@ -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'. */ |