gas/
[deliverable/binutils-gdb.git] / gold / parameters.cc
index 462eeea8b9b9ca40a7a360526f3fc97798d64caf..0c38ef7ed99f70cf11acd369ab3d0135fb6f78ba 100644 (file)
@@ -31,7 +31,9 @@ namespace gold
 // Initialize the parameters from the options.
 
 Parameters::Parameters(const General_options* options)
-  : optimization_level_(options->optimization_level())
+  : is_doing_static_link_valid_(false), doing_static_link_(false),
+    is_size_and_endian_valid_(false), size_(0), is_big_endian_(false),
+    optimization_level_(options->optimization_level())
 {
   if (options->is_shared())
     this->output_file_type_ = OUTPUT_SHARED;
@@ -41,6 +43,37 @@ Parameters::Parameters(const General_options* options)
     this->output_file_type_ = OUTPUT_EXECUTABLE;
 }
 
+// Set whether we are doing a static link.
+
+void
+Parameters::set_doing_static_link(bool doing_static_link)
+{
+  this->doing_static_link_ = doing_static_link;
+  this->is_doing_static_link_valid_ = true;
+}
+
+// Set the size and endianness.
+
+void
+Parameters::set_size_and_endianness(int size, bool is_big_endian)
+{
+  if (!this->is_size_and_endian_valid_)
+    {
+      this->size_ = size;
+      this->is_big_endian_ = is_big_endian;
+      this->is_size_and_endian_valid_ = true;
+    }
+  else
+    {
+      gold_assert(size == this->size_);
+      gold_assert(is_big_endian == this->is_big_endian_);
+    }
+}
+
+// Our local version of the variable, which is not const.
+
+static Parameters* static_parameters;
+
 // The global variable.
 
 const Parameters* parameters;
@@ -50,7 +83,23 @@ const Parameters* parameters;
 void
 initialize_parameters(const General_options* options)
 {
-  parameters = new Parameters(options);
+  parameters = static_parameters = new Parameters(options);
+}
+
+// Set whether we are doing a static link.
+
+void
+set_parameters_doing_static_link(bool doing_static_link)
+{
+  static_parameters->set_doing_static_link(doing_static_link);
+}
+
+// Set the size and endianness.
+
+void
+set_parameters_size_and_endianness(int size, bool is_big_endian)
+{
+  static_parameters->set_size_and_endianness(size, is_big_endian);
 }
 
 } // End namespace gold.
This page took 0.023533 seconds and 4 git commands to generate.