toolchain/share/doc/ld.html/SPU-ELF.html

100 lines
5.9 KiB
HTML
Raw Normal View History

2024-01-10 05:24:32 +00:00
<html lang="en">
<head>
<title>SPU ELF - 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="S_002f390-ELF.html#S_002f390-ELF" title="S/390 ELF">
<link rel="next" href="TI-COFF.html#TI-COFF" title="TI COFF">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU linker LD
(GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
version 2.33.1.
Copyright (C) 1991-2019 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>
</head>
<body>
<div class="node">
<a name="SPU-ELF"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="TI-COFF.html#TI-COFF">TI COFF</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="S_002f390-ELF.html#S_002f390-ELF">S/390 ELF</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Machine-Dependent.html#Machine-Dependent">Machine Dependent</a>
<hr>
</div>
<h3 class="section">4.14 <samp><span class="command">ld</span></samp> and SPU ELF Support</h3>
<p><a name="index-SPU-ELF-options-755"></a>
<a name="index-SPU-plugins-756"></a>
<a name="index-g_t_002d_002dplugin-757"></a>
<dl><dt><samp><span class="option">--plugin</span></samp><dd>This option marks an executable as a PIC plugin module.
<p><a name="index-SPU-overlays-758"></a><a name="index-g_t_002d_002dno_002doverlays-759"></a><br><dt><samp><span class="option">--no-overlays</span></samp><dd>Normally, <samp><span class="command">ld</span></samp> recognizes calls to functions within overlay
regions, and redirects such calls to an overlay manager via a stub.
<samp><span class="command">ld</span></samp> also provides a built-in overlay manager. This option
turns off all this special overlay handling.
<p><a name="index-SPU-overlay-stub-symbols-760"></a><a name="index-g_t_002d_002demit_002dstub_002dsyms-761"></a><br><dt><samp><span class="option">--emit-stub-syms</span></samp><dd>This option causes <samp><span class="command">ld</span></samp> to label overlay stubs with a local
symbol that encodes the stub type and destination.
<p><a name="index-SPU-extra-overlay-stubs-762"></a><a name="index-g_t_002d_002dextra_002doverlay_002dstubs-763"></a><br><dt><samp><span class="option">--extra-overlay-stubs</span></samp><dd>This option causes <samp><span class="command">ld</span></samp> to add overlay call stubs on all
function calls out of overlay regions. Normally stubs are not added
on calls to non-overlay regions.
<p><a name="index-SPU-local-store-size-764"></a><a name="index-g_t_002d_002dlocal_002dstore_003dlo_003ahi-765"></a><br><dt><samp><span class="option">--local-store=lo:hi</span></samp><dd><samp><span class="command">ld</span></samp> usually checks that a final executable for SPU fits in
the address range 0 to 256k. This option may be used to change the
range. Disable the check entirely with <samp><span class="option">--local-store=0:0</span></samp>.
<p><a name="index-SPU-766"></a><a name="index-g_t_002d_002dstack_002danalysis-767"></a><br><dt><samp><span class="option">--stack-analysis</span></samp><dd>SPU local store space is limited. Over-allocation of stack space
unnecessarily limits space available for code and data, while
under-allocation results in runtime failures. If given this option,
<samp><span class="command">ld</span></samp> will provide an estimate of maximum stack usage.
<samp><span class="command">ld</span></samp> does this by examining symbols in code sections to
determine the extents of functions, and looking at function prologues
for stack adjusting instructions. A call-graph is created by looking
for relocations on branch instructions. The graph is then searched
for the maximum stack usage path. Note that this analysis does not
find calls made via function pointers, and does not handle recursion
and other cycles in the call graph. Stack usage may be
under-estimated if your code makes such calls. Also, stack usage for
dynamic allocation, e.g. alloca, will not be detected. If a link map
is requested, detailed information about each function's stack usage
and calls will be given.
<p><a name="index-SPU-768"></a><a name="index-g_t_002d_002demit_002dstack_002dsyms-769"></a><br><dt><samp><span class="option">--emit-stack-syms</span></samp><dd>This option, if given along with <samp><span class="option">--stack-analysis</span></samp> will result
in <samp><span class="command">ld</span></samp> emitting stack sizing symbols for each function.
These take the form <code>__stack_&lt;function_name&gt;</code> for global
functions, and <code>__stack_&lt;number&gt;_&lt;function_name&gt;</code> for static
functions. <code>&lt;number&gt;</code> is the section id in hex. The value of
such symbols is the stack requirement for the corresponding function.
The symbol size will be zero, type <code>STT_NOTYPE</code>, binding
<code>STB_LOCAL</code>, and section <code>SHN_ABS</code>.
</dl>
</body></html>