* object.h (Sized_relobj_file::find_shdr): New function.

(Sized_relobj_file::find_special_sections): New function.
	* object.cc (Sized_relobj_file::find_shdr): New function.
	(Sized_relobj_file::find_eh_frame): Use find_shdr.
	(Sized_relobj_file::find_special_sections): New function, split out..
	(Sized_relobj_file::do_read_symbols): ..from here.
	* output.h (Output_data_got::replace_constant): New function.
	(Output_data_got::num_entries): New function.
	(Output_data_got::last_got_offset,set_got_size): Use num_entries.
	(Output_data_got::got_offset): Protected rather than private.
	(Output_data_got::replace_got_entry): New function.
	* output.cc (Output_data_got::replace_got_entry): New function.
	* powerpc.cc (class Powerpc_relobj): New.
	(class Powerpc_relocate_functions): Delete all psymval variants or
	convert to value,addend type.  Delete pcrela, pcrela_unaligned.
	Implement _ha functions using corresponding _hi function.
	(Powerpc_relobj::find_special_sections): New function.
	(Target_powerpc::do_make_elf_object): New function.
	(class Output_data_got_powerpc): New.
	(class Output_data_glink): New.
	(class Powerpc_scan_relocatable_reloc): New.
	Many more changes througout file.
This commit is contained in:
Alan Modra
2012-08-11 04:41:28 +00:00
parent bad7670a0e
commit cf43a2fe99
6 changed files with 1376 additions and 608 deletions

View File

@ -1701,6 +1701,18 @@ Output_data_got<size, big_endian>::add_got_entry_pair(Got_entry got_entry_1,
}
}
// Replace GOT entry I with a new value.
template<int size, bool big_endian>
void
Output_data_got<size, big_endian>::replace_got_entry(
unsigned int i,
Got_entry got_entry)
{
gold_assert(i < this->entries_.size());
this->entries_[i] = got_entry;
}
// Output_data_dynamic::Dynamic_entry methods.
// Write out the entry.