<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::MachOImageSymbolTableReader::SymbolInformation Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1MachOImageSymbolTableReader.html">MachOImageSymbolTableReader</a></li><li class="navelem"><a class="el" href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation.html">SymbolInformation</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::MachOImageSymbolTableReader::SymbolInformation Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Information about a symbol in a module’s symbol table.  
 <a href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation.html#details">More...</a></p>

<p><code>#include &quot;snapshot/mac/mach_o_image_symbol_table_reader.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a91405f79a8b62e3fb3de4e8c66fee952"><td class="memItemLeft" align="right" valign="top"><a id="a91405f79a8b62e3fb3de4e8c66fee952"></a>
mach_vm_address_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation.html#a91405f79a8b62e3fb3de4e8c66fee952">value</a></td></tr>
<tr class="memdesc:a91405f79a8b62e3fb3de4e8c66fee952"><td class="mdescLeft">&#160;</td><td class="mdescRight">The address of the symbol as it exists in the symbol table, not adjusted for any “slide.” <br /></td></tr>
<tr class="separator:a91405f79a8b62e3fb3de4e8c66fee952"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab02e2ba00bda304ee3fcb47df8aab35c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation.html#ab02e2ba00bda304ee3fcb47df8aab35c">section</a></td></tr>
<tr class="memdesc:ab02e2ba00bda304ee3fcb47df8aab35c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The 1-based section index in the module in which the symbol is found.  <a href="structcrashpad_1_1MachOImageSymbolTableReader_1_1SymbolInformation.html#ab02e2ba00bda304ee3fcb47df8aab35c">More...</a><br /></td></tr>
<tr class="separator:ab02e2ba00bda304ee3fcb47df8aab35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Information about a symbol in a module’s symbol table. </p>
<p>This is a more minimal form of the <code>nlist</code> (or <code>nlist_64</code>) structure, only containing the equivalent of the <code>n_value</code> and <code>n_sect</code> fields. </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="ab02e2ba00bda304ee3fcb47df8aab35c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab02e2ba00bda304ee3fcb47df8aab35c">&#9670;&nbsp;</a></span>section</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t crashpad::MachOImageSymbolTableReader::SymbolInformation::section</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The 1-based section index in the module in which the symbol is found. </p>
<p>For symbols defined in a section (<code>N_SECT</code>), this is the section index that can be passed to <a class="el" href="classcrashpad_1_1MachOImageReader.html#ac9a2388f42c8d4c5c01ca007e93079fc" title="Obtain section information by section index.">MachOImageReader::GetSectionAtIndex()</a>, and <em>value</em> will need to be adjusted for segment slide if the containing segment slid when loaded. For absolute symbols (<code>N_ABS</code>), this will be <code>NO_SECT</code> (<code>0</code>), and <em>value</em> must not be adjusted for segment slide. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>snapshot/mac/mach_o_image_symbol_table_reader.h</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
