From Craig Silverstein: Track_relocs doesn't need to hold onto the
object.
This commit is contained in:
parent
24badc6562
commit
b696e6d46c
|
@ -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)
|
||||||
|
|
|
@ -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_;
|
||||||
|
|
Loading…
Reference in New Issue