diff options
Diffstat (limited to 'gold/archive.cc')
-rw-r--r-- | gold/archive.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gold/archive.cc b/gold/archive.cc index 4d95b79..5862f34 100644 --- a/gold/archive.cc +++ b/gold/archive.cc @@ -399,12 +399,19 @@ Archive::include_member(Symbol_table* symtab, Layout* layout, this->input_file_, memoff, ehdr_buf, read_size); - input_objects->add_object(obj); + if (input_objects->add_object(obj)) + { + Read_symbols_data sd; + obj->read_symbols(&sd); + obj->layout(symtab, layout, &sd); + obj->add_symbols(symtab, &sd); + } + else + { + // FIXME: We need to close the descriptor here. + delete obj; + } - Read_symbols_data sd; - obj->read_symbols(&sd); - obj->layout(symtab, layout, &sd); - obj->add_symbols(symtab, &sd); } // Add_archive_symbols methods. |