<html lang="en">
<head>
<title>PHDRS - 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="Scripts.html#Scripts" title="Scripts">
<link rel="prev" href="MEMORY.html#MEMORY" title="MEMORY">
<link rel="next" href="VERSION.html#VERSION" title="VERSION">
<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="PHDRS"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="VERSION.html#VERSION">VERSION</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="MEMORY.html#MEMORY">MEMORY</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Scripts.html#Scripts">Scripts</a>
<hr>
</div>

<h3 class="section">3.8 PHDRS Command</h3>

<p><a name="index-PHDRS-538"></a><a name="index-program-headers-539"></a><a name="index-ELF-program-headers-540"></a><a name="index-program-segments-541"></a><a name="index-segments_002c-ELF-542"></a>The ELF object file format uses <dfn>program headers</dfn>, also knows as
<dfn>segments</dfn>.  The program headers describe how the program should be
loaded into memory.  You can print them out by using the <code>objdump</code>
program with the &lsquo;<samp><span class="samp">-p</span></samp>&rsquo; option.

   <p>When you run an ELF program on a native ELF system, the system loader
reads the program headers in order to figure out how to load the
program.  This will only work if the program headers are set correctly. 
This manual does not describe the details of how the system loader
interprets program headers; for more information, see the ELF ABI.

   <p>The linker will create reasonable program headers by default.  However,
in some cases, you may need to specify the program headers more
precisely.  You may use the <code>PHDRS</code> command for this purpose.  When
the linker sees the <code>PHDRS</code> command in the linker script, it will
not create any program headers other than the ones specified.

   <p>The linker only pays attention to the <code>PHDRS</code> command when
generating an ELF output file.  In other cases, the linker will simply
ignore <code>PHDRS</code>.

   <p>This is the syntax of the <code>PHDRS</code> command.  The words <code>PHDRS</code>,
<code>FILEHDR</code>, <code>AT</code>, and <code>FLAGS</code> are keywords.

<pre class="smallexample">     PHDRS
     {
       <var>name</var> <var>type</var> [ FILEHDR ] [ PHDRS ] [ AT ( <var>address</var> ) ]
             [ FLAGS ( <var>flags</var> ) ] ;
     }
</pre>
   <p>The <var>name</var> is used only for reference in the <code>SECTIONS</code> command
of the linker script.  It is not put into the output file.  Program
header names are stored in a separate name space, and will not conflict
with symbol names, file names, or section names.  Each program header
must have a distinct name.  The headers are processed in order and it
is usual for them to map to sections in ascending load address order.

   <p>Certain program header types describe segments of memory which the
system loader will load from the file.  In the linker script, you
specify the contents of these segments by placing allocatable output
sections in the segments.  You use the &lsquo;<samp><span class="samp">:</span><var>phdr</var></samp>&rsquo; output section
attribute to place a section in a particular segment.  See <a href="Output-Section-Phdr.html#Output-Section-Phdr">Output Section Phdr</a>.

   <p>It is normal to put certain sections in more than one segment.  This
merely implies that one segment of memory contains another.  You may
repeat &lsquo;<samp><span class="samp">:</span><var>phdr</var></samp>&rsquo;, using it once for each segment which should
contain the section.

   <p>If you place a section in one or more segments using &lsquo;<samp><span class="samp">:</span><var>phdr</var></samp>&rsquo;,
then the linker will place all subsequent allocatable sections which do
not specify &lsquo;<samp><span class="samp">:</span><var>phdr</var></samp>&rsquo; in the same segments.  This is for
convenience, since generally a whole set of contiguous sections will be
placed in a single segment.  You can use <code>:NONE</code> to override the
default segment and tell the linker to not put the section in any
segment at all.

   <p><a name="index-FILEHDR-543"></a><a name="index-PHDRS-544"></a>You may use the <code>FILEHDR</code> and <code>PHDRS</code> keywords after
the program header type to further describe the contents of the segment. 
The <code>FILEHDR</code> keyword means that the segment should include the ELF
file header.  The <code>PHDRS</code> keyword means that the segment should
include the ELF program headers themselves.  If applied to a loadable
segment (<code>PT_LOAD</code>), all prior loadable segments must have one of
these keywords.

   <p>The <var>type</var> may be one of the following.  The numbers indicate the
value of the keyword.

     <dl>
<dt><code>PT_NULL</code> (0)<dd>Indicates an unused program header.

     <br><dt><code>PT_LOAD</code> (1)<dd>Indicates that this program header describes a segment to be loaded from
the file.

     <br><dt><code>PT_DYNAMIC</code> (2)<dd>Indicates a segment where dynamic linking information can be found.

     <br><dt><code>PT_INTERP</code> (3)<dd>Indicates a segment where the name of the program interpreter may be
found.

     <br><dt><code>PT_NOTE</code> (4)<dd>Indicates a segment holding note information.

     <br><dt><code>PT_SHLIB</code> (5)<dd>A reserved program header type, defined but not specified by the ELF
ABI.

     <br><dt><code>PT_PHDR</code> (6)<dd>Indicates a segment where the program headers may be found.

     <br><dt><code>PT_TLS</code> (7)<dd>Indicates a segment containing thread local storage.

     <br><dt><var>expression</var><dd>An expression giving the numeric type of the program header.  This may
be used for types not defined above. 
</dl>

   <p>You can specify that a segment should be loaded at a particular address
in memory by using an <code>AT</code> expression.  This is identical to the
<code>AT</code> command used as an output section attribute (see <a href="Output-Section-LMA.html#Output-Section-LMA">Output Section LMA</a>).  The <code>AT</code> command for a program header overrides the
output section attribute.

   <p>The linker will normally set the segment flags based on the sections
which comprise the segment.  You may use the <code>FLAGS</code> keyword to
explicitly specify the segment flags.  The value of <var>flags</var> must be
an integer.  It is used to set the <code>p_flags</code> field of the program
header.

   <p>Here is an example of <code>PHDRS</code>.  This shows a typical set of program
headers used on a native ELF system.

<pre class="example">     PHDRS
     {
       headers PT_PHDR PHDRS ;
       interp PT_INTERP ;
       text PT_LOAD FILEHDR PHDRS ;
       data PT_LOAD ;
       dynamic PT_DYNAMIC ;
     }
     
     SECTIONS
     {
       . = SIZEOF_HEADERS;
       .interp : { *(.interp) } :text :interp
       .text : { *(.text) } :text
       .rodata : { *(.rodata) } /* defaults to :text */
       ...
       . = . + 0x1000; /* move to a new page in memory */
       .data : { *(.data) } :data
       .dynamic : { *(.dynamic) } :data :dynamic
       ...
     }
</pre>
   </body></html>

