From 7e1edb9089c4eec761d09d9bb0ce675eb0bcbc2b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 21 Sep 2007 07:20:01 +0000 Subject: Add global parameters. --- gold/parameters.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 gold/parameters.h (limited to 'gold/parameters.h') diff --git a/gold/parameters.h b/gold/parameters.h new file mode 100644 index 0000000..040cc28 --- /dev/null +++ b/gold/parameters.h @@ -0,0 +1,70 @@ +// parameters.h -- general parameters for a link using gold -*- C++ -*- + +#ifndef GOLD_PARAMETERS_H +#define GOLD_PARAMETERS_H + +namespace gold +{ + +class General_options; + +// Here we define the Parameters class which simply holds simple +// general parameters which apply to the entire link. We use a global +// variable for this. This is in contrast to the General_options +// class, which holds the complete state of position independent +// command line options. The hope is that Parameters will stay fairly +// simple, so that if this turns into a library it will be clear how +// these parameters should be set. + +class Parameters +{ + public: + Parameters(const General_options*); + + // Whether we are generating a regular executable. + bool + output_is_executable() const + { return this->output_file_type_ == OUTPUT_EXECUTABLE; } + + // Whether we are generating a shared library. + bool + output_is_shared() const + { return this->output_file_type_ == OUTPUT_SHARED; } + + // Whether we are generating an object file. + bool + output_is_object() const + { return this->output_file_type_ == OUTPUT_OBJECT; } + + // The general linker optimization level. + int + optimization_level() const + { return this->optimization_level_; } + + private: + // The types of output files. + enum Output_file_type + { + // Generating executable. + OUTPUT_EXECUTABLE, + // Generating shared library. + OUTPUT_SHARED, + // Generating object file. + OUTPUT_OBJECT + }; + + // The type of the output file. + Output_file_type output_file_type_; + // The optimization level. + int optimization_level_; +}; + +// This is a global variable. +extern const Parameters* parameters; + +// Initialize the global variable. +extern void initialize_parameters(const General_options*); + +} // End namespace gold. + +#endif // !defined(GOLD_PARAMATERS_H) -- cgit v1.1