#include "script.h"
#include "target-select.h"
#include "options.h"
+#include "plugin.h"
namespace gold
{
cmdline->inputs().add_file(file);
}
+#ifdef ENABLE_PLUGINS
+void
+General_options::parse_plugin(const char*, const char* arg,
+ Command_line*)
+{
+ this->add_plugin(arg);
+}
+#endif // ENABLE_PLUGINS
+
void
General_options::parse_R(const char* option, const char* arg,
Command_line* cmdline)
gold::gold_fatal(_("unable to parse version script file %s"), arg);
}
+void
+General_options::parse_dynamic_list(const char*, const char* arg,
+ Command_line* cmdline)
+{
+ if (!read_dynamic_list(arg, cmdline, &this->dynamic_list_))
+ gold::gold_fatal(_("unable to parse dynamic-list script file %s"), arg);
+}
+
void
General_options::parse_start_group(const char*, const char*,
Command_line* cmdline)
General_options::General_options()
: execstack_status_(General_options::EXECSTACK_FROM_INPUT), static_(false),
- do_demangle_(false)
+ do_demangle_(false), plugins_()
{
}
free(canonical_sysroot);
}
+// Add a plugin and its arguments to the list of plugins.
+
+void
+General_options::add_plugin(const char* arg)
+{
+ if (this->plugins_ == NULL)
+ this->plugins_ = new Plugin_manager(*this);
+ this->plugins_->add_plugin(arg);
+}
+
// Set up variables and other state that isn't set up automatically by
// the parse routine, and ensure options don't contradict each other
// and are otherwise kosher.
this->set_user_set_Map();
}
+ // Using -n or -N implies -static.
+ if (this->nmagic() || this->omagic())
+ this->set_static(true);
+
// If --thread_count is specified, it applies to
// --thread-count-{initial,middle,final}, though it doesn't override
// them.
this->add_to_library_path_with_sysroot("/usr/lib");
}
+ if (this->shared() && !this->user_set_allow_shlib_undefined())
+ this->set_allow_shlib_undefined(true);
+
// Normalize library_path() by adding the sysroot to all directories
// in the path, as appropriate.
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"));