diff options
Diffstat (limited to 'gold/archive.h')
-rw-r--r-- | gold/archive.h | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/gold/archive.h b/gold/archive.h index c8b05e4..53b8452d8 100644 --- a/gold/archive.h +++ b/gold/archive.h @@ -62,11 +62,18 @@ class Archive // The string expected at the end of an archive member header. static const char arfmag[2]; - // The name of the object. + // The name of the object. This is the name used on the command + // line; e.g., if "-lgcc" is on the command line, this will be + // "gcc". const std::string& name() const { return this->name_; } + // The file name. + const std::string& + filename() const + { return this->input_file_->filename(); } + // Set up the archive: read the symbol map. void setup(); @@ -110,6 +117,11 @@ class Archive clear_uncached_views() { this->input_file_->file().clear_uncached_views(); } + // Whether this is a thin archive. + bool + is_thin_archive() const + { return this->is_thin_archive_; } + // Unlock any nested archives. void unlock_nested_archives(); @@ -119,6 +131,10 @@ class Archive void add_symbols(Symbol_table*, Layout*, Input_objects*, Mapfile*); + // Return the number of members in the archive. + size_t + count_members() const; + private: Archive(const Archive&); Archive& operator=(const Archive&); @@ -144,7 +160,7 @@ class Archive // member, and set *PNAME to the name. off_t interpret_header(const Archive_header* hdr, off_t off, std::string* pname, - off_t* nested_off); + off_t* nested_off) const; // Include all the archive members in the link. void @@ -155,6 +171,17 @@ class Archive include_member(Symbol_table*, Layout*, Input_objects*, off_t off, Mapfile*, Symbol*, const char* why); + // Iterate over archive members. + class const_iterator; + + const_iterator + begin() const; + + const_iterator + end() const; + + friend class const_iterator; + // An entry in the archive map of symbols to object files. struct Armap_entry { |