2008-12-23 H.J. Lu <hongjiu.lu@intel.com>

PR ld/7036
	* elfxx-ia64.c (elfNN_ia64_relax_section): Assume linker will
	always insert 32byte between the .plt and .text sections after
	the the first relaxation pass.
This commit is contained in:
H.J. Lu 2008-12-23 14:36:40 +00:00
parent 0332c262c9
commit feddcd0d46
2 changed files with 20 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2008-12-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/7036
* elfxx-ia64.c (elfNN_ia64_relax_section): Assume linker will
always insert 32byte between the .plt and .text sections after
the the first relaxation pass.
2008-12-23 Nick Clifton <nickc@redhat.com>
PR 7093

View file

@ -994,8 +994,20 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
+ sec->output_offset
+ roff) & (bfd_vma) -4;
/* The .plt section is aligned at 32byte and the .text section
is aligned at 64byte. The .text section is right after the
.plt section. After the first relaxation pass, linker may
increase the gap between the .plt and .text sections up
to 32byte. We assume linker will always insert 32byte
between the .plt and .text sections after the the first
relaxation pass. */
if (tsec == ia64_info->plt_sec)
offset = -0x1000000 + 32;
else
offset = -0x1000000;
/* If the branch is in range, no need to do anything. */
if ((bfd_signed_vma) (symaddr - reladdr) >= -0x1000000
if ((bfd_signed_vma) (symaddr - reladdr) >= offset
&& (bfd_signed_vma) (symaddr - reladdr) <= 0x0FFFFF0)
{
/* If the 60-bit branch is in 21-bit range, optimize it. */