Re: ARM thumbmode architecture question

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

 



Hi,

thanks for your quick reply.

On Tue, Mar 15, 2011 at 2:29 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
> Steffen Dettmer <steffen.dettmer@xxxxxxxxxxxxxx> writes:
>> The application size increased, exeeded 4 MB (working) and
>> finally around 4 MB and I ended up with the linker error
>> "relocation truncated to fit: R_ARM_THM_PC22":
>>
>>    relocation truncated to fit: R_ARM_THM_PC22
>>    against symbol `_call_via_r4' defined in .text section in
>>    /tmp/x/lib_gcc_gnu/libgcc.a(_call_via_rX.o)
>>    ../../../../../myfile.c:238: relocation truncated to fit: R_ARM_THM_PC22
>>    against symbol `_call_via_r3' defined in .text section in
>>    /tmp/x/lib_gcc_gnu/libgcc.a(_call_via_rX.o)
>>    [more similar errors, depending on my #defines/my code various
>>    symbols from various source files]
>
> I note that this is in libgcc.a, which will not be affected by
> using -mlong-calls to compile your application.

Ahh yes (I assumed the problem is that this _call_via_rX
functions are used, instead of some others for long calls).

Where can I find more information about compiling options of libgcc.a?
  (I thought it was compiled as part of gcc building [and thus
  assumed it would be built with correct compiler options]. Could
  it be that I used bad limiting options when the arm-elf-gcc was
  compiled?)

>> I searched the internet and read about `trampolines' and the
>> general possibility to have small wrapper functions in ARM code
>> able to execute very long calls (gigabyte range).
>> Compilers/linkers could theoretically automatically use such
>> "wrappers". This information is in contrast to the previous one.
>
> The linker does have support for this.  Which version of the
> linker are you using?

$ gcc -Wl,--version
GNU ld version 2.16.1

(does this mean it is from binutils-2.16.1 from June 2005?)

is `veneer generation' the correct term for what I called `trampoline'?

oki,

Steffen



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux