From: Cary Coutant Date: Fri, 30 May 2008 21:24:43 +0000 (+0000) Subject: * archive.cc (Archive::include_all_members) Correct to step X-Git-Tag: msnyder-reverse-20080609-branchpoint~90 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e90f13524d5fb583ed113a33be07bfc6f141b0c;p=thirdparty%2Fbinutils-gdb.git * archive.cc (Archive::include_all_members) Correct to step over symbol table and extended name table in thin archives. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 0fb667d1e4a..74eb045f570 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2008-05-30 Cary Coutant + + * archive.cc (Archive::include_all_members) Correct to step + over symbol table and extended name table in thin archives. + 2008-05-29 Kris Van Hees PR 6407 diff --git a/gold/archive.cc b/gold/archive.cc index 0ff8aee2075..737f3e21729 100644 --- a/gold/archive.cc +++ b/gold/archive.cc @@ -386,20 +386,23 @@ Archive::include_all_members(Symbol_table* symtab, Layout* layout, reinterpret_cast(hdr_buf); std::string name; off_t size = this->interpret_header(hdr, off, &name, NULL); + bool special_member = false; if (name.empty()) { // Symbol table. + special_member = true; } else if (name == "/") { // Extended name table. + special_member = true; } else this->include_member(symtab, layout, input_objects, off, mapfile, NULL, "--whole-archive"); off += sizeof(Archive_header); - if (!this->is_thin_archive_) + if (special_member || !this->is_thin_archive_) off += size; if ((off & 1) != 0) ++off;