[PATCH] Fix thumb calls via PLT on ARM/SymbianOS

Ian Lance Taylor ian@airs.com
Wed Mar 16 17:16:00 GMT 2005


Richard Earnshaw <rearnsha@gcc.gnu.org> writes:

> On Wed, 2005-03-16 at 16:10, Ian Lance Taylor wrote:
> > Julian Brown <julian@codesourcery.com> writes:
> > 
> > > Would it be better to add a --target-arch (or something) flag to
> > > binutils at this point? That would tidy up a previous patch of mine,
> > > too. I don't know if any other targets have, or need, such an option.
> > 
> > I think the linker should support a command line option to do what
> > OUTPUT_ARCH does in a linker script.  
> 
> I'm not convinced, but then I'm not entirely sure what OUTPUT_ARCH
> does.  
> 
> It appears that OUTPUT_ARCH uses bfd variant names, but the problem is
> that in the past this has worked by (ab)using bits in the ELF header
> which simply aren't available in the EABI.  There's also a potential
> disaster in this area of the exploding cross-product: the core
> architecture is just one dimension in the matrix.

OUTPUT_ARCH lets you specify an architecture.  For ARM, this will be
one of the entries found in arch_info_struct in bfd/cpu-arm.c.  Of
course that list can be adjusted.

I think the ELF header issue is irrelevant here.  That is a matter of
how the architecture is represented in the output file.  It's
obviously convenient to represent the architecture correctly in the
output file so that it can be recognized by something reading the
file, but that is not a requirement, and the information does not have
to be in the ELF header.

> > Perhaps the thing to do would be
> > to redefine the -A/--architecture option, which is only used for the
> > Intel i960.  -A currently affects library search order, which we would
> > not want for the new option.    However, I doubt that anybody uses the
> > i960 any more, and even if they do, they probably don't use the -A
> > option.
> 
> I'd really like to be able to just pass -march through from the
> compiler.  Anything solution that needs any remapping beyond a common
> prefix substitution in a gcc spec file is just a disaster waiting to
> happen.

The linker already has a -m option, used to specify the emulation to
use, so -march itself would not work.  But I wouldn't be opposed to
adding an option which just set the machine name.  I would have to be
convinced about adding something which bypassed the existing BFD
architecture/machine machinery.

Ian



More information about the Binutils mailing list