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:
parent
0332c262c9
commit
feddcd0d46
@ -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>
|
2008-12-23 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR 7093
|
PR 7093
|
||||||
|
@ -994,8 +994,20 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
|
|||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ roff) & (bfd_vma) -4;
|
+ 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 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)
|
&& (bfd_signed_vma) (symaddr - reladdr) <= 0x0FFFFF0)
|
||||||
{
|
{
|
||||||
/* If the 60-bit branch is in 21-bit range, optimize it. */
|
/* If the 60-bit branch is in 21-bit range, optimize it. */
|
||||||
|
Loading…
Reference in New Issue
Block a user