X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2Fparameters.cc;h=e6b96825353c4a443bc72f858b760a4af08673f7;hb=53d25da64b00c1cf7f10d04785d66fa003f8bfc9;hp=b96221a8b2449764b6b93e089b595e76093d97d7;hpb=e2827e5f525574e8620bd43c8bcb27dba3407a7f;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/parameters.cc b/gold/parameters.cc index b96221a8b2..e6b9682535 100644 --- a/gold/parameters.cc +++ b/gold/parameters.cc @@ -23,6 +23,7 @@ #include "gold.h" #include "options.h" +#include "target.h" #include "parameters.h" namespace gold @@ -31,13 +32,13 @@ namespace gold // Initialize the parameters from the options. Parameters::Parameters(Errors* errors) - : errors_(errors), output_file_name_(NULL), + : errors_(errors), threads_(false), output_file_name_(NULL), output_file_type_(OUTPUT_INVALID), sysroot_(), strip_(STRIP_INVALID), allow_shlib_undefined_(false), - symbolic_(false), detect_odr_violations_(false), - optimization_level_(0), export_dynamic_(false), + symbolic_(false), demangle_(false), detect_odr_violations_(false), + optimization_level_(0), export_dynamic_(false), debug_(0), is_doing_static_link_valid_(false), doing_static_link_(false), - is_size_and_endian_valid_(false), size_(0), is_big_endian_(false) + is_target_valid_(false), target_(NULL) { } @@ -46,13 +47,16 @@ Parameters::Parameters(Errors* errors) void Parameters::set_from_options(const General_options* options) { + this->threads_ = options->threads(); 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->demangle_ = options->demangle(); this->detect_odr_violations_ = options->detect_odr_violations(); this->optimization_level_ = options->optimization_level(); this->export_dynamic_ = options->export_dynamic(); + this->debug_ = options->debug(); if (options->is_shared()) this->output_file_type_ = OUTPUT_SHARED; @@ -65,6 +69,8 @@ Parameters::set_from_options(const General_options* options) this->strip_ = STRIP_ALL; else if (options->strip_debug()) this->strip_ = STRIP_DEBUG; + else if (options->strip_debug_gdb()) + this->strip_ = STRIP_DEBUG_UNUSED_BY_GDB; else this->strip_ = STRIP_NONE; @@ -80,22 +86,20 @@ Parameters::set_doing_static_link(bool doing_static_link) this->is_doing_static_link_valid_ = true; } -// Set the size and endianness. +// Set the target. void -Parameters::set_size_and_endianness(int size, bool is_big_endian) +Parameters::set_target(Target* target) { - if (!this->is_size_and_endian_valid_) + if (!this->is_target_valid_) { - this->size_ = size; - this->is_big_endian_ = is_big_endian; - this->is_size_and_endian_valid_ = true; + this->target_ = target; + this->size_ = target->get_size(); + this->is_big_endian_ = target->is_big_endian(); + this->is_target_valid_ = true; } else - { - gold_assert(size == this->size_); - gold_assert(is_big_endian == this->is_big_endian_); - } + gold_assert(target == this->target_); } // Our local version of the variable, which is not const. @@ -130,12 +134,12 @@ set_parameters_doing_static_link(bool doing_static_link) static_parameters->set_doing_static_link(doing_static_link); } -// Set the size and endianness. +// Set the target. void -set_parameters_size_and_endianness(int size, bool is_big_endian) +set_parameters_target(Target* target) { - static_parameters->set_size_and_endianness(size, is_big_endian); + static_parameters->set_target(target); } } // End namespace gold.