blob: d384086de520bfee38277ca9fe3d567b8e00330f [file] [log] [blame]
<html lang="en">
<head>
<title>i960 - Untitled</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Untitled">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Machine-Dependent.html#Machine-Dependent" title="Machine Dependent">
<link rel="prev" href="H8_002f300.html#H8_002f300" title="H8/300">
<link rel="next" href="ARM.html#ARM" title="ARM">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU linker LD
(Sourcery G++ Lite 2011.03-41)
version 2.20.51.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included in the
section entitled ``GNU Free Documentation License''.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="i960"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="ARM.html#ARM">ARM</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="H8_002f300.html#H8_002f300">H8/300</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Machine-Dependent.html#Machine-Dependent">Machine Dependent</a>
<hr>
</div>
<h3 class="section">4.2 <samp><span class="command">ld</span></samp> and the Intel 960 Family</h3>
<p><a name="index-i960-support-562"></a>
You can use the &lsquo;<samp><span class="samp">-A</span><var>architecture</var></samp>&rsquo; command line option to
specify one of the two-letter names identifying members of the 960
family; the option specifies the desired output target, and warns of any
incompatible instructions in the input files. It also modifies the
linker's search strategy for archive libraries, to support the use of
libraries specific to each particular architecture, by including in the
search loop names suffixed with the string identifying the architecture.
<p>For example, if your <samp><span class="command">ld</span></samp> command line included &lsquo;<samp><span class="samp">-ACA</span></samp>&rsquo;<!-- /@w --> as
well as &lsquo;<samp><span class="samp">-ltry</span></samp>&rsquo;<!-- /@w -->, the linker would look (in its built-in search
paths, and in any paths you specify with &lsquo;<samp><span class="samp">-L</span></samp>&rsquo;) for a library with
the names
<pre class="smallexample"> try
libtry.a
tryca
libtryca.a
</pre>
<p class="noindent">The first two possibilities would be considered in any event; the last
two are due to the use of &lsquo;<samp><span class="samp">-ACA</span></samp>&rsquo;<!-- /@w -->.
<p>You can meaningfully use &lsquo;<samp><span class="samp">-A</span></samp>&rsquo; more than once on a command line, since
the 960 architecture family allows combination of target architectures; each
use will add another pair of name variants to search for when &lsquo;<samp><span class="samp">-l</span></samp>&rsquo;<!-- /@w -->
specifies a library.
<p><a name="index-g_t_0040option_007b_002d_002drelax_007d-on-i960-563"></a><a name="index-relaxing-on-i960-564"></a><samp><span class="command">ld</span></samp> supports the &lsquo;<samp><span class="samp">--relax</span></samp>&rsquo; option for the i960 family. If
you specify &lsquo;<samp><span class="samp">--relax</span></samp>&rsquo;, <samp><span class="command">ld</span></samp> finds all <code>balx</code> and
<code>calx</code> instructions whose targets are within 24 bits, and turns
them into 24-bit program-counter relative <code>bal</code> and <code>cal</code>
instructions, respectively. <samp><span class="command">ld</span></samp> also turns <code>cal</code>
instructions into <code>bal</code> instructions when it determines that the
target subroutine is a leaf routine (that is, the target subroutine does
not itself call any subroutines).
<p><a name="index-Cortex_002dA8-erratum-workaround-565"></a><a name="index-g_t_002d_002dfix_002dcortex_002da8-566"></a><a name="index-g_t_002d_002dno_002dfix_002dcortex_002da8-567"></a>The &lsquo;<samp><span class="samp">--fix-cortex-a8</span></samp>&rsquo; switch enables a link-time workaround for an erratum in certain Cortex-A8 processors. The workaround is enabled by default if you are targeting the ARM v7-A architecture profile. It can be enabled otherwise by specifying &lsquo;<samp><span class="samp">--fix-cortex-a8</span></samp>&rsquo;, or disabled unconditionally by specifying &lsquo;<samp><span class="samp">--no-fix-cortex-a8</span></samp>&rsquo;.
<p>The erratum only affects Thumb-2 code. Please contact ARM for further details.
<p><a name="index-g_t_002d_002dmerge_002dexidx_002dentries-568"></a><a name="index-g_t_002d_002dno_002dmerge_002dexidx_002dentries-569"></a>The &lsquo;<samp><span class="samp">--no-merge-exidx-entries</span></samp>&rsquo; switch disables the merging of adjacent exidx entries in debuginfo.
</body></html>