Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: binutils/gold/object.h

Issue 3018030: [binutils] Bump binutils to 2.20.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « binutils/gold/layout.cc ('k') | binutils/gold/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // object.h -- support for an object file for linking in gold -*- C++ -*- 1 // object.h -- support for an object file for linking in gold -*- C++ -*-
2 2
3 // Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 3 // Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
4 // Written by Ian Lance Taylor <iant@google.com>. 4 // Written by Ian Lance Taylor <iant@google.com>.
5 5
6 // This file is part of gold. 6 // This file is part of gold.
7 7
8 // This program is free software; you can redistribute it and/or modify 8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by 9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 3 of the License, or 10 // the Free Software Foundation; either version 3 of the License, or
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 class Object 188 class Object
189 { 189 {
190 public: 190 public:
191 // NAME is the name of the object as we would report it to the user 191 // NAME is the name of the object as we would report it to the user
192 // (e.g., libfoo.a(bar.o) if this is in an archive. INPUT_FILE is 192 // (e.g., libfoo.a(bar.o) if this is in an archive. INPUT_FILE is
193 // used to read the file. OFFSET is the offset within the input 193 // used to read the file. OFFSET is the offset within the input
194 // file--0 for a .o or .so file, something else for a .a file. 194 // file--0 for a .o or .so file, something else for a .a file.
195 Object(const std::string& name, Input_file* input_file, bool is_dynamic, 195 Object(const std::string& name, Input_file* input_file, bool is_dynamic,
196 off_t offset = 0) 196 off_t offset = 0)
197 : name_(name), input_file_(input_file), offset_(offset), shnum_(-1U), 197 : name_(name), input_file_(input_file), offset_(offset), shnum_(-1U),
198 is_dynamic_(is_dynamic), uses_split_stack_(false), 198 is_dynamic_(is_dynamic), is_needed_(false), uses_split_stack_(false),
199 has_no_split_stack_(false), xindex_(NULL), no_export_(false) 199 has_no_split_stack_(false), no_export_(false), xindex_(NULL)
200 { input_file->file().add_object(); } 200 { input_file->file().add_object(); }
201 201
202 virtual ~Object() 202 virtual ~Object()
203 { this->input_file_->file().remove_object(); } 203 { this->input_file_->file().remove_object(); }
204 204
205 // Return the name of the object as we would report it to the tuser. 205 // Return the name of the object as we would report it to the tuser.
206 const std::string& 206 const std::string&
207 name() const 207 name() const
208 { return this->name_; } 208 { return this->name_; }
209 209
210 // Get the offset into the file. 210 // Get the offset into the file.
211 off_t 211 off_t
212 offset() const 212 offset() const
213 { return this->offset_; } 213 { return this->offset_; }
214 214
215 // Return whether this is a dynamic object. 215 // Return whether this is a dynamic object.
216 bool 216 bool
217 is_dynamic() const 217 is_dynamic() const
218 { return this->is_dynamic_; } 218 { return this->is_dynamic_; }
219 219
220 // Return whether this object is needed--true if it is a dynamic
221 // object which defines some symbol referenced by a regular object.
222 // We keep the flag here rather than in Dynobj for convenience when
223 // setting it.
224 bool
225 is_needed() const
226 { return this->is_needed_; }
227
228 // Record that this object is needed.
229 void
230 set_is_needed()
231 { this->is_needed_ = true; }
232
220 // Return whether this object was compiled with -fsplit-stack. 233 // Return whether this object was compiled with -fsplit-stack.
221 bool 234 bool
222 uses_split_stack() const 235 uses_split_stack() const
223 { return this->uses_split_stack_; } 236 { return this->uses_split_stack_; }
224 237
225 // Return whether this object contains any functions compiled with 238 // Return whether this object contains any functions compiled with
226 // the no_split_stack attribute. 239 // the no_split_stack attribute.
227 bool 240 bool
228 has_no_split_stack() const 241 has_no_split_stack() const
229 { return this->has_no_split_stack_; } 242 { return this->has_no_split_stack_; }
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // Name of object as printed to user. 595 // Name of object as printed to user.
583 std::string name_; 596 std::string name_;
584 // For reading the file. 597 // For reading the file.
585 Input_file* input_file_; 598 Input_file* input_file_;
586 // Offset within the file--0 for an object file, non-0 for an 599 // Offset within the file--0 for an object file, non-0 for an
587 // archive. 600 // archive.
588 off_t offset_; 601 off_t offset_;
589 // Number of input sections. 602 // Number of input sections.
590 unsigned int shnum_; 603 unsigned int shnum_;
591 // Whether this is a dynamic object. 604 // Whether this is a dynamic object.
592 bool is_dynamic_; 605 bool is_dynamic_ : 1;
606 // Whether this object is needed. This is only set for dynamic
607 // objects, and means that the object defined a symbol which was
608 // used by a reference from a regular object.
609 bool is_needed_ : 1;
593 // Whether this object was compiled with -fsplit-stack. 610 // Whether this object was compiled with -fsplit-stack.
594 bool uses_split_stack_; 611 bool uses_split_stack_ : 1;
595 // Whether this object contains any functions compiled with the 612 // Whether this object contains any functions compiled with the
596 // no_split_stack attribute. 613 // no_split_stack attribute.
597 bool has_no_split_stack_; 614 bool has_no_split_stack_ : 1;
615 // True if exclude this object from automatic symbol export.
616 // This is used only for archive objects.
617 bool no_export_ : 1;
598 // Many sections for objects with more than SHN_LORESERVE sections. 618 // Many sections for objects with more than SHN_LORESERVE sections.
599 Xindex* xindex_; 619 Xindex* xindex_;
600 // True if exclude this object from automatic symbol export.
601 // This is used only for archive objects.
602 bool no_export_;
603 }; 620 };
604 621
605 // A regular object (ET_REL). This is an abstract base class itself. 622 // A regular object (ET_REL). This is an abstract base class itself.
606 // The implementation is the template class Sized_relobj. 623 // The implementation is the template class Sized_relobj.
607 624
608 class Relobj : public Object 625 class Relobj : public Object
609 { 626 {
610 public: 627 public:
611 Relobj(const std::string& name, Input_file* input_file, off_t offset = 0) 628 Relobj(const std::string& name, Input_file* input_file, off_t offset = 0)
612 : Object(name, input_file, false, offset), 629 : Object(name, input_file, false, offset),
(...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after
2035 // error message. 2052 // error message.
2036 2053
2037 extern Object* 2054 extern Object*
2038 make_elf_object(const std::string& name, Input_file*, 2055 make_elf_object(const std::string& name, Input_file*,
2039 off_t offset, const unsigned char* p, 2056 off_t offset, const unsigned char* p,
2040 section_offset_type bytes, bool* punconfigured); 2057 section_offset_type bytes, bool* punconfigured);
2041 2058
2042 } // end namespace gold 2059 } // end namespace gold
2043 2060
2044 #endif // !defined(GOLD_OBJECT_H) 2061 #endif // !defined(GOLD_OBJECT_H)
OLDNEW
« no previous file with comments | « binutils/gold/layout.cc ('k') | binutils/gold/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698