[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gold/19184] New: Bad assumption on GOT entry size
From: |
hjl.tools at gmail dot com |
Subject: |
[Bug gold/19184] New: Bad assumption on GOT entry size |
Date: |
Thu, 29 Oct 2015 15:22:10 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=19184
Bug ID: 19184
Summary: Bad assumption on GOT entry size
Product: binutils
Version: 2.26 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: gold
Assignee: ccoutant at gmail dot com
Reporter: hjl.tools at gmail dot com
CC: ian at airs dot com
Target Milestone: ---
template<int size, bool big_endian>
class Local_got_offset_visitor : public Got_offset_list::Visitor
{
public:
Local_got_offset_visitor(struct Got_plt_view_info& info)
: info_(info)
{ }
void
visit(unsigned int got_type, unsigned int got_offset)
{
unsigned int got_index = got_offset / this->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
// high bit to flag a local symbol.
gold_assert(got_type < 0x7f);
this->info_.got_type_p[got_index] = got_type | 0x80;
unsigned char* pov = this->info_.got_desc_p + got_index * 8;
elfcpp::Swap<32, big_endian>::writeval(pov, this->info_.sym_index);
elfcpp::Swap<32, big_endian>::writeval(pov + 4, this->info_.input_index);
}
private:
static const unsigned int got_entry_size_ = size / 8;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Unfortunately, it isn't true for x32 where size is 32 and GOT entry size
is 8 bytes.
struct Got_plt_view_info& info_;
};
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug gold/19184] New: Bad assumption on GOT entry size,
hjl.tools at gmail dot com <=