diff options
author | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-24 00:30:30 +0000 |
---|---|---|
committer | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-24 00:30:30 +0000 |
commit | f1148292f050c38acb714a13d98e2a774e5a0145 (patch) | |
tree | f3679841125cab5af3bdbc9139f3a661d05b6cd1 /gcc/tlink.c | |
parent | 7c574ef0f450428a6322a7967fa02ea5696933c2 (diff) | |
download | gcc-f1148292f050c38acb714a13d98e2a774e5a0145.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@122283 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tlink.c')
-rw-r--r-- | gcc/tlink.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gcc/tlink.c b/gcc/tlink.c index 1689ddbe242..8e10eebbbaa 100644 --- a/gcc/tlink.c +++ b/gcc/tlink.c @@ -607,12 +607,17 @@ scan_linker_output (const char *fname) { FILE *stream = fopen (fname, "r"); char *line; + int skip_next_line = 0; while ((line = tfgets (stream)) != NULL) { char *p = line, *q; symbol *sym; int end; + int ok = 0; + + if (skip_next_line) + continue; while (*p && ISSPACE ((unsigned char) *p)) ++p; @@ -654,6 +659,19 @@ scan_linker_output (const char *fname) demangled *dem = 0; q = 0; + /* On darwin9, we look for "foo" referenced from:\n.*\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. */ + oldq = p; + + /* Since the format is multiline, we have to skip the next line. */ + skip_next_line = 1; + } + /* First try `GNU style'. */ p = strchr (oldq, '`'); if (p) @@ -681,7 +699,8 @@ scan_linker_output (const char *fname) /* We need to check for certain error keywords here, or we would mistakenly use GNU ld's "In function `foo':" message. */ - if (q && (strstr (oldq, "ndefined") + if (q && (ok + || strstr (oldq, "ndefined") || strstr (oldq, "nresolved") || strstr (oldq, "nsatisfied") || strstr (oldq, "ultiple"))) |