Index: binutils/gold/object.h |
diff --git a/binutils/gold/object.h b/binutils/gold/object.h |
index ff9668291f714c2367203fffaeacd8d317f7f530..4e18190696d09d4b24710d27aba5888719b40a7a 100644 |
--- a/binutils/gold/object.h |
+++ b/binutils/gold/object.h |
@@ -195,8 +195,8 @@ class Object |
Object(const std::string& name, Input_file* input_file, bool is_dynamic, |
off_t offset = 0) |
: name_(name), input_file_(input_file), offset_(offset), shnum_(-1U), |
- is_dynamic_(is_dynamic), uses_split_stack_(false), |
- has_no_split_stack_(false), xindex_(NULL), no_export_(false) |
+ is_dynamic_(is_dynamic), is_needed_(false), uses_split_stack_(false), |
+ has_no_split_stack_(false), no_export_(false), xindex_(NULL) |
{ input_file->file().add_object(); } |
virtual ~Object() |
@@ -217,6 +217,19 @@ class Object |
is_dynamic() const |
{ return this->is_dynamic_; } |
+ // Return whether this object is needed--true if it is a dynamic |
+ // object which defines some symbol referenced by a regular object. |
+ // We keep the flag here rather than in Dynobj for convenience when |
+ // setting it. |
+ bool |
+ is_needed() const |
+ { return this->is_needed_; } |
+ |
+ // Record that this object is needed. |
+ void |
+ set_is_needed() |
+ { this->is_needed_ = true; } |
+ |
// Return whether this object was compiled with -fsplit-stack. |
bool |
uses_split_stack() const |
@@ -589,17 +602,21 @@ class Object |
// Number of input sections. |
unsigned int shnum_; |
// Whether this is a dynamic object. |
- bool is_dynamic_; |
+ bool is_dynamic_ : 1; |
+ // Whether this object is needed. This is only set for dynamic |
+ // objects, and means that the object defined a symbol which was |
+ // used by a reference from a regular object. |
+ bool is_needed_ : 1; |
// Whether this object was compiled with -fsplit-stack. |
- bool uses_split_stack_; |
+ bool uses_split_stack_ : 1; |
// Whether this object contains any functions compiled with the |
// no_split_stack attribute. |
- bool has_no_split_stack_; |
- // Many sections for objects with more than SHN_LORESERVE sections. |
- Xindex* xindex_; |
+ bool has_no_split_stack_ : 1; |
// True if exclude this object from automatic symbol export. |
// This is used only for archive objects. |
- bool no_export_; |
+ bool no_export_ : 1; |
+ // Many sections for objects with more than SHN_LORESERVE sections. |
+ Xindex* xindex_; |
}; |
// A regular object (ET_REL). This is an abstract base class itself. |