aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog8
-rw-r--r--gold/gold.cc9
-rw-r--r--gold/workqueue.h2
3 files changed, 18 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 056a506..45017f2 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,11 @@
+2010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
+ Ian Lance Taylor <iant@google.com>
+
+ * gold.cc (queue_middle_tasks): If no input files were opened,
+ exit.
+ * workqueue.h (Task_function::Task_function): Assert that there is
+ a blocker.
+
2010-02-22 Doug Kwan <dougkwan@google.com>
* gold-threads.h (Once::~Once): Explicitly define virtual destructor.
diff --git a/gold/gold.cc b/gold/gold.cc
index 275d0f9..5450573 100644
--- a/gold/gold.cc
+++ b/gold/gold.cc
@@ -532,6 +532,15 @@ queue_middle_tasks(const General_options& options,
}
}
+ // If we failed to open any input files, it's possible for
+ // THIS_BLOCKER to be NULL here. There's no real point in
+ // continuing if that happens.
+ if (this_blocker == NULL)
+ {
+ gold_assert(parameters->errors()->error_count() > 0);
+ gold_exit(false);
+ }
+
// When all those tasks are complete, we can start laying out the
// output file.
// TODO(csilvers): figure out a more principled way to get the target
diff --git a/gold/workqueue.h b/gold/workqueue.h
index 7545224..9121e10 100644
--- a/gold/workqueue.h
+++ b/gold/workqueue.h
@@ -152,7 +152,7 @@ class Task_function : public Task
Task_function(Task_function_runner* runner, Task_token* blocker,
const char* name)
: runner_(runner), blocker_(blocker), name_(name)
- { }
+ { gold_assert(blocker != NULL); }
~Task_function()
{