bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/25665] aarch64 veneers not inserted with large .text object betw


From: tnfchris at sourceware dot org
Subject: [Bug ld/25665] aarch64 veneers not inserted with large .text object between caller and target
Date: Tue, 07 Apr 2020 15:32:34 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=25665

--- Comment #5 from Tamar Christina <tnfchris at sourceware dot org> ---
It works on AArch32 because it places the veneers directly after the input
section instead of after all sections.

This is just a coincidence that it works, the general problem doesn't work,

You can get the same problem in a number of ways on aarch32:

Bar.c

int foo ()
{
  return 0;
}

Foo.c

int main()
{
   int x = foo ();
   asm (".zero  134217728");
   return x;
}


> arm-none-eabi-ld -e0 foo.o bar.o
foo.o: in function `main':
foo.c:(.text+0x8): relocation truncated to fit: R_ARM_CALL against symbol `foo'
defined in .text section in bar.o

So while I can change the generation of the veneer section to match what Arm is
doing it won't fix the general problem. It also has an effect on things such as
certain erratum workarounds.

placing the sub sections immediately after the section that needs them means
for something like the A53 erratum we have to align each individual stub
section to a 4k boundary to prevent it re-introducing the same bug.

This has the potential to increase the code size significantly.

Though I guess I could do it as a commandline option, but I think you'll just
run into the problem again in a different form.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]