Relocating-the-section-contents.html 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- This file documents the BFD library.
  4. Copyright (C) 1991-2017 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this document
  6. under the terms of the GNU Free Documentation License, Version 1.3 or
  7. any later version published by the Free Software Foundation; with the
  8. Invariant Sections being "GNU General Public License" and "Funding
  9. Free Software", the Front-Cover texts being (a) (see below), and with
  10. the Back-Cover Texts being (b) (see below). A copy of the license is
  11. included in the section entitled "GNU Free Documentation License".
  12. (a) The FSF's Front-Cover Text is:
  13. A GNU Manual
  14. (b) The FSF's Back-Cover Text is:
  15. You have freedom to copy and modify this GNU Manual, like GNU
  16. software. Copies published by the Free Software Foundation raise
  17. funds for GNU development. -->
  18. <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
  19. <head>
  20. <title>Untitled Document: Relocating the section contents</title>
  21. <meta name="description" content="Untitled Document: Relocating the section contents">
  22. <meta name="keywords" content="Untitled Document: Relocating the section contents">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  27. <link href="index.html#Top" rel="start" title="Top">
  28. <link href="BFD-Index.html#BFD-Index" rel="index" title="BFD Index">
  29. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  30. <link href="Performing-the-Final-Link.html#Performing-the-Final-Link" rel="up" title="Performing the Final Link">
  31. <link href="Writing-the-symbol-table.html#Writing-the-symbol-table" rel="next" title="Writing the symbol table">
  32. <link href="Information-provided-by-the-linker.html#Information-provided-by-the-linker" rel="prev" title="Information provided by the linker">
  33. <style type="text/css">
  34. <!--
  35. a.summary-letter {text-decoration: none}
  36. blockquote.smallquotation {font-size: smaller}
  37. div.display {margin-left: 3.2em}
  38. div.example {margin-left: 3.2em}
  39. div.indentedblock {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  44. div.smalllisp {margin-left: 3.2em}
  45. kbd {font-style:oblique}
  46. pre.display {font-family: inherit}
  47. pre.format {font-family: inherit}
  48. pre.menu-comment {font-family: serif}
  49. pre.menu-preformatted {font-family: serif}
  50. pre.smalldisplay {font-family: inherit; font-size: smaller}
  51. pre.smallexample {font-size: smaller}
  52. pre.smallformat {font-family: inherit; font-size: smaller}
  53. pre.smalllisp {font-size: smaller}
  54. span.nocodebreak {white-space:nowrap}
  55. span.nolinebreak {white-space:nowrap}
  56. span.roman {font-family:serif; font-weight:normal}
  57. span.sansserif {font-family:sans-serif; font-weight:normal}
  58. ul.no-bullet {list-style: none}
  59. -->
  60. </style>
  61. </head>
  62. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  63. <a name="Relocating-the-section-contents"></a>
  64. <div class="header">
  65. <p>
  66. Next: <a href="Writing-the-symbol-table.html#Writing-the-symbol-table" accesskey="n" rel="next">Writing the symbol table</a>, Previous: <a href="Information-provided-by-the-linker.html#Information-provided-by-the-linker" accesskey="p" rel="prev">Information provided by the linker</a>, Up: <a href="Performing-the-Final-Link.html#Performing-the-Final-Link" accesskey="u" rel="up">Performing the Final Link</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
  67. </div>
  68. <hr>
  69. <a name="Relocating-the-section-contents-1"></a>
  70. <h4 class="subsubsection">2.17.3.2 Relocating the section contents</h4>
  71. <p>The <code>_bfd_final_link</code> function should look through the
  72. <code>link_order</code> structures attached to each section of the
  73. output file. Each <code>link_order</code> structure should either be
  74. handled specially, or it should be passed to the function
  75. <code>_bfd_default_link_order</code> which will do the right thing
  76. (<code>_bfd_default_link_order</code> is defined in <code>linker.c</code>).
  77. </p>
  78. <p>For efficiency, a <code>link_order</code> of type
  79. <code>bfd_indirect_link_order</code> whose associated section belongs
  80. to a BFD of the same format as the output BFD must be handled
  81. specially. This type of <code>link_order</code> describes part of an
  82. output section in terms of a section belonging to one of the
  83. input files. The <code>_bfd_final_link</code> function should read the
  84. contents of the section and any associated relocs, apply the
  85. relocs to the section contents, and write out the modified
  86. section contents. If performing a relocatable link, the
  87. relocs themselves must also be modified and written out.
  88. </p>
  89. <a name="index-_005fbfd_005frelocate_005fcontents"></a>
  90. <a name="index-_005fbfd_005ffinal_005flink_005frelocate"></a>
  91. <p>The functions <code>_bfd_relocate_contents</code> and
  92. <code>_bfd_final_link_relocate</code> provide some general support for
  93. performing the actual relocations, notably overflow checking.
  94. Their arguments include information about the symbol the
  95. relocation is against and a <code>reloc_howto_type</code> argument
  96. which describes the relocation to perform. These functions
  97. are defined in <code>reloc.c</code>.
  98. </p>
  99. <p>The a.out function which handles reading, relocating, and
  100. writing section contents is <code>aout_link_input_section</code>. The
  101. actual relocation is done in <code>aout_link_input_section_std</code>
  102. and <code>aout_link_input_section_ext</code>.
  103. </p>
  104. </body>
  105. </html>