X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fparameters.h;h=909594d68e50455aa7ddd908ed4c39e8ed2867cc;hb=747cfc8c6bb23d40b3fa987f6c3df9d3a0d7b817;hp=0ca2941e0abbd6788a473df575ba93a0e5523da0;hpb=7296d9338774c74e5a525f0c8f31c20f367997f5;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/parameters.h b/gold/parameters.h index 0ca2941e0a..909594d68e 100644 --- a/gold/parameters.h +++ b/gold/parameters.h @@ -1,6 +1,6 @@ // parameters.h -- general parameters for a link using gold -*- C++ -*- -// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2006-2019 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -28,6 +28,7 @@ namespace gold class General_options; class Errors; +class Timer; class Target; template class Sized_target; @@ -56,6 +57,9 @@ class Parameters void set_errors(Errors* errors); + void + set_timer(Timer* timer); + void set_options(const General_options* options); @@ -70,6 +74,11 @@ class Parameters errors() const { return this->errors_; } + // Return the timer object. + Timer* + timer() const + { return this->timer_; } + // Whether the options are valid. This should not normally be // called, but it is needed by gold_exit. bool @@ -134,6 +143,10 @@ class Parameters return debug_; } + // Return the name of the entry symbol. + const char* + entry() const; + // A convenience routine for combining size and endianness. It also // checks the HAVE_TARGET_FOO configure options and dies if the // current target's size/endianness is not supported according to @@ -144,6 +157,24 @@ class Parameters Target_size_endianness size_and_endianness() const; + // Set the incremental linking mode to INCREMENTAL_FULL. Used when + // the linker determines that an incremental update is not possible. + // Returns false if the incremental mode was INCREMENTAL_UPDATE, + // indicating that the linker should exit if an update is not possible. + bool + set_incremental_full(); + + // Return true if we need to prepare incremental linking information. + bool + incremental() const; + + // Return true if we are doing a full incremental link. + bool + incremental_full() const; + + // Return true if we are doing an incremental update. + bool + incremental_update() const; private: void @@ -152,14 +183,19 @@ class Parameters void check_target_endianness(); + void + check_rodata_segment(); + friend class Set_parameters_target_once; Errors* errors_; + Timer* timer_; const General_options* options_; Target* target_; bool doing_static_link_valid_; bool doing_static_link_; int debug_; + int incremental_mode_; Set_parameters_target_once* set_parameters_target_once_; }; @@ -172,6 +208,9 @@ extern const Parameters* parameters; extern void set_parameters_errors(Errors* errors); +extern void +set_parameters_timer(Timer* timer); + extern void set_parameters_options(const General_options* options); @@ -181,6 +220,9 @@ set_parameters_target(Target* target); extern void set_parameters_doing_static_link(bool doing_static_link); +extern bool +set_parameters_incremental_full(); + // Ensure that the target to be valid by using the default target if // necessary.