diff options
| author | Alan Modra <amodra@gmail.com> | 2014-11-26 11:10:29 +1030 | 
|---|---|---|
| committer | Alan Modra <amodra@gmail.com> | 2014-11-26 13:29:29 +1030 | 
| commit | a3e60ddb0b43a3aed32f2982d472ab305c7e8f67 (patch) | |
| tree | 85f47346b1bb39addca84555cdc14064f092258c /gdb/python/python.c | |
| parent | aa4893954a75660d2aa66245cb9d020049cb9546 (diff) | |
| download | binutils-a3e60ddb0b43a3aed32f2982d472ab305c7e8f67.zip binutils-a3e60ddb0b43a3aed32f2982d472ab305c7e8f67.tar.gz binutils-a3e60ddb0b43a3aed32f2982d472ab305c7e8f67.tar.bz2 | |
Retry powerpc gold stub grouping when groups prove too large
An unusually large number of stubs can result in the default section
group size being too large;  sections plus stubs exceed the range of a
branch.  Restarting the relaxation pass with a smaller group size can
sometimes help.
	* powerpc.cc (struct Stub_table_owner): New.
	(Powerpc_relobj): Rename stub_table_ to stub_table_index_, an
	unsigned int vector.  Update all references.
	(powerpc_relobj::set_stub_table): Take an unsigned int param
	rather than a Stub_table.  Update callers.
	(Powerpc_relobj::clear_stub_table): New function.
	(Target_powerpc): Add relax_failed_, relax_fail_count_ and
	stub_group_size_ vars.
	(Target_powerpc::new_stub_table): Delete.
	(max_branch_delta): New function, extracted from..
	(Target_powerpc::Relocate::relocate): ..here..
	(Target_powerpc::Branch_info::make_stub): ..and here.  Return
	status on whether stub created successfully.
	(Stub_control::Stub_control): Add "no_size_errors" param.  Move
	default sizing to..
	(Target_powerpc::do_relax): ..here.  Init stub_group_size_ and
	reduce on relax failure.
	(Target_powerpc::group_sections): Add "no_size_errors" param.
	Use stub_group_size_.  Set up group info in a temp vector,
	before building Stub_table vector.  Account for input sections
	possibly already converted to relaxed sections.
	(Stub_table::init): Delete.  Merge into..
	(Stub_table::Stub_table): ..here.
	(Stub_table::can_reach_stub): New function.
	(Stub_table::add_plt_call_entry): Add "from" parameter and
	return true iff stub could be reached.
	(Stub_table::add_long_branch_entry): Similarly.  Add "r_type"
	param too.
	(Stub_table::clear_stubs): Add "all" param.
Diffstat (limited to 'gdb/python/python.c')
0 files changed, 0 insertions, 0 deletions
