This is the mail archive of the
mailing list for the binutils project.
Re: Linking very large programs with inadequate branch displacements
- From: Bill Yoder <byoder at cs dot utexas dot edu>
- To: Hans-Peter Nilsson <hp at bitrange dot com>, Alan Modra <amodra at bigpond dot net dot au>, nickc at redhat dot com, "H. J. Lu" <hjl at lucon dot org>
- Cc: binutils at sources dot redhat dot com
- Date: Mon, 19 Sep 2005 16:54:09 -0500
- Subject: Re: Linking very large programs with inadequate branch displacements
- References: <200508111027.j7BAR23W011998@Linux2Srv.argus-neva.ru> <email@example.com> <F22D8329-6C15-4939-9803-11418897FD0F@cs.utexas.edu> <Pine.BSF.firstname.lastname@example.org>
Dear Hans-Peter, Alan, Nick, and HJ:
What we'd like to do is to open up a hole in the bfd output section
and insert a springboard in it, so that the offending instruction can
instead branch to that nearby springboard and then use an absolute
address embedded in the springboard to jump to the far-distant
Usually referred to as a "trampoline" or "stub". For yet
another implementation, see bfd/elf64-mmix.c, handling of
R_MMIX_PUSHJ_STUBBABLE. See also gas/config/tc-mmix.c for when
these relocs are generated.
We've now got our text sections relaxed, the trampolines inserted,
and are bouncing merrily across 140MB executables.
Thanks for your help!