<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2015 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 the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Compiler Collection (GCC) Internals: Sections</title>

<meta name="description" content="GNU Compiler Collection (GCC) Internals: Sections">
<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Sections">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
<link href="PIC.html#PIC" rel="next" title="PIC">
<link href="Scheduling.html#Scheduling" rel="prev" title="Scheduling">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Sections"></a>
<div class="header">
<p>
Next: <a href="PIC.html#PIC" accesskey="n" rel="next">PIC</a>, Previous: <a href="Scheduling.html#Scheduling" accesskey="p" rel="prev">Scheduling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Dividing-the-Output-into-Sections-_0028Texts_002c-Data_002c-_2026_0029"></a>
<h3 class="section">17.18 Dividing the Output into Sections (Texts, Data, &hellip;)</h3>

<p>An object file is divided into sections containing different types of
data.  In the most common case, there are three sections: the <em>text
section</em>, which holds instructions and read-only data; the <em>data
section</em>, which holds initialized writable data; and the <em>bss
section</em>, which holds uninitialized data.  Some systems have other kinds
of sections.
</p>
<p><samp>varasm.c</samp> provides several well-known sections, such as
<code>text_section</code>, <code>data_section</code> and <code>bss_section</code>.
The normal way of controlling a <code><var>foo</var>_section</code> variable
is to define the associated <code><var>FOO</var>_SECTION_ASM_OP</code> macro,
as described below.  The macros are only read once, when <samp>varasm.c</samp>
initializes itself, so their values must be run-time constants.
They may however depend on command-line flags.
</p>
<p><em>Note:</em> Some run-time files, such <samp>crtstuff.c</samp>, also make
use of the <code><var>FOO</var>_SECTION_ASM_OP</code> macros, and expect them
to be string literals.
</p>
<p>Some assemblers require a different string to be written every time a
section is selected.  If your assembler falls into this category, you
should define the <code>TARGET_ASM_INIT_SECTIONS</code> hook and use
<code>get_unnamed_section</code> to set up the sections.
</p>
<p>You must always create a <code>text_section</code>, either by defining
<code>TEXT_SECTION_ASM_OP</code> or by initializing <code>text_section</code>
in <code>TARGET_ASM_INIT_SECTIONS</code>.  The same is true of
<code>data_section</code> and <code>DATA_SECTION_ASM_OP</code>.  If you do not
create a distinct <code>readonly_data_section</code>, the default is to
reuse <code>text_section</code>.
</p>
<p>All the other <samp>varasm.c</samp> sections are optional, and are null
if the target does not provide them.
</p>
<dl>
<dt><a name="index-TEXT_005fSECTION_005fASM_005fOP"></a>Macro: <strong>TEXT_SECTION_ASM_OP</strong></dt>
<dd><p>A C expression whose value is a string, including spacing, containing the
assembler operation that should precede instructions and read-only data.
Normally <code>&quot;\t.text&quot;</code> is right.
</p></dd></dl>

<dl>
<dt><a name="index-HOT_005fTEXT_005fSECTION_005fNAME"></a>Macro: <strong>HOT_TEXT_SECTION_NAME</strong></dt>
<dd><p>If defined, a C string constant for the name of the section containing most
frequently executed functions of the program.  If not defined, GCC will provide
a default definition if the target supports named sections.
</p></dd></dl>

<dl>
<dt><a name="index-UNLIKELY_005fEXECUTED_005fTEXT_005fSECTION_005fNAME"></a>Macro: <strong>UNLIKELY_EXECUTED_TEXT_SECTION_NAME</strong></dt>
<dd><p>If defined, a C string constant for the name of the section containing unlikely
executed functions in the program.
</p></dd></dl>

<dl>
<dt><a name="index-DATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>DATA_SECTION_ASM_OP</strong></dt>
<dd><p>A C expression whose value is a string, including spacing, containing the
assembler operation to identify the following data as writable initialized
data.  Normally <code>&quot;\t.data&quot;</code> is right.
</p></dd></dl>

<dl>
<dt><a name="index-SDATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>SDATA_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
initialized, writable small data.
</p></dd></dl>

<dl>
<dt><a name="index-READONLY_005fDATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>READONLY_DATA_SECTION_ASM_OP</strong></dt>
<dd><p>A C expression whose value is a string, including spacing, containing the
assembler operation to identify the following data as read-only initialized
data.
</p></dd></dl>

<dl>
<dt><a name="index-BSS_005fSECTION_005fASM_005fOP"></a>Macro: <strong>BSS_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
uninitialized global data.  If not defined, and
<code>ASM_OUTPUT_ALIGNED_BSS</code> not defined,
uninitialized global data will be output in the data section if
<samp>-fno-common</samp> is passed, otherwise <code>ASM_OUTPUT_COMMON</code> will be
used.
</p></dd></dl>

<dl>
<dt><a name="index-SBSS_005fSECTION_005fASM_005fOP"></a>Macro: <strong>SBSS_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
uninitialized, writable small data.
</p></dd></dl>

<dl>
<dt><a name="index-TLS_005fCOMMON_005fASM_005fOP"></a>Macro: <strong>TLS_COMMON_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string containing the
assembler operation to identify the following data as thread-local
common data.  The default is <code>&quot;.tls_common&quot;</code>.
</p></dd></dl>

<dl>
<dt><a name="index-TLS_005fSECTION_005fASM_005fFLAG"></a>Macro: <strong>TLS_SECTION_ASM_FLAG</strong></dt>
<dd><p>If defined, a C expression whose value is a character constant
containing the flag used to mark a section as a TLS section.  The
default is <code>'T'</code>.
</p></dd></dl>

<dl>
<dt><a name="index-INIT_005fSECTION_005fASM_005fOP"></a>Macro: <strong>INIT_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
initialization code.  If not defined, GCC will assume such a section does
not exist.  This section has no corresponding <code>init_section</code>
variable; it is used entirely in runtime code.
</p></dd></dl>

<dl>
<dt><a name="index-FINI_005fSECTION_005fASM_005fOP"></a>Macro: <strong>FINI_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
finalization code.  If not defined, GCC will assume such a section does
not exist.  This section has no corresponding <code>fini_section</code>
variable; it is used entirely in runtime code.
</p></dd></dl>

<dl>
<dt><a name="index-INIT_005fARRAY_005fSECTION_005fASM_005fOP"></a>Macro: <strong>INIT_ARRAY_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
part of the <code>.init_array</code> (or equivalent) section.  If not
defined, GCC will assume such a section does not exist.  Do not define
both this macro and <code>INIT_SECTION_ASM_OP</code>.
</p></dd></dl>

<dl>
<dt><a name="index-FINI_005fARRAY_005fSECTION_005fASM_005fOP"></a>Macro: <strong>FINI_ARRAY_SECTION_ASM_OP</strong></dt>
<dd><p>If defined, a C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data as
part of the <code>.fini_array</code> (or equivalent) section.  If not
defined, GCC will assume such a section does not exist.  Do not define
both this macro and <code>FINI_SECTION_ASM_OP</code>.
</p></dd></dl>

<dl>
<dt><a name="index-CRT_005fCALL_005fSTATIC_005fFUNCTION"></a>Macro: <strong>CRT_CALL_STATIC_FUNCTION</strong> <em>(<var>section_op</var>, <var>function</var>)</em></dt>
<dd><p>If defined, an ASM statement that switches to a different section
via <var>section_op</var>, calls <var>function</var>, and switches back to
the text section.  This is used in <samp>crtstuff.c</samp> if
<code>INIT_SECTION_ASM_OP</code> or <code>FINI_SECTION_ASM_OP</code> to calls
to initialization and finalization functions from the init and fini
sections.  By default, this macro uses a simple function call.  Some
ports need hand-crafted assembly code to avoid dependencies on
registers initialized in the function prologue or to ensure that
constant pools don&rsquo;t end up too far way in the text section.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fLIBGCC_005fSDATA_005fSECTION"></a>Macro: <strong>TARGET_LIBGCC_SDATA_SECTION</strong></dt>
<dd><p>If defined, a string which names the section into which small
variables defined in crtstuff and libgcc should go.  This is useful
when the target has options for optimizing access to small data, and
you want the crtstuff and libgcc routines to be conservative in what
they expect of your application yet liberal in what your application
expects.  For example, for targets with a <code>.sdata</code> section (like
MIPS), you could compile crtstuff with <code>-G 0</code> so that it doesn&rsquo;t
require small data support from your application, but use this macro
to put small data into <code>.sdata</code> so that your application can
access these variables whether it uses small data or not.
</p></dd></dl>

<dl>
<dt><a name="index-FORCE_005fCODE_005fSECTION_005fALIGN"></a>Macro: <strong>FORCE_CODE_SECTION_ALIGN</strong></dt>
<dd><p>If defined, an ASM statement that aligns a code section to some
arbitrary boundary.  This is used to force all fragments of the
<code>.init</code> and <code>.fini</code> sections to have to same alignment
and thus prevent the linker from having to add any padding.
</p></dd></dl>

<dl>
<dt><a name="index-JUMP_005fTABLES_005fIN_005fTEXT_005fSECTION"></a>Macro: <strong>JUMP_TABLES_IN_TEXT_SECTION</strong></dt>
<dd><p>Define this macro to be an expression with a nonzero value if jump
tables (for <code>tablejump</code> insns) should be output in the text
section, along with the assembler instructions.  Otherwise, the
readonly data section is used.
</p>
<p>This macro is irrelevant if there is no separate readonly data section.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fINIT_005fSECTIONS"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_INIT_SECTIONS</strong> <em>(void)</em></dt>
<dd><p>Define this hook if you need to do something special to set up the
<samp>varasm.c</samp> sections, or if your target has some special sections
of its own that you need to create.
</p>
<p>GCC calls this hook after processing the command line, but before writing
any assembly code, and before calling any of the section-returning hooks
described below.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fRELOC_005fRW_005fMASK"></a>Target Hook: <em>int</em> <strong>TARGET_ASM_RELOC_RW_MASK</strong> <em>(void)</em></dt>
<dd><p>Return a mask describing how relocations should be treated when
selecting sections.  Bit 1 should be set if global relocations
should be placed in a read-write section; bit 0 should be set if
local relocations should be placed in a read-write section.
</p>
<p>The default version of this function returns 3 when <samp>-fpic</samp>
is in effect, and 0 otherwise.  The hook is typically redefined
when the target cannot support (some kinds of) dynamic relocations
in read-only sections even in executables.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fSELECT_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_SELECT_SECTION</strong> <em>(tree <var>exp</var>, int <var>reloc</var>, unsigned HOST_WIDE_INT <var>align</var>)</em></dt>
<dd><p>Return the section into which <var>exp</var> should be placed.  You can
assume that <var>exp</var> is either a <code>VAR_DECL</code> node or a constant of
some sort.  <var>reloc</var> indicates whether the initial value of <var>exp</var>
requires link-time relocations.  Bit 0 is set when variable contains
local relocations only, while bit 1 is set for global relocations.
<var>align</var> is the constant alignment in bits.
</p>
<p>The default version of this function takes care of putting read-only
variables in <code>readonly_data_section</code>.
</p>
<p>See also <var>USE_SELECT_SECTION_FOR_FUNCTIONS</var>.
</p></dd></dl>

<dl>
<dt><a name="index-USE_005fSELECT_005fSECTION_005fFOR_005fFUNCTIONS"></a>Macro: <strong>USE_SELECT_SECTION_FOR_FUNCTIONS</strong></dt>
<dd><p>Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called
for <code>FUNCTION_DECL</code>s as well as for variables and constants.
</p>
<p>In the case of a <code>FUNCTION_DECL</code>, <var>reloc</var> will be zero if the
function has been determined to be likely to be called, and nonzero if
it is unlikely to be called.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fUNIQUE_005fSECTION"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_UNIQUE_SECTION</strong> <em>(tree <var>decl</var>, int <var>reloc</var>)</em></dt>
<dd><p>Build up a unique section name, expressed as a <code>STRING_CST</code> node,
and assign it to &lsquo;<samp>DECL_SECTION_NAME (<var>decl</var>)</samp>&rsquo;.
As with <code>TARGET_ASM_SELECT_SECTION</code>, <var>reloc</var> indicates whether
the initial value of <var>exp</var> requires link-time relocations.
</p>
<p>The default version of this function appends the symbol name to the
ELF section name that would normally be used for the symbol.  For
example, the function <code>foo</code> would be placed in <code>.text.foo</code>.
Whatever the actual target object format, this is often good enough.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fRODATA_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_FUNCTION_RODATA_SECTION</strong> <em>(tree <var>decl</var>)</em></dt>
<dd><p>Return the readonly data section associated with
&lsquo;<samp>DECL_SECTION_NAME (<var>decl</var>)</samp>&rsquo;.
The default version of this function selects <code>.gnu.linkonce.r.name</code> if
the function&rsquo;s section is <code>.gnu.linkonce.t.name</code>, <code>.rodata.name</code>
if function is in <code>.text.name</code>, and the normal readonly-data section
otherwise.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fMERGEABLE_005fRODATA_005fPREFIX"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_MERGEABLE_RODATA_PREFIX</strong></dt>
<dd><p>Usually, the compiler uses the prefix <code>&quot;.rodata&quot;</code> to construct
section names for mergeable constant data.  Define this macro to override
the string if a different section name should be used.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fTM_005fCLONE_005fTABLE_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_TM_CLONE_TABLE_SECTION</strong> <em>(void)</em></dt>
<dd><p>Return the section that should be used for transactional memory clone  tables.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fASM_005fSELECT_005fRTX_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_SELECT_RTX_SECTION</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>, unsigned HOST_WIDE_INT <var>align</var>)</em></dt>
<dd><p>Return the section into which a constant <var>x</var>, of mode <var>mode</var>,
should be placed.  You can assume that <var>x</var> is some kind of
constant in RTL.  The argument <var>mode</var> is redundant except in the
case of a <code>const_int</code> rtx.  <var>align</var> is the constant alignment
in bits.
</p>
<p>The default version of this function takes care of putting symbolic
constants in <code>flag_pic</code> mode in <code>data_section</code> and everything
else in <code>readonly_data_section</code>.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fMANGLE_005fDECL_005fASSEMBLER_005fNAME"></a>Target Hook: <em>tree</em> <strong>TARGET_MANGLE_DECL_ASSEMBLER_NAME</strong> <em>(tree <var>decl</var>, tree <var>id</var>)</em></dt>
<dd><p>Define this hook if you need to postprocess the assembler name generated
by target-independent code.  The <var>id</var> provided to this hook will be
the computed name (e.g., the macro <code>DECL_NAME</code> of the <var>decl</var> in C,
or the mangled name of the <var>decl</var> in C++).  The return value of the
hook is an <code>IDENTIFIER_NODE</code> for the appropriate mangled name on
your target system.  The default implementation of this hook just
returns the <var>id</var> provided.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fENCODE_005fSECTION_005fINFO"></a>Target Hook: <em>void</em> <strong>TARGET_ENCODE_SECTION_INFO</strong> <em>(tree <var>decl</var>, rtx <var>rtl</var>, int <var>new_decl_p</var>)</em></dt>
<dd><p>Define this hook if references to a symbol or a constant must be
treated differently depending on something about the variable or
function named by the symbol (such as what section it is in).
</p>
<p>The hook is executed immediately after rtl has been created for
<var>decl</var>, which may be a variable or function declaration or
an entry in the constant pool.  In either case, <var>rtl</var> is the
rtl in question.  Do <em>not</em> use <code>DECL_RTL (<var>decl</var>)</code>
in this hook; that field may not have been initialized yet.
</p>
<p>In the case of a constant, it is safe to assume that the rtl is
a <code>mem</code> whose address is a <code>symbol_ref</code>.  Most decls
will also have this form, but that is not guaranteed.  Global
register variables, for instance, will have a <code>reg</code> for their
rtl.  (Normally the right thing to do with such unusual rtl is
leave it alone.)
</p>
<p>The <var>new_decl_p</var> argument will be true if this is the first time
that <code>TARGET_ENCODE_SECTION_INFO</code> has been invoked on this decl.  It will
be false for subsequent invocations, which will happen for duplicate
declarations.  Whether or not anything must be done for the duplicate
declaration depends on whether the hook examines <code>DECL_ATTRIBUTES</code>.
<var>new_decl_p</var> is always true when the hook is called for a constant.
</p>
<a name="index-SYMBOL_005fREF_005fFLAG_002c-in-TARGET_005fENCODE_005fSECTION_005fINFO"></a>
<p>The usual thing for this hook to do is to record flags in the
<code>symbol_ref</code>, using <code>SYMBOL_REF_FLAG</code> or <code>SYMBOL_REF_FLAGS</code>.
Historically, the name string was modified if it was necessary to
encode more than one bit of information, but this practice is now
discouraged; use <code>SYMBOL_REF_FLAGS</code>.
</p>
<p>The default definition of this hook, <code>default_encode_section_info</code>
in <samp>varasm.c</samp>, sets a number of commonly-useful bits in
<code>SYMBOL_REF_FLAGS</code>.  Check whether the default does what you need
before overriding it.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fSTRIP_005fNAME_005fENCODING"></a>Target Hook: <em>const char *</em> <strong>TARGET_STRIP_NAME_ENCODING</strong> <em>(const char *<var>name</var>)</em></dt>
<dd><p>Decode <var>name</var> and return the real name part, sans
the characters that <code>TARGET_ENCODE_SECTION_INFO</code>
may have added.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fIN_005fSMALL_005fDATA_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_IN_SMALL_DATA_P</strong> <em>(const_tree <var>exp</var>)</em></dt>
<dd><p>Returns true if <var>exp</var> should be placed into a &ldquo;small data&rdquo; section.
The default version of this hook always returns false.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fHAVE_005fSRODATA_005fSECTION"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_SRODATA_SECTION</strong></dt>
<dd><p>Contains the value true if the target places read-only
&ldquo;small data&rdquo; into a separate section.  The default value is false.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fPROFILE_005fBEFORE_005fPROLOGUE"></a>Target Hook: <em>bool</em> <strong>TARGET_PROFILE_BEFORE_PROLOGUE</strong> <em>(void)</em></dt>
<dd><p>It returns true if target wants profile code emitted before prologue.
</p>
<p>The default version of this hook use the target macro
<code>PROFILE_BEFORE_PROLOGUE</code>.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fBINDS_005fLOCAL_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_BINDS_LOCAL_P</strong> <em>(const_tree <var>exp</var>)</em></dt>
<dd><p>Returns true if <var>exp</var> names an object for which name resolution
rules must resolve to the current &ldquo;module&rdquo; (dynamic shared library
or executable image).
</p>
<p>The default version of this hook implements the name resolution rules
for ELF, which has a looser model of global name binding than other
currently supported object file formats.
</p></dd></dl>

<dl>
<dt><a name="index-TARGET_005fHAVE_005fTLS"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_TLS</strong></dt>
<dd><p>Contains the value true if the target supports thread-local storage.
The default value is false.
</p></dd></dl>


<hr>
<div class="header">
<p>
Next: <a href="PIC.html#PIC" accesskey="n" rel="next">PIC</a>, Previous: <a href="Scheduling.html#Scheduling" accesskey="p" rel="prev">Scheduling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
