diff options
-rw-r--r-- | gold/ChangeLog | 8 | ||||
-rw-r--r-- | gold/gold.cc | 9 | ||||
-rw-r--r-- | gold/workqueue.h | 2 |
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() { |