From Craig Silverstein: Track_relocs doesn't need to hold onto the

object.
This commit is contained in:
Ian Lance Taylor 2007-11-12 20:35:21 +00:00
parent 24badc6562
commit b696e6d46c
2 changed files with 5 additions and 8 deletions

View File

@ -672,12 +672,10 @@ Copy_relocs<size, big_endian>::emit(
template<int size, bool big_endian> template<int size, bool big_endian>
bool bool
Track_relocs<size, big_endian>::initialize( Track_relocs<size, big_endian>::initialize(
Sized_relobj<size, big_endian>* object, Object* object,
unsigned int reloc_shndx, unsigned int reloc_shndx,
unsigned int reloc_type) unsigned int reloc_type)
{ {
this->object_ = object;
// If RELOC_SHNDX is -1U, it means there is more than one reloc // If RELOC_SHNDX is -1U, it means there is more than one reloc
// section for the .eh_frame section. We can't handle that case. // section for the .eh_frame section. We can't handle that case.
if (reloc_shndx == -1U) if (reloc_shndx == -1U)

View File

@ -32,6 +32,7 @@ namespace gold
{ {
class General_options; class General_options;
class Object;
class Relobj; class Relobj;
class Read_relocs_data; class Read_relocs_data;
class Symbol; class Symbol;
@ -609,7 +610,7 @@ class Track_relocs
{ {
public: public:
Track_relocs() Track_relocs()
: object_(NULL), prelocs_(NULL), len_(0), pos_(0), reloc_size_(0) : prelocs_(NULL), len_(0), pos_(0), reloc_size_(0)
{ } { }
// Initialize the Track_relocs object. OBJECT is the object holding // Initialize the Track_relocs object. OBJECT is the object holding
@ -618,7 +619,7 @@ class Track_relocs
// (elfcpp::SHT_REL or elfcpp::SHT_RELA). This returns false if // (elfcpp::SHT_REL or elfcpp::SHT_RELA). This returns false if
// something went wrong. // something went wrong.
bool bool
initialize(Sized_relobj<size, big_endian>* object, unsigned int reloc_shndx, initialize(Object* object, unsigned int reloc_shndx,
unsigned int reloc_type); unsigned int reloc_type);
// Return the offset in the data section to which the next reloc // Return the offset in the data section to which the next reloc
@ -637,9 +638,7 @@ class Track_relocs
advance(off_t offset); advance(off_t offset);
private: private:
// The object file. // The contents of the input object's reloc section.
Sized_relobj<size, big_endian>* object_;
// The contents of the reloc section.
const unsigned char* prelocs_; const unsigned char* prelocs_;
// The length of the reloc section. // The length of the reloc section.
off_t len_; off_t len_;