aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2007-12-29 20:10:03 +0000
committerNathan Froyd <froydnj@codesourcery.com>2007-12-29 20:10:03 +0000
commitcc496eefa50fd570602bb5f2ff314799be68fd5c (patch)
tree62e922174e7028bce526ec82c7eff3a7855433cc
parentbeddcf437a5d7013d341b48a81c7e18f6fe2c61b (diff)
* collect2.c (scan_prog_file): Read all the output when reading
information for LTO. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/lto@131222 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog.lto5
-rw-r--r--gcc/collect2.c18
2 files changed, 13 insertions, 10 deletions
diff --git a/gcc/ChangeLog.lto b/gcc/ChangeLog.lto
index a823eef20ac..e60ad1f3213 100644
--- a/gcc/ChangeLog.lto
+++ b/gcc/ChangeLog.lto
@@ -1,3 +1,8 @@
+2007-12-29 Nathan Froyd <froydnj@codesourcery.com>
+
+ * collect2.c (scan_prog_file): Read all the output when reading
+ information for LTO.
+
2007-12-24 Nathan Froyd <froydnj@codesourcery.com>
* lto-function-out.c (output_local_vars): Output DECL_INITIAL
diff --git a/gcc/collect2.c b/gcc/collect2.c
index a3df4db87a4..72f54ddcd7e 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -2365,6 +2365,7 @@ scan_prog_file (const char *prog_name, enum pass which_pass)
int err;
char *p, buf[1024];
FILE *inf;
+ int found_lto = 0;
if (which_pass == PASS_SECOND)
return;
@@ -2440,6 +2441,9 @@ scan_prog_file (const char *prog_name, enum pass which_pass)
if (which_pass == PASS_LTOINFO)
{
+ if (found_lto)
+ continue;
+
/* Look for the LTO info marker symbol, and add filename to
the LTO objects list if found. */
for (p = buf; (ch = *p) != '\0' && ch != '\n'; p++)
@@ -2449,17 +2453,11 @@ scan_prog_file (const char *prog_name, enum pass which_pass)
{
add_lto_object (&lto_objects, prog_name);
- /* No need to look any further. Clean up and return. */
- if (debug)
- fprintf (stderr, "\n");
-
- do_wait (nm_file_name, pex);
+ /* We need to read all the input, so we can't just
+ return here. But we can avoid useless work. */
+ found_lto = 1;
- signal (SIGINT, int_handler);
-#ifdef SIGQUIT
- signal (SIGQUIT, quit_handler);
-#endif
- return;
+ break;
}
}
else