+2012-09-10 Sterling Augustine <saugustine@google.com>
+
+ * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
+ (Gdb_index::pubtypes_read): New parameter.
+ (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
+ to calls.
+ * gdb-index.h (Gdb_index): New fields pubnames_object_ and
+ pubtypes_object_.
+
2012-09-09 Alan Modra <amodra@gmail.com>
* target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
&pubnames_shndx);
if (pubnames_offset != -1)
{
- if (this->gdb_index_->pubnames_read(pubnames_shndx, pubnames_offset))
+ if (this->gdb_index_->pubnames_read(this->object(), pubnames_shndx,
+ pubnames_offset))
ret = true;
else
{
&pubtypes_shndx);
if (pubtypes_offset != -1)
{
- if (this->gdb_index_->pubtypes_read(pubtypes_shndx, pubtypes_offset))
+ if (this->gdb_index_->pubtypes_read(this->object(),
+ pubtypes_shndx, pubtypes_offset))
ret = true;
else
{
symtab_offset_(0),
cu_pool_offset_(0),
stringpool_offset_(0),
+ pubnames_object_(NULL),
pubnames_shndx_(0),
pubnames_offset_(0),
+ pubtypes_object_(NULL),
pubtypes_shndx_(0),
pubtypes_offset_(0)
{
// OFFSET in section SHNDX
bool
-Gdb_index::pubnames_read(unsigned int shndx, off_t offset)
+Gdb_index::pubnames_read(const Relobj* object, unsigned int shndx, off_t offset)
{
- bool ret = (this->pubnames_shndx_ == shndx
+ bool ret = (this->pubnames_object_ == object
+ && this->pubnames_shndx_ == shndx
&& this->pubnames_offset_ == offset);
+ this->pubnames_object_ = object;
this->pubnames_shndx_ = shndx;
this->pubnames_offset_ = offset;
return ret;
// OFFSET in section SHNDX
bool
-Gdb_index::pubtypes_read(unsigned int shndx, off_t offset)
+Gdb_index::pubtypes_read(const Relobj* object, unsigned int shndx, off_t offset)
{
- bool ret = (this->pubtypes_shndx_ == shndx
+ bool ret = (this->pubtypes_object_ == object
+ && this->pubtypes_shndx_ == shndx
&& this->pubtypes_offset_ == offset);
+ this->pubtypes_object_ = object;
this->pubtypes_shndx_ = shndx;
this->pubtypes_offset_ = offset;
return ret;
void
add_symbol(int cu_index, const char* sym_name);
- // Return TRUE if we have already processed the pubnames set at
- // OFFSET in section SHNDX
+ // Return TRUE if we have already processed the pubnames set for
+ // OBJECT at OFFSET in section SHNDX
bool
- pubnames_read(unsigned int shndx, off_t offset);
+ pubnames_read(const Relobj* object, unsigned int shndx, off_t offset);
- // Return TRUE if we have already processed the pubtypes set at
- // OFFSET in section SHNDX
+ // Return TRUE if we have already processed the pubtypes set for
+ // OBJECT at OFFSET in section SHNDX
bool
- pubtypes_read(unsigned int shndx, off_t offset);
+ pubtypes_read(const Relobj* object, unsigned int shndx, off_t offset);
// Print usage statistics.
static void
off_t symtab_offset_;
off_t cu_pool_offset_;
off_t stringpool_offset_;
- // Section index and offset of last read pubnames section.
+ // Object, section index and offset of last read pubnames section.
+ const Relobj* pubnames_object_;
unsigned int pubnames_shndx_;
off_t pubnames_offset_;
- // Section index and offset of last read pubtypes section.
+ // Object, section index and offset of last read pubtypes section.
+ const Relobj* pubtypes_object_;
unsigned int pubtypes_shndx_;
off_t pubtypes_offset_;
};