diff options
Diffstat (limited to 'gold/options.cc')
-rw-r--r-- | gold/options.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gold/options.cc b/gold/options.cc index be32645..d91a834 100644 --- a/gold/options.cc +++ b/gold/options.cc @@ -1224,6 +1224,37 @@ General_options::finalize() gold_fatal(_("Options --incremental-changed, --incremental-unchanged, " "--incremental-unknown require the use of --incremental")); + // Check for options that are not compatible with incremental linking. + // Where an option can be disabled without seriously changing the semantics + // of the link, we turn the option off; otherwise, we issue a fatal error. + + if (this->incremental_mode_ != INCREMENTAL_OFF) + { + if (this->relocatable()) + gold_fatal(_("incremental linking is not compatible with -r")); + if (this->emit_relocs()) + gold_fatal(_("incremental linking is not compatible with " + "--emit-relocs")); + if (this->has_plugins()) + gold_fatal(_("incremental linking is not compatible with --plugin")); + if (this->gc_sections()) + { + gold_warning(_("ignoring --gc-sections for an incremental link")); + this->set_gc_sections(false); + } + if (this->icf_enabled()) + { + gold_warning(_("ignoring --icf for an incremental link")); + this->set_icf_status(ICF_NONE); + } + if (strcmp(this->compress_debug_sections(), "none") != 0) + { + gold_warning(_("ignoring --compress-debug-sections for an " + "incremental link")); + this->set_compress_debug_sections("none"); + } + } + // FIXME: we can/should be doing a lot more sanity checking here. } |