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-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils