* archive.cc (include_member): Destroy Read_symbols_data object before
releasing file. * object.cc (Read_symbols_data::~Read_symbols_data) New destructor. * object.h (Read_symbols_data::Read_symbols_data) New constructor. (Read_symbols_data::~Read_symbols_data) New destructor. (Section_relocs::Section_relocs) New constructor. (Section_relocs::~Section_relocs) New destructor. (Read_relocs_data::Read_relocs_data) New constructor. (Read_relocs_data::~Read_relocs_data) New destructor. * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member pointers to NULL after deleting.
This commit is contained in:
parent
7296d93387
commit
00698fc57c
5 changed files with 67 additions and 4 deletions
|
@ -1,3 +1,17 @@
|
|||
2010-04-07 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* archive.cc (include_member): Destroy Read_symbols_data object before
|
||||
releasing file.
|
||||
* object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
|
||||
* object.h (Read_symbols_data::Read_symbols_data) New constructor.
|
||||
(Read_symbols_data::~Read_symbols_data) New destructor.
|
||||
(Section_relocs::Section_relocs) New constructor.
|
||||
(Section_relocs::~Section_relocs) New destructor.
|
||||
(Read_relocs_data::Read_relocs_data) New constructor.
|
||||
(Read_relocs_data::~Read_relocs_data) New destructor.
|
||||
* testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
|
||||
pointers to NULL after deleting.
|
||||
|
||||
2010-04-07 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.cc: Replace "endianity" with "endianness" in comments.
|
||||
|
|
|
@ -877,10 +877,12 @@ Archive::include_member(Symbol_table* symtab, Layout* layout,
|
|||
delete obj;
|
||||
else
|
||||
{
|
||||
Read_symbols_data sd;
|
||||
obj->read_symbols(&sd);
|
||||
obj->layout(symtab, layout, &sd);
|
||||
obj->add_symbols(symtab, &sd, layout);
|
||||
{
|
||||
Read_symbols_data sd;
|
||||
obj->read_symbols(&sd);
|
||||
obj->layout(symtab, layout, &sd);
|
||||
obj->add_symbols(symtab, &sd, layout);
|
||||
}
|
||||
|
||||
// If this is an external member of a thin archive, unlock the file
|
||||
// for the next task.
|
||||
|
|
|
@ -43,6 +43,28 @@
|
|||
namespace gold
|
||||
{
|
||||
|
||||
// Struct Read_symbols_data.
|
||||
|
||||
// Destroy any remaining File_view objects.
|
||||
|
||||
Read_symbols_data::~Read_symbols_data()
|
||||
{
|
||||
if (this->section_headers != NULL)
|
||||
delete this->section_headers;
|
||||
if (this->section_names != NULL)
|
||||
delete this->section_names;
|
||||
if (this->symbols != NULL)
|
||||
delete this->symbols;
|
||||
if (this->symbol_names != NULL)
|
||||
delete this->symbol_names;
|
||||
if (this->versym != NULL)
|
||||
delete this->versym;
|
||||
if (this->verdef != NULL)
|
||||
delete this->verdef;
|
||||
if (this->verneed != NULL)
|
||||
delete this->verneed;
|
||||
}
|
||||
|
||||
// Class Xindex.
|
||||
|
||||
// Initialize the symtab_xindex_ array. Find the SHT_SYMTAB_SHNDX
|
||||
|
|
|
@ -55,6 +55,13 @@ class Stringpool_template;
|
|||
|
||||
struct Read_symbols_data
|
||||
{
|
||||
Read_symbols_data()
|
||||
: section_headers(NULL), section_names(NULL), symbols(NULL),
|
||||
symbol_names(NULL), versym(NULL), verdef(NULL), verneed(NULL)
|
||||
{ }
|
||||
|
||||
~Read_symbols_data();
|
||||
|
||||
// Section headers.
|
||||
File_view* section_headers;
|
||||
// Section names.
|
||||
|
@ -102,6 +109,13 @@ struct Symbol_location_info
|
|||
|
||||
struct Section_relocs
|
||||
{
|
||||
Section_relocs()
|
||||
: contents(NULL)
|
||||
{ }
|
||||
|
||||
~Section_relocs()
|
||||
{ delete this->contents; }
|
||||
|
||||
// Index of reloc section.
|
||||
unsigned int reloc_shndx;
|
||||
// Index of section that relocs apply to.
|
||||
|
@ -125,6 +139,13 @@ struct Section_relocs
|
|||
|
||||
struct Read_relocs_data
|
||||
{
|
||||
Read_relocs_data()
|
||||
: local_symbols(NULL)
|
||||
{ }
|
||||
|
||||
~Read_relocs_data()
|
||||
{ delete this->local_symbols; }
|
||||
|
||||
typedef std::vector<Section_relocs> Relocs_list;
|
||||
// The relocations.
|
||||
Relocs_list relocs;
|
||||
|
|
|
@ -87,9 +87,13 @@ Sized_binary_test()
|
|||
Read_symbols_data sd;
|
||||
object->read_symbols(&sd);
|
||||
delete sd.section_headers;
|
||||
sd.section_headers = NULL;
|
||||
delete sd.section_names;
|
||||
sd.section_names = NULL;
|
||||
delete sd.symbols;
|
||||
sd.symbols = NULL;
|
||||
delete sd.symbol_names;
|
||||
sd.symbol_names = NULL;
|
||||
|
||||
Sized_relobj<size, big_endian>* relobj =
|
||||
static_cast<Sized_relobj<size, big_endian>*>(object);
|
||||
|
|
Loading…
Reference in a new issue