mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-22 09:04:58 +00:00
From Craig Silverstein: rename option functions for future option
handling rewrite.
This commit is contained in:
parent
58abc3ebf6
commit
45aa233bdc
@ -93,7 +93,7 @@ Archive::setup(Task* task)
|
||||
this->read_armap(sarmag + sizeof(Archive_header), armap_size);
|
||||
off = sarmag + sizeof(Archive_header) + armap_size;
|
||||
}
|
||||
else if (!this->input_file_->options().include_whole_archive())
|
||||
else if (!this->input_file_->options().whole_archive())
|
||||
gold_error(_("%s: no archive symbol table (run ranlib)"),
|
||||
this->name().c_str());
|
||||
|
||||
@ -265,7 +265,7 @@ void
|
||||
Archive::add_symbols(Symbol_table* symtab, Layout* layout,
|
||||
Input_objects* input_objects)
|
||||
{
|
||||
if (this->input_file_->options().include_whole_archive())
|
||||
if (this->input_file_->options().whole_archive())
|
||||
return this->include_all_members(symtab, layout, input_objects);
|
||||
|
||||
const size_t armap_size = this->armap_.size();
|
||||
|
@ -49,7 +49,7 @@ zlib_compress(const char* uncompressed_data, unsigned long uncompressed_size,
|
||||
*compressed_data = new char[*compressed_size];
|
||||
|
||||
int compress_level;
|
||||
if (parameters->optimization_level() >= 1)
|
||||
if (parameters->optimize() >= 1)
|
||||
compress_level = 9;
|
||||
else
|
||||
compress_level = 1;
|
||||
|
@ -643,7 +643,7 @@ Input_file::open(const General_options& options, const Dirsearch& dirpath,
|
||||
n1 += this->input_argument_->name();
|
||||
std::string n2;
|
||||
if (options.is_static()
|
||||
|| this->input_argument_->options().do_static_search())
|
||||
|| this->input_argument_->options().Bstatic())
|
||||
n1 += ".a";
|
||||
else
|
||||
{
|
||||
@ -691,7 +691,7 @@ Input_file::open(const General_options& options, const Dirsearch& dirpath,
|
||||
// Now that we've figured out where the file lives, try to open it.
|
||||
|
||||
General_options::Object_format format =
|
||||
this->input_argument_->options().input_format();
|
||||
this->input_argument_->options().format();
|
||||
bool ok;
|
||||
if (format == General_options::OBJECT_FORMAT_ELF)
|
||||
ok = this->file_.open(task, name);
|
||||
|
@ -187,7 +187,7 @@ queue_middle_tasks(const General_options& options,
|
||||
gold_error(_("cannot mix -r with dynamic object %s"),
|
||||
(*input_objects->dynobj_begin())->name().c_str());
|
||||
if (!doing_static_link
|
||||
&& options.output_format() != General_options::OBJECT_FORMAT_ELF)
|
||||
&& options.oformat() != General_options::OBJECT_FORMAT_ELF)
|
||||
gold_fatal(_("cannot use non-ELF output format with dynamic object %s"),
|
||||
(*input_objects->dynobj_begin())->name().c_str());
|
||||
|
||||
|
@ -57,7 +57,7 @@ Layout_task_runner::run(Workqueue* workqueue, const Task* task)
|
||||
// Now we know the final size of the output file and we know where
|
||||
// each piece of information goes.
|
||||
Output_file* of = new Output_file(parameters->output_file_name());
|
||||
if (this->options_.output_format() != General_options::OBJECT_FORMAT_ELF)
|
||||
if (this->options_.oformat() != General_options::OBJECT_FORMAT_ELF)
|
||||
of->set_is_temporary();
|
||||
of->open(file_size);
|
||||
|
||||
@ -491,7 +491,7 @@ Layout::layout_eh_frame(Sized_relobj<size, big_endian>* object,
|
||||
this->eh_frame_data_ = new Eh_frame();
|
||||
os->add_output_section_data(this->eh_frame_data_);
|
||||
|
||||
if (this->options_.create_eh_frame_hdr())
|
||||
if (this->options_.eh_frame_hdr())
|
||||
{
|
||||
Output_section* hdr_os =
|
||||
this->choose_output_section(NULL,
|
||||
@ -636,7 +636,7 @@ Layout::make_output_section(const char* name, elfcpp::Elf_Word type,
|
||||
{
|
||||
// If -Tbss was specified, we need to separate the data
|
||||
// and BSS segments.
|
||||
if (this->options_.user_set_bss_segment_address())
|
||||
if (this->options_.user_set_Tbss())
|
||||
{
|
||||
if ((type == elfcpp::SHT_NOBITS)
|
||||
== (*p)->has_any_data_sections())
|
||||
@ -959,7 +959,7 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
else
|
||||
load_seg = this->find_first_load_seg();
|
||||
|
||||
if (this->options_.output_format() != General_options::OBJECT_FORMAT_ELF)
|
||||
if (this->options_.oformat() != General_options::OBJECT_FORMAT_ELF)
|
||||
load_seg = NULL;
|
||||
|
||||
gold_assert(phdr_seg == NULL || load_seg != NULL);
|
||||
@ -1309,8 +1309,8 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
||||
// Find the PT_LOAD segments, and set their addresses and offsets
|
||||
// and their section's addresses and offsets.
|
||||
uint64_t addr;
|
||||
if (this->options_.user_set_text_segment_address())
|
||||
addr = this->options_.text_segment_address();
|
||||
if (this->options_.user_set_Ttext())
|
||||
addr = this->options_.Ttext();
|
||||
else if (parameters->output_is_shared())
|
||||
addr = 0;
|
||||
else
|
||||
@ -1350,19 +1350,19 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
||||
// the physical address.
|
||||
addr = (*p)->paddr();
|
||||
}
|
||||
else if (this->options_.user_set_data_segment_address()
|
||||
else if (this->options_.user_set_Tdata()
|
||||
&& ((*p)->flags() & elfcpp::PF_W) != 0
|
||||
&& (!this->options_.user_set_bss_segment_address()
|
||||
&& (!this->options_.user_set_Tbss()
|
||||
|| (*p)->has_any_data_sections()))
|
||||
{
|
||||
addr = this->options_.data_segment_address();
|
||||
addr = this->options_.Tdata();
|
||||
are_addresses_set = true;
|
||||
}
|
||||
else if (this->options_.user_set_bss_segment_address()
|
||||
else if (this->options_.user_set_Tbss()
|
||||
&& ((*p)->flags() & elfcpp::PF_W) != 0
|
||||
&& !(*p)->has_any_data_sections())
|
||||
{
|
||||
addr = this->options_.bss_segment_address();
|
||||
addr = this->options_.Tbss();
|
||||
are_addresses_set = true;
|
||||
}
|
||||
|
||||
@ -2553,7 +2553,7 @@ Layout::write_sections_after_input_sections(Output_file* of)
|
||||
void
|
||||
Layout::write_binary(Output_file* in) const
|
||||
{
|
||||
gold_assert(this->options_.output_format()
|
||||
gold_assert(this->options_.oformat()
|
||||
== General_options::OBJECT_FORMAT_BINARY);
|
||||
|
||||
// Get the size of the binary file.
|
||||
@ -2724,7 +2724,7 @@ void
|
||||
Close_task_runner::run(Workqueue*, const Task*)
|
||||
{
|
||||
// If we've been asked to create a binary file, we do so here.
|
||||
if (this->options_->output_format() != General_options::OBJECT_FORMAT_ELF)
|
||||
if (this->options_->oformat() != General_options::OBJECT_FORMAT_ELF)
|
||||
this->layout_->write_binary(this->of_);
|
||||
|
||||
this->of_->close();
|
||||
|
@ -77,16 +77,20 @@ struct options::One_option
|
||||
Command_line*);
|
||||
|
||||
// If this is a position independent option which does not take an
|
||||
// argument, this is the member function to call to record it.
|
||||
void (General_options::*general_noarg)();
|
||||
// argument, this is the member function to call to record it. (In
|
||||
// this file, the bool will always be 'true' to indicate the option
|
||||
// is set.)
|
||||
void (General_options::*general_noarg)(bool);
|
||||
|
||||
// If this is a position independent function which takes an
|
||||
// argument, this is the member function to call to record it.
|
||||
void (General_options::*general_arg)(const char*);
|
||||
|
||||
// If this is a position dependent option which does not take an
|
||||
// argument, this is the member function to call to record it.
|
||||
void (Position_dependent_options::*dependent_noarg)();
|
||||
// argument, this is the member function to call to record it. (In
|
||||
// this file, the bool will always be 'true' to indicate the option
|
||||
// is set.)
|
||||
void (Position_dependent_options::*dependent_noarg)(bool);
|
||||
|
||||
// If this is a position dependent option which takes an argument,
|
||||
// this is the member function to record it.
|
||||
@ -106,7 +110,7 @@ struct options::One_z_option
|
||||
const char* name;
|
||||
|
||||
// The member function in General_options called to record it.
|
||||
void (General_options::*set)();
|
||||
void (General_options::*set)(bool);
|
||||
};
|
||||
|
||||
// We have a separate table for --debug options.
|
||||
@ -442,20 +446,20 @@ options::Command_line_options::options[] =
|
||||
NULL, TWO_DASHES, &Position_dependent_options::set_as_needed),
|
||||
POSDEP_NOARG('\0', "no-as-needed",
|
||||
N_("Always DT_NEEDED for dynamic libs (default)"),
|
||||
NULL, TWO_DASHES, &Position_dependent_options::clear_as_needed),
|
||||
NULL, TWO_DASHES, &Position_dependent_options::set_no_as_needed),
|
||||
POSDEP_NOARG('\0', "Bdynamic",
|
||||
N_("-l searches for shared libraries"),
|
||||
NULL, ONE_DASH,
|
||||
&Position_dependent_options::set_dynamic_search),
|
||||
&Position_dependent_options::set_Bdynamic),
|
||||
POSDEP_NOARG('\0', "Bstatic",
|
||||
N_("-l does not search for shared libraries"),
|
||||
NULL, ONE_DASH,
|
||||
&Position_dependent_options::set_static_search),
|
||||
&Position_dependent_options::set_Bstatic),
|
||||
GENERAL_NOARG('\0', "Bsymbolic", N_("Bind defined symbols locally"),
|
||||
NULL, ONE_DASH, &General_options::set_symbolic),
|
||||
NULL, ONE_DASH, &General_options::set_Bsymbolic),
|
||||
POSDEP_ARG('b', "format", N_("Set input format (elf, binary)"),
|
||||
N_("-b FORMAT, --format FORMAT"), TWO_DASHES,
|
||||
&Position_dependent_options::set_input_format),
|
||||
&Position_dependent_options::set_format),
|
||||
#ifdef HAVE_ZLIB_H
|
||||
# define ZLIB_STR ",zlib"
|
||||
#else
|
||||
@ -469,12 +473,12 @@ options::Command_line_options::options[] =
|
||||
&General_options::set_compress_debug_sections),
|
||||
GENERAL_ARG('\0', "defsym", N_("Define a symbol"),
|
||||
N_("--defsym SYMBOL=EXPRESSION"), TWO_DASHES,
|
||||
&General_options::define_symbol),
|
||||
&General_options::add_to_defsym),
|
||||
GENERAL_NOARG('\0', "demangle", N_("Demangle C++ symbols in log messages"),
|
||||
NULL, TWO_DASHES, &General_options::set_demangle),
|
||||
GENERAL_NOARG('\0', "no-demangle",
|
||||
N_("Do not demangle C++ symbols in log messages"),
|
||||
NULL, TWO_DASHES, &General_options::clear_demangle),
|
||||
NULL, TWO_DASHES, &General_options::set_no_demangle),
|
||||
GENERAL_NOARG('\0', "detect-odr-violations",
|
||||
N_("Try to detect violations of the One Definition Rule"),
|
||||
NULL, TWO_DASHES, &General_options::set_detect_odr_violations),
|
||||
@ -484,7 +488,7 @@ options::Command_line_options::options[] =
|
||||
GENERAL_NOARG('E', "export-dynamic", N_("Export all dynamic symbols"),
|
||||
NULL, TWO_DASHES, &General_options::set_export_dynamic),
|
||||
GENERAL_NOARG('\0', "eh-frame-hdr", N_("Create exception frame header"),
|
||||
NULL, TWO_DASHES, &General_options::set_create_eh_frame_hdr),
|
||||
NULL, TWO_DASHES, &General_options::set_eh_frame_hdr),
|
||||
GENERAL_ARG('h', "soname", N_("Set shared library name"),
|
||||
N_("-h FILENAME, -soname FILENAME"), ONE_DASH,
|
||||
&General_options::set_soname),
|
||||
@ -501,14 +505,14 @@ options::Command_line_options::options[] =
|
||||
&General_options::ignore),
|
||||
GENERAL_ARG('o', "output", N_("Set output file name"),
|
||||
N_("-o FILE, --output FILE"), TWO_DASHES,
|
||||
&General_options::set_output_file_name),
|
||||
GENERAL_ARG('O', NULL, N_("Optimize output file size"),
|
||||
&General_options::set_output),
|
||||
GENERAL_ARG('O', "optimize", N_("Optimize output file size"),
|
||||
N_("-O level"), ONE_DASH,
|
||||
&General_options::set_optimization_level),
|
||||
&General_options::set_optimize),
|
||||
GENERAL_ARG('\0', "oformat", N_("Set output format (only binary supported)"),
|
||||
N_("--oformat FORMAT"), EXACTLY_TWO_DASHES,
|
||||
&General_options::set_output_format),
|
||||
GENERAL_NOARG('r', NULL, N_("Generate relocatable output"), NULL,
|
||||
&General_options::set_oformat),
|
||||
GENERAL_NOARG('r', "relocatable", N_("Generate relocatable output"), NULL,
|
||||
ONE_DASH, &General_options::set_relocatable),
|
||||
// -R really means -rpath, but can mean --just-symbols for
|
||||
// compatibility with GNU ld. -rpath is always -rpath, so we list
|
||||
@ -543,13 +547,13 @@ options::Command_line_options::options[] =
|
||||
N_("--sysroot DIR"), TWO_DASHES, &General_options::set_sysroot),
|
||||
GENERAL_ARG('\0', "Tbss", N_("Set the address of the bss segment"),
|
||||
N_("-Tbss ADDRESS"), ONE_DASH,
|
||||
&General_options::set_bss_segment_address),
|
||||
&General_options::set_Tbss),
|
||||
GENERAL_ARG('\0', "Tdata", N_("Set the address of the data segment"),
|
||||
N_("-Tdata ADDRESS"), ONE_DASH,
|
||||
&General_options::set_data_segment_address),
|
||||
&General_options::set_Tdata),
|
||||
GENERAL_ARG('\0', "Ttext", N_("Set the address of the text segment"),
|
||||
N_("-Ttext ADDRESS"), ONE_DASH,
|
||||
&General_options::set_text_segment_address),
|
||||
&General_options::set_Ttext),
|
||||
// This must come after -Ttext and friends since it's a prefix of
|
||||
// them.
|
||||
SPECIAL('T', "script", N_("Read linker script"),
|
||||
@ -561,7 +565,7 @@ options::Command_line_options::options[] =
|
||||
GENERAL_NOARG('\0', "threads", N_("Run the linker multi-threaded"),
|
||||
NULL, TWO_DASHES, &General_options::set_threads),
|
||||
GENERAL_NOARG('\0', "no-threads", N_("Do not run the linker multi-threaded"),
|
||||
NULL, TWO_DASHES, &General_options::clear_threads),
|
||||
NULL, TWO_DASHES, &General_options::set_no_threads),
|
||||
GENERAL_ARG('\0', "thread-count", N_("Number of threads to use"),
|
||||
N_("--thread-count COUNT"), TWO_DASHES,
|
||||
&General_options::set_thread_count),
|
||||
@ -584,7 +588,7 @@ options::Command_line_options::options[] =
|
||||
POSDEP_NOARG('\0', "no-whole-archive",
|
||||
N_("Include only needed archive contents"),
|
||||
NULL, TWO_DASHES,
|
||||
&Position_dependent_options::clear_whole_archive),
|
||||
&Position_dependent_options::set_no_whole_archive),
|
||||
|
||||
GENERAL_ARG('z', NULL,
|
||||
N_("Subcommands as follows:\n\
|
||||
@ -643,8 +647,8 @@ General_options::General_options(Script_options* script_options)
|
||||
search_path_(),
|
||||
optimization_level_(0),
|
||||
output_file_name_("a.out"),
|
||||
output_format_(OBJECT_FORMAT_ELF),
|
||||
output_format_string_(NULL),
|
||||
oformat_(OBJECT_FORMAT_ELF),
|
||||
oformat_string_(NULL),
|
||||
is_relocatable_(false),
|
||||
strip_(STRIP_NONE),
|
||||
allow_shlib_undefined_(false),
|
||||
@ -680,7 +684,7 @@ General_options::General_options(Script_options* script_options)
|
||||
// Handle the --defsym option.
|
||||
|
||||
void
|
||||
General_options::define_symbol(const char* arg)
|
||||
General_options::add_to_defsym(const char* arg)
|
||||
{
|
||||
this->script_options_->define_symbol(arg);
|
||||
}
|
||||
@ -688,10 +692,10 @@ General_options::define_symbol(const char* arg)
|
||||
// Handle the --oformat option.
|
||||
|
||||
void
|
||||
General_options::set_output_format(const char* arg)
|
||||
General_options::set_oformat(const char* arg)
|
||||
{
|
||||
this->output_format_string_ = arg;
|
||||
this->output_format_ = string_to_object_format(arg);
|
||||
this->oformat_string_ = arg;
|
||||
this->oformat_ = string_to_object_format(arg);
|
||||
}
|
||||
|
||||
// The x86_64 kernel build converts a binary file to an object file
|
||||
@ -703,14 +707,14 @@ General_options::set_output_format(const char* arg)
|
||||
Target*
|
||||
General_options::default_target() const
|
||||
{
|
||||
if (this->output_format_string_ != NULL)
|
||||
if (this->oformat_string_ != NULL)
|
||||
{
|
||||
Target* target = select_target_by_name(this->output_format_string_);
|
||||
Target* target = select_target_by_name(this->oformat_string_);
|
||||
if (target != NULL)
|
||||
return target;
|
||||
|
||||
gold_error(_("unrecognized output format %s"),
|
||||
this->output_format_string_);
|
||||
this->oformat_string_);
|
||||
}
|
||||
|
||||
// The GOLD_DEFAULT_xx macros are defined by the configure script.
|
||||
@ -734,7 +738,7 @@ General_options::handle_z_option(const char* arg)
|
||||
{
|
||||
if (strcmp(arg, z_options[i].name) == 0)
|
||||
{
|
||||
(this->*(z_options[i].set))();
|
||||
(this->*(z_options[i].set))(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -803,7 +807,7 @@ Position_dependent_options::Position_dependent_options()
|
||||
// Set the input format.
|
||||
|
||||
void
|
||||
Position_dependent_options::set_input_format(const char* arg)
|
||||
Position_dependent_options::set_format(const char* arg)
|
||||
{
|
||||
this->input_format_ = string_to_object_format(arg);
|
||||
}
|
||||
@ -1108,19 +1112,19 @@ Command_line::get_special_argument(const char* longname, int argc, char** argv,
|
||||
void
|
||||
Command_line::normalize_options()
|
||||
{
|
||||
if (this->options_.is_shared() && this->options_.is_relocatable())
|
||||
if (this->options_.shared() && this->options_.relocatable())
|
||||
gold_fatal(_("-shared and -r are incompatible"));
|
||||
|
||||
if (this->options_.output_format() != General_options::OBJECT_FORMAT_ELF
|
||||
&& (this->options_.is_shared() || this->options_.is_relocatable()))
|
||||
if (this->options_.oformat() != General_options::OBJECT_FORMAT_ELF
|
||||
&& (this->options_.shared() || this->options_.relocatable()))
|
||||
gold_fatal(_("binary output format not compatible with -shared or -r"));
|
||||
|
||||
// If the user specifies both -s and -r, convert the -s as -S.
|
||||
// -r requires us to keep externally visible symbols!
|
||||
if (this->options_.strip_all() && this->options_.is_relocatable())
|
||||
if (this->options_.strip_all() && this->options_.relocatable())
|
||||
{
|
||||
// Clears the strip_all() status, replacing it with strip_debug().
|
||||
this->options_.set_strip_debug();
|
||||
this->options_.set_strip_debug(true);
|
||||
}
|
||||
|
||||
// FIXME: we can/should be doing a lot more sanity checking here.
|
||||
@ -1136,9 +1140,9 @@ Command_line::apply_option(const options::One_option& opt,
|
||||
if (arg == NULL)
|
||||
{
|
||||
if (opt.general_noarg)
|
||||
(this->options_.*(opt.general_noarg))();
|
||||
(this->options_.*(opt.general_noarg))(true);
|
||||
else if (opt.dependent_noarg)
|
||||
(this->position_options_.*(opt.dependent_noarg))();
|
||||
(this->position_options_.*(opt.dependent_noarg))(true);
|
||||
else
|
||||
gold_unreachable();
|
||||
}
|
||||
|
145
gold/options.h
145
gold/options.h
@ -150,7 +150,7 @@ class General_options
|
||||
|
||||
// -O: optimization level (0: don't try to optimize output size).
|
||||
int
|
||||
optimization_level() const
|
||||
optimize() const
|
||||
{ return this->optimization_level_; }
|
||||
|
||||
// -o: Output file name.
|
||||
@ -160,8 +160,8 @@ class General_options
|
||||
|
||||
// --oformat: Output format.
|
||||
Object_format
|
||||
output_format() const
|
||||
{ return this->output_format_; }
|
||||
oformat() const
|
||||
{ return this->oformat_; }
|
||||
|
||||
// Return the default target.
|
||||
Target*
|
||||
@ -169,7 +169,7 @@ class General_options
|
||||
|
||||
// -r: Whether we are doing a relocatable link.
|
||||
bool
|
||||
is_relocatable() const
|
||||
relocatable() const
|
||||
{ return this->is_relocatable_; }
|
||||
|
||||
// -s: Strip all symbols.
|
||||
@ -196,7 +196,7 @@ class General_options
|
||||
|
||||
// -Bsymbolic: bind defined symbols locally.
|
||||
bool
|
||||
symbolic() const
|
||||
Bsymbolic() const
|
||||
{ return this->symbolic_; }
|
||||
|
||||
// --compress-debug-sections: compress .debug_* sections in the
|
||||
@ -222,7 +222,7 @@ class General_options
|
||||
|
||||
// --eh-frame-hdr: Whether to generate an exception frame header.
|
||||
bool
|
||||
create_eh_frame_hdr() const
|
||||
eh_frame_hdr() const
|
||||
{ return this->create_eh_frame_hdr_; }
|
||||
|
||||
// --rpath: The runtime search path.
|
||||
@ -237,7 +237,7 @@ class General_options
|
||||
|
||||
// --shared: Whether generating a shared object.
|
||||
bool
|
||||
is_shared() const
|
||||
shared() const
|
||||
{ return this->is_shared_; }
|
||||
|
||||
// --static: Whether doing a static link.
|
||||
@ -262,32 +262,32 @@ class General_options
|
||||
|
||||
// -Tbss: The address of the BSS segment
|
||||
uint64_t
|
||||
bss_segment_address() const
|
||||
Tbss() const
|
||||
{ return this->bss_segment_address_; }
|
||||
|
||||
// Whether -Tbss was used.
|
||||
bool
|
||||
user_set_bss_segment_address() const
|
||||
user_set_Tbss() const
|
||||
{ return this->bss_segment_address_ != -1U; }
|
||||
|
||||
// -Tdata: The address of the data segment
|
||||
uint64_t
|
||||
data_segment_address() const
|
||||
Tdata() const
|
||||
{ return this->data_segment_address_; }
|
||||
|
||||
// Whether -Tdata was used.
|
||||
bool
|
||||
user_set_data_segment_address() const
|
||||
user_set_Tdata() const
|
||||
{ return this->data_segment_address_ != -1U; }
|
||||
|
||||
// -Ttext: The address of the .text section
|
||||
uint64_t
|
||||
text_segment_address() const
|
||||
Ttext() const
|
||||
{ return this->text_segment_address_; }
|
||||
|
||||
// Whether -Ttext was used.
|
||||
bool
|
||||
user_set_text_segment_address() const
|
||||
user_set_Ttext() const
|
||||
{ return this->text_segment_address_ != -1U; }
|
||||
|
||||
// --threads: Whether to use threads.
|
||||
@ -377,8 +377,8 @@ class General_options
|
||||
{ this->script_options_->set_entry(arg, strlen(arg)); }
|
||||
|
||||
void
|
||||
set_export_dynamic()
|
||||
{ this->export_dynamic_ = true; }
|
||||
set_export_dynamic(bool value)
|
||||
{ this->export_dynamic_ = value; }
|
||||
|
||||
void
|
||||
set_soname(const char* arg)
|
||||
@ -397,7 +397,7 @@ class General_options
|
||||
{ this->search_path_.push_back(Search_directory(arg, true)); }
|
||||
|
||||
void
|
||||
set_optimization_level(const char* arg)
|
||||
set_optimize(const char* arg)
|
||||
{
|
||||
char* endptr;
|
||||
this->optimization_level_ = strtol(arg, &endptr, 0);
|
||||
@ -406,41 +406,41 @@ class General_options
|
||||
}
|
||||
|
||||
void
|
||||
set_output_file_name(const char* arg)
|
||||
set_output(const char* arg)
|
||||
{ this->output_file_name_ = arg; }
|
||||
|
||||
void
|
||||
set_output_format(const char*);
|
||||
set_oformat(const char*);
|
||||
|
||||
void
|
||||
set_relocatable()
|
||||
{ this->is_relocatable_ = true; }
|
||||
set_relocatable(bool value)
|
||||
{ this->is_relocatable_ = value; }
|
||||
|
||||
void
|
||||
set_strip_all()
|
||||
set_strip_all(bool)
|
||||
{ this->strip_ = STRIP_ALL; }
|
||||
|
||||
// Note: normalize_options() depends on the fact that this turns off
|
||||
// STRIP_ALL if it were already set.
|
||||
void
|
||||
set_strip_debug()
|
||||
set_strip_debug(bool)
|
||||
{ this->strip_ = STRIP_DEBUG; }
|
||||
|
||||
void
|
||||
set_strip_debug_gdb()
|
||||
set_strip_debug_gdb(bool)
|
||||
{ this->strip_ = STRIP_DEBUG_UNUSED_BY_GDB; }
|
||||
|
||||
void
|
||||
set_allow_shlib_undefined()
|
||||
{ this->allow_shlib_undefined_ = true; }
|
||||
set_allow_shlib_undefined(bool value)
|
||||
{ this->allow_shlib_undefined_ = value; }
|
||||
|
||||
void
|
||||
set_no_allow_shlib_undefined()
|
||||
{ this->allow_shlib_undefined_ = false; }
|
||||
set_no_allow_shlib_undefined(bool value)
|
||||
{ this->set_allow_shlib_undefined(!value); }
|
||||
|
||||
void
|
||||
set_symbolic()
|
||||
{ this->symbolic_ = true; }
|
||||
set_Bsymbolic(bool value)
|
||||
{ this->symbolic_ = value; }
|
||||
|
||||
void set_compress_debug_sections(const char* arg)
|
||||
{
|
||||
@ -456,23 +456,23 @@ class General_options
|
||||
}
|
||||
|
||||
void
|
||||
define_symbol(const char* arg);
|
||||
add_to_defsym(const char* arg);
|
||||
|
||||
void
|
||||
set_demangle()
|
||||
{ this->demangle_ = true; }
|
||||
set_demangle(bool value)
|
||||
{ this->demangle_ = value; }
|
||||
|
||||
void
|
||||
clear_demangle()
|
||||
{ this->demangle_ = false; }
|
||||
set_no_demangle(bool value)
|
||||
{ this->set_demangle(!value); }
|
||||
|
||||
void
|
||||
set_detect_odr_violations()
|
||||
{ this->detect_odr_violations_ = true; }
|
||||
set_detect_odr_violations(bool value)
|
||||
{ this->detect_odr_violations_ = value; }
|
||||
|
||||
void
|
||||
set_create_eh_frame_hdr()
|
||||
{ this->create_eh_frame_hdr_ = true; }
|
||||
set_eh_frame_hdr(bool value)
|
||||
{ this->create_eh_frame_hdr_ = value; }
|
||||
|
||||
void
|
||||
add_to_rpath(const char* arg)
|
||||
@ -483,16 +483,16 @@ class General_options
|
||||
{ this->rpath_link_.push_back(Search_directory(arg, false)); }
|
||||
|
||||
void
|
||||
set_shared()
|
||||
{ this->is_shared_ = true; }
|
||||
set_shared(bool value)
|
||||
{ this->is_shared_ = value; }
|
||||
|
||||
void
|
||||
set_static()
|
||||
{ this->is_static_ = true; }
|
||||
set_static(bool value)
|
||||
{ this->is_static_ = value; }
|
||||
|
||||
void
|
||||
set_stats()
|
||||
{ this->print_stats_ = true; }
|
||||
set_stats(bool value)
|
||||
{ this->print_stats_ = value; }
|
||||
|
||||
void
|
||||
set_sysroot(const char* arg)
|
||||
@ -508,15 +508,15 @@ class General_options
|
||||
}
|
||||
|
||||
void
|
||||
set_bss_segment_address(const char* arg)
|
||||
set_Tbss(const char* arg)
|
||||
{ this->set_segment_address("-Tbss", arg, &this->bss_segment_address_); }
|
||||
|
||||
void
|
||||
set_data_segment_address(const char* arg)
|
||||
set_Tdata(const char* arg)
|
||||
{ this->set_segment_address("-Tdata", arg, &this->data_segment_address_); }
|
||||
|
||||
void
|
||||
set_text_segment_address(const char* arg)
|
||||
set_Ttext(const char* arg)
|
||||
{ this->set_segment_address("-Ttext", arg, &this->text_segment_address_); }
|
||||
|
||||
int
|
||||
@ -530,17 +530,18 @@ class General_options
|
||||
}
|
||||
|
||||
void
|
||||
set_threads()
|
||||
set_threads(bool value)
|
||||
{
|
||||
#ifndef ENABLE_THREADS
|
||||
gold_fatal(_("--threads not supported"));
|
||||
if (value)
|
||||
gold_fatal(_("--threads not supported"));
|
||||
#endif
|
||||
this->threads_ = true;
|
||||
this->threads_ = value;
|
||||
}
|
||||
|
||||
void
|
||||
clear_threads()
|
||||
{ this->threads_ = false; }
|
||||
set_no_threads(bool value)
|
||||
{ this->set_threads(!value); }
|
||||
|
||||
void
|
||||
set_thread_count(const char* arg)
|
||||
@ -568,11 +569,11 @@ class General_options
|
||||
{ }
|
||||
|
||||
void
|
||||
set_execstack()
|
||||
set_execstack(bool)
|
||||
{ this->execstack_ = EXECSTACK_YES; }
|
||||
|
||||
void
|
||||
set_noexecstack()
|
||||
set_noexecstack(bool)
|
||||
{ this->execstack_ = EXECSTACK_NO; }
|
||||
|
||||
void
|
||||
@ -597,8 +598,8 @@ class General_options
|
||||
Dir_list search_path_;
|
||||
int optimization_level_;
|
||||
const char* output_file_name_;
|
||||
Object_format output_format_;
|
||||
const char* output_format_string_;
|
||||
Object_format oformat_;
|
||||
const char* oformat_string_;
|
||||
bool is_relocatable_;
|
||||
Strip strip_;
|
||||
bool allow_shlib_undefined_;
|
||||
@ -639,7 +640,7 @@ class Position_dependent_options
|
||||
// -Bdynamic/-Bstatic: Whether we are searching for a static archive
|
||||
// -rather than a shared object.
|
||||
bool
|
||||
do_static_search() const
|
||||
Bstatic() const
|
||||
{ return this->do_static_search_; }
|
||||
|
||||
// --as-needed: Whether to add a DT_NEEDED argument only if the
|
||||
@ -651,40 +652,40 @@ class Position_dependent_options
|
||||
// --whole-archive: Whether to include the entire contents of an
|
||||
// --archive.
|
||||
bool
|
||||
include_whole_archive() const
|
||||
whole_archive() const
|
||||
{ return this->include_whole_archive_; }
|
||||
|
||||
// --format: The format of the input file.
|
||||
Object_format
|
||||
input_format() const
|
||||
format() const
|
||||
{ return this->input_format_; }
|
||||
|
||||
void
|
||||
set_static_search()
|
||||
{ this->do_static_search_ = true; }
|
||||
set_Bstatic(bool value)
|
||||
{ this->do_static_search_ = value; }
|
||||
|
||||
void
|
||||
set_dynamic_search()
|
||||
{ this->do_static_search_ = false; }
|
||||
set_Bdynamic(bool value)
|
||||
{ this->set_Bstatic(!value); }
|
||||
|
||||
void
|
||||
set_as_needed()
|
||||
{ this->as_needed_ = true; }
|
||||
set_as_needed(bool value)
|
||||
{ this->as_needed_ = value; }
|
||||
|
||||
void
|
||||
clear_as_needed()
|
||||
{ this->as_needed_ = false; }
|
||||
set_no_as_needed(bool value)
|
||||
{ this->set_as_needed(!value); }
|
||||
|
||||
void
|
||||
set_whole_archive()
|
||||
{ this->include_whole_archive_ = true; }
|
||||
set_whole_archive(bool value)
|
||||
{ this->include_whole_archive_ = value; }
|
||||
|
||||
void
|
||||
clear_whole_archive()
|
||||
{ this->include_whole_archive_ = false; }
|
||||
set_no_whole_archive(bool value)
|
||||
{ this->set_whole_archive(!value); }
|
||||
|
||||
void
|
||||
set_input_format(const char*);
|
||||
set_format(const char*);
|
||||
|
||||
private:
|
||||
bool do_static_search_;
|
||||
|
@ -51,16 +51,16 @@ Parameters::set_from_options(const General_options* options)
|
||||
this->output_file_name_ = options->output_file_name();
|
||||
this->sysroot_ = options->sysroot();
|
||||
this->allow_shlib_undefined_ = options->allow_shlib_undefined();
|
||||
this->symbolic_ = options->symbolic();
|
||||
this->symbolic_ = options->Bsymbolic();
|
||||
this->demangle_ = options->demangle();
|
||||
this->detect_odr_violations_ = options->detect_odr_violations();
|
||||
this->optimization_level_ = options->optimization_level();
|
||||
this->optimization_level_ = options->optimize();
|
||||
this->export_dynamic_ = options->export_dynamic();
|
||||
this->debug_ = options->debug();
|
||||
|
||||
if (options->is_shared())
|
||||
if (options->shared())
|
||||
this->output_file_type_ = OUTPUT_SHARED;
|
||||
else if (options->is_relocatable())
|
||||
else if (options->relocatable())
|
||||
this->output_file_type_ = OUTPUT_OBJECT;
|
||||
else
|
||||
this->output_file_type_ = OUTPUT_EXECUTABLE;
|
||||
|
@ -146,7 +146,7 @@ class Parameters
|
||||
// Whether we are doing a symbolic link, in which all defined
|
||||
// symbols are bound locally.
|
||||
bool
|
||||
symbolic() const
|
||||
Bsymbolic() const
|
||||
{
|
||||
gold_assert(this->options_valid_);
|
||||
return this->symbolic_;
|
||||
@ -165,9 +165,9 @@ class Parameters
|
||||
return this->detect_odr_violations_;
|
||||
}
|
||||
|
||||
// The general linker optimization level.
|
||||
// The general linker optimization level (-O).
|
||||
int
|
||||
optimization_level() const
|
||||
optimize() const
|
||||
{
|
||||
gold_assert(this->options_valid_);
|
||||
return this->optimization_level_;
|
||||
|
@ -1419,8 +1419,8 @@ read_script_file(const char* filename, Command_line* cmdline,
|
||||
|
||||
// We don't want this file to be opened in binary mode.
|
||||
Position_dependent_options posdep = cmdline->position_dependent_options();
|
||||
if (posdep.input_format() == General_options::OBJECT_FORMAT_BINARY)
|
||||
posdep.set_input_format("elf");
|
||||
if (posdep.format() == General_options::OBJECT_FORMAT_BINARY)
|
||||
posdep.set_format("elf");
|
||||
Input_file_argument input_argument(filename, false, "", false, posdep);
|
||||
Input_file input_file(&input_argument);
|
||||
if (!input_file.open(cmdline->options(), dirsearch, task))
|
||||
@ -2094,7 +2094,7 @@ extern "C" void
|
||||
script_start_as_needed(void* closurev)
|
||||
{
|
||||
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
|
||||
closure->position_dependent_options().set_as_needed();
|
||||
closure->position_dependent_options().set_as_needed(true);
|
||||
}
|
||||
|
||||
// Called by the bison parser at the end of an AS_NEEDED list.
|
||||
@ -2103,7 +2103,7 @@ extern "C" void
|
||||
script_end_as_needed(void* closurev)
|
||||
{
|
||||
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
|
||||
closure->position_dependent_options().clear_as_needed();
|
||||
closure->position_dependent_options().set_as_needed(false);
|
||||
}
|
||||
|
||||
// Called by the bison parser to set the entry symbol.
|
||||
|
@ -394,7 +394,7 @@ Stringpool_template<Stringpool_char>::set_string_offsets()
|
||||
// the strtab size, and gives a relatively small benefit (it's
|
||||
// typically rare for a symbol to be a suffix of another), we only
|
||||
// take the time to sort when the user asks for heavy optimization.
|
||||
if (parameters->optimization_level() < 2)
|
||||
if (parameters->optimize() < 2)
|
||||
{
|
||||
for (typename String_set_type::iterator curr = this->string_set_.begin();
|
||||
curr != this->string_set_.end();
|
||||
|
@ -471,7 +471,7 @@ class Symbol
|
||||
&& this->visibility_ != elfcpp::STV_PROTECTED
|
||||
&& !this->is_forced_local_
|
||||
&& parameters->output_is_shared()
|
||||
&& !parameters->symbolic());
|
||||
&& !parameters->Bsymbolic());
|
||||
}
|
||||
|
||||
// Return true if this symbol is a function that needs a PLT entry.
|
||||
|
Loading…
x
Reference in New Issue
Block a user