aboutsummaryrefslogtreecommitdiff
path: root/gold/incremental.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/incremental.cc')
-rw-r--r--gold/incremental.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/gold/incremental.cc b/gold/incremental.cc
index b4fff11..4e35055 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -1818,6 +1818,8 @@ struct Got_plt_view_info
unsigned int first_plt_entry_offset;
// Size of a PLT entry (this is a target-dependent value).
unsigned int plt_entry_size;
+ // Size of a GOT entry (this is a target-dependent value).
+ unsigned int got_entry_size;
// Symbol index to write in the GOT descriptor array. For global symbols,
// this is the global symbol table index; for local symbols, it is the
// local symbol table index.
@@ -1843,7 +1845,7 @@ class Local_got_offset_visitor : public Got_offset_list::Visitor
void
visit(unsigned int got_type, unsigned int got_offset)
{
- unsigned int got_index = got_offset / this->got_entry_size_;
+ unsigned int got_index = got_offset / this->info_.got_entry_size;
gold_assert(got_index < this->info_.got_count);
// We can only handle GOT entry types in the range 0..0x7e
// because we use a byte array to store them, and we use the
@@ -1856,7 +1858,6 @@ class Local_got_offset_visitor : public Got_offset_list::Visitor
}
private:
- static const unsigned int got_entry_size_ = size / 8;
struct Got_plt_view_info& info_;
};
@@ -1875,7 +1876,7 @@ class Global_got_offset_visitor : public Got_offset_list::Visitor
void
visit(unsigned int got_type, unsigned int got_offset)
{
- unsigned int got_index = got_offset / this->got_entry_size_;
+ unsigned int got_index = got_offset / this->info_.got_entry_size;
gold_assert(got_index < this->info_.got_count);
// We can only handle GOT entry types in the range 0..0x7e
// because we use a byte array to store them, and we use the
@@ -1888,7 +1889,6 @@ class Global_got_offset_visitor : public Got_offset_list::Visitor
}
private:
- static const unsigned int got_entry_size_ = size / 8;
struct Got_plt_view_info& info_;
};
@@ -1948,6 +1948,7 @@ Output_section_incremental_inputs<size, big_endian>::write_got_plt(
view_info.plt_count = target->plt_entry_count();
view_info.first_plt_entry_offset = target->first_plt_entry_offset();
view_info.plt_entry_size = target->plt_entry_size();
+ view_info.got_entry_size = target->got_entry_size();
view_info.got_type_p = pov + 8;
view_info.got_desc_p = (view_info.got_type_p
+ ((view_info.got_count + 3) & ~3));