aboutsummaryrefslogtreecommitdiff
path: root/gold/archive.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/archive.cc')
-rw-r--r--gold/archive.cc21
1 files changed, 17 insertions, 4 deletions
diff --git a/gold/archive.cc b/gold/archive.cc
index 2dec571..8e809e2 100644
--- a/gold/archive.cc
+++ b/gold/archive.cc
@@ -83,6 +83,17 @@ const char Archive::armagt[sarmag] =
const char Archive::arfmag[2] = { '`', '\n' };
+Archive::Archive(const std::string& name, Input_file* input_file,
+ bool is_thin_archive, Dirsearch* dirpath, Task* task)
+ : name_(name), input_file_(input_file), armap_(), armap_names_(),
+ extended_names_(), armap_checked_(), seen_offsets_(), members_(),
+ is_thin_archive_(is_thin_archive), included_member_(false),
+ nested_archives_(), dirpath_(dirpath), task_(task), num_members_(0)
+{
+ this->no_export_ =
+ parameters->options().check_excluded_libs(input_file->found_name());
+}
+
// Set up the archive: read the symbol map and the extended name
// table.
@@ -549,10 +560,12 @@ Archive::get_elf_object_for_member(off_t off, bool* punconfigured)
return NULL;
}
- return make_elf_object((std::string(this->input_file_->filename())
- + "(" + member_name + ")"),
- input_file, memoff, ehdr, read_size,
- punconfigured);
+ Object *obj = make_elf_object((std::string(this->input_file_->filename())
+ + "(" + member_name + ")"),
+ input_file, memoff, ehdr, read_size,
+ punconfigured);
+ obj->set_no_export(this->no_export());
+ return obj;
}
// Read the symbols from all the archive members in the link.