aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog7
-rw-r--r--gold/gold.cc1
-rw-r--r--gold/options.cc3
3 files changed, 11 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 02a007c..e13fa98 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,10 @@
+2008-10-07 Cary Coutant <ccoutant@google.com>
+
+ * options.c (General_options::finalize): Add check for -static and
+ -shared.
+ * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
+ is not empty.
+
2008-10-02 Cary Coutant <ccoutant@google.com>
* plugin.cc (make_sized_plugin_object): Fix conditional
diff --git a/gold/gold.cc b/gold/gold.cc
index 6a536b8..ac321be 100644
--- a/gold/gold.cc
+++ b/gold/gold.cc
@@ -203,6 +203,7 @@ queue_middle_tasks(const General_options& options,
if (!doing_static_link && options.is_static())
{
// We print out just the first .so we see; there may be others.
+ gold_assert(input_objects->dynobj_begin() != input_objects->dynobj_end());
gold_error(_("cannot mix -static with dynamic object %s"),
(*input_objects->dynobj_begin())->name().c_str());
}
diff --git a/gold/options.cc b/gold/options.cc
index 08b67fd..069c138 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -792,6 +792,9 @@ General_options::finalize()
this->add_sysroot();
// Now that we've normalized the options, check for contradictory ones.
+ if (this->shared() && this->is_static())
+ gold_fatal(_("-shared and -static are incompatible"));
+
if (this->shared() && this->relocatable())
gold_fatal(_("-shared and -r are incompatible"));