From 135b9c78b2e0da945e37dcd9e1206c6715854d44 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 23 Feb 2010 17:42:26 +0000 Subject: [PATCH] * gold.cc (queue_middle_tasks): If no input files were opened, exit. * workqueue.h (Task_function::Task_function): Assert that there is a blocker. --- gold/ChangeLog | 8 ++++++++ gold/gold.cc | 9 +++++++++ gold/workqueue.h | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) 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 + Ian Lance Taylor + + * 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 * 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() { -- 2.7.4