N_("Try to detect violations of the One Definition Rule"),
NULL);
+ DEFINE_bool(dynamic_list_data, options::TWO_DASHES, '\0', false,
+ N_("Add data symbols to dynamic symbols"), NULL);
+
+ DEFINE_bool(dynamic_list_cpp_new, options::TWO_DASHES, '\0', false,
+ N_("Add C++ operator new/delete to dynamic symbols"), NULL);
+
+ DEFINE_bool(dynamic_list_cpp_typeinfo, options::TWO_DASHES, '\0', false,
+ N_("Add C++ typeinfo to dynamic symbols"), NULL);
+
+ DEFINE_special(dynamic_list, options::TWO_DASHES, '\0',
+ N_("Read a list of dynamic symbols"), N_("FILE"));
+
DEFINE_string(entry, options::TWO_DASHES, 'e', NULL,
N_("Set program start address"), N_("ADDRESS"));
#ifdef ENABLE_PLUGINS
DEFINE_special(plugin, options::TWO_DASHES, '\0',
- N_("Load a plugin library"), N_("PLUGIN[,ARG,...]"));
+ N_("Load a plugin library"), N_("PLUGIN"));
+ DEFINE_special(plugin_opt, options::TWO_DASHES, '\0',
+ N_("Pass an option to the plugin"), N_("OPTION"));
#endif
DEFINE_bool(preread_archive_symbols, options::TWO_DASHES, '\0', false,
DEFINE_bool(strip_debug_gdb, options::TWO_DASHES, '\0', false,
N_("Strip debug symbols that are unused by gdb "
"(at least versions <= 6.7)"), NULL);
+ DEFINE_bool(strip_lto_sections, options::TWO_DASHES, '\0', true,
+ N_("Strip LTO intermediate code sections"), NULL);
DEFINE_bool(shared, options::ONE_DASH, '\0', false,
N_("Generate shared library"), NULL);
plugins() const
{ return this->plugins_; }
+ // True iff SYMBOL was found in the file specified by dynamic-list.
+ bool
+ in_dynamic_list(const char* symbol) const
+ { return this->dynamic_list_.version_script_info()->symbol_is_local(symbol); }
+
private:
// Don't copy this structure.
General_options(const General_options&);
// Add a plugin and its arguments to the list of plugins.
void
- add_plugin(const char* arg);
+ add_plugin(const char *filename);
+
+ // Add a plugin option.
+ void
+ add_plugin_option(const char* opt);
// Whether to mark the stack as executable.
Execstack execstack_status_;
bool do_demangle_;
// List of plugin libraries.
Plugin_manager* plugins_;
+ // The parsed output of --dynamic-list files. For convenience in
+ // script.cc, we store this as a Script_options object, even though
+ // we only use a single Version_tree from it.
+ Script_options dynamic_list_;
};
// The position-dependent options. We use this to store the state of