2004-07-09 H.J. Lu <hongjiu.lu@intel.com>

PR 240
	* elfxx-ia64.c (elfNN_ia64_relax_section): Only warn br in
	.init/.fini sections when trying to relax it.
This commit is contained in:
H.J. Lu 2004-07-09 19:27:15 +00:00
parent 4644b6e36c
commit e525914fa7
2 changed files with 19 additions and 13 deletions

View File

@ -1,3 +1,9 @@
2004-07-09 H.J. Lu <hongjiu.lu@intel.com>
PR 240
* elfxx-ia64.c (elfNN_ia64_relax_section): Only warn br in
.init/.fini sections when trying to relax it.
2004-07-09 Jie Zhang <zhangjie@magima.com.cn> 2004-07-09 Jie Zhang <zhangjie@magima.com.cn>
* elf.c (assign_file_positions_for_segments): Make sure the * elf.c (assign_file_positions_for_segments): Make sure the

View File

@ -943,19 +943,6 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
{ {
bfd_signed_vma offset; bfd_signed_vma offset;
/* We can't put a trampoline in a .init/.fini section. Issue
an error. */
if (strcmp (sec->output_section->name, ".init") == 0
|| strcmp (sec->output_section->name, ".fini") == 0)
{
(*_bfd_error_handler)
(_("%s: Can't relax br at 0x%lx in section `%s'. Please use brl or indirect branch."),
bfd_archive_filename (sec->owner),
(unsigned long) roff, sec->name);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
reladdr = (sec->output_section->vma reladdr = (sec->output_section->vma
+ sec->output_offset + sec->output_offset
+ roff) & (bfd_vma) -4; + roff) & (bfd_vma) -4;
@ -984,6 +971,19 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
else if (r_type == R_IA64_PCREL60B) else if (r_type == R_IA64_PCREL60B)
continue; continue;
/* We can't put a trampoline in a .init/.fini section. Issue
an error. */
if (strcmp (sec->output_section->name, ".init") == 0
|| strcmp (sec->output_section->name, ".fini") == 0)
{
(*_bfd_error_handler)
(_("%s: Can't relax br at 0x%lx in section `%s'. Please use brl or indirect branch."),
bfd_archive_filename (sec->owner),
(unsigned long) roff, sec->name);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
/* If the branch and target are in the same section, you've /* If the branch and target are in the same section, you've
got one honking big section and we can't help you. You'll got one honking big section and we can't help you. You'll
get an error message later. */ get an error message later. */