<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.axiodl.com/index.php?action=history&amp;feed=atom&amp;title=RSO_%28File_Format%29</id>
	<title>RSO (File Format) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.axiodl.com/index.php?action=history&amp;feed=atom&amp;title=RSO_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;action=history"/>
	<updated>2026-04-30T04:03:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1827&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Header */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1827&amp;oldid=prev"/>
		<updated>2016-10-02T17:20:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Header&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:20, 2 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l110&quot;&gt;Line 110:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 110:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Relocation Table|relocation table]] for internal relocations (relocations &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/del&gt;symbols within this module).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Relocation Table|relocation table]] for internal relocations (relocations &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for &lt;/ins&gt;symbols within this module).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x34&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x34&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l122&quot;&gt;Line 122:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 122:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Relocation Table|relocation table]] for external relocations (relocations &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/del&gt;symbols within other modules).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Relocation Table|relocation table]] for external relocations (relocations &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for &lt;/ins&gt;symbols within other modules).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x3C&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x3C&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l152&quot;&gt;Line 152:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 152:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Import Symbol Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Import Symbol Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Symbol Table|symbol table]] for imports (symbols within other modules).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Absolute offset of the [[#Symbol Table|symbol table]] for imports (symbols within other modules&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, referenced by this one&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x50&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x50&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1826&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Relocation Table */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1826&amp;oldid=prev"/>
		<updated>2016-10-02T17:17:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Relocation Table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:17, 2 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot;&gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and therefore do not have a fixed memory address, the relocations table is needed to ensure all data and function addresses are correct; this includes both symbols within the RSO itself, which don&#039;t have a fixed address until the RSO is linked in, and symbols within the DOL, which need corrections due to the usage of relative offsets in branch instructions. The relocation table describes the location of every instruction that needs to be patched, and how to patch it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and therefore do not have a fixed memory address, the relocations table is needed to ensure all data and function addresses &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in the RSO &lt;/ins&gt;are correct; this includes both symbols within the RSO itself, which don&#039;t have a fixed address until the RSO is linked in, and symbols within the DOL, which need corrections due to the usage of relative offsets in branch instructions. The relocation table describes the location of every instruction that needs to be patched, and how to patch it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses pointing to symbols within this RSO), and one for external relocations (relocations for addresses pointing to symbols within the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039; and &amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses pointing to symbols within this RSO), and one for external relocations (relocations for addresses pointing to symbols within the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039; and &amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1825&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Relocation Table */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1825&amp;oldid=prev"/>
		<updated>2016-10-02T16:55:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Relocation Table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:55, 2 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot;&gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and therefore do not have a fixed memory address, the relocations table is needed to ensure all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;references to &lt;/del&gt;symbols within the RSO have &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the correct &lt;/del&gt;address&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. When &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;module &lt;/del&gt;is linked in, the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;game uses &lt;/del&gt;the relocation table to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;iterate over all instructions &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data values referring &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RSO symbols, and &lt;/del&gt;patch &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;them to point to the correct address&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and therefore do not have a fixed memory address, the relocations table is needed to ensure all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data and function addresses are correct; this includes both &lt;/ins&gt;symbols within the RSO &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;itself, which don&#039;t &lt;/ins&gt;have &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a fixed &lt;/ins&gt;address &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;until &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RSO &lt;/ins&gt;is linked in, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and symbols within &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DOL, which need corrections due to &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usage of relative offsets in branch instructions. The &lt;/ins&gt;relocation table &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;describes the location of every instruction that needs &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;be patched, &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;how &lt;/ins&gt;to patch &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in this RSO &lt;/del&gt;pointing to symbols &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;also in &lt;/del&gt;this RSO), and one for external relocations (relocations for addresses &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in this RSO &lt;/del&gt;pointing to symbols &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &#039;&#039;Internal Relocation Table Offset&#039;&#039; and &#039;&#039;External Relocation Table Offset&#039;&#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses pointing to symbols &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;within &lt;/ins&gt;this RSO), and one for external relocations (relocations for addresses pointing to symbols &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;within &lt;/ins&gt;the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &#039;&#039;Internal Relocation Table Offset&#039;&#039; and &#039;&#039;External Relocation Table Offset&#039;&#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1824&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Symbol Table */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1824&amp;oldid=prev"/>
		<updated>2016-10-01T18:59:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Symbol Table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:59, 1 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l328&quot;&gt;Line 328:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 328:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Symbol Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Symbol Offset&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| The section-relative offset to the symbol.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| The section-relative offset to the symbol&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. This is always 0 for imports&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x8&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l334&quot;&gt;Line 334:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 334:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Symbol Section Index&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Symbol Section Index&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Index &lt;/del&gt;of the section that contains this symbol.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;For exports, index &lt;/ins&gt;of the section that contains this symbol. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;For imports, appears to be an offset?&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0xC&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0xC&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1823&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Symbol Table */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1823&amp;oldid=prev"/>
		<updated>2016-10-01T18:50:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Symbol Table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:50, 1 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l340&quot;&gt;Line 340:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 340:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;ELF Hash&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;ELF Hash&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| A hash. Exact details unknown, but isn&#039;t required to link to the symbol.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| A hash. Exact details unknown, but isn&#039;t required to link to the symbol&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. This field is omitted for imports&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x10&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1822&amp;oldid=prev</id>
		<title>&gt;Aruki: /* Relocation Table */</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1822&amp;oldid=prev"/>
		<updated>2016-10-01T18:42:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Relocation Table&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:42, 1 October 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot;&gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Relocation Table ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;can &lt;/del&gt;therefore do not have a fixed memory address, the relocations table is needed to ensure all references to symbols within the RSO have the correct address. When the module is linked in, the game uses the relocation table to iterate over all instructions and data values referring to RSO symbols, and patch them to point to the correct address.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since modules have space allocated at runtime and therefore do not have a fixed memory address, the relocations table is needed to ensure all references to symbols within the RSO have the correct address. When the module is linked in, the game uses the relocation table to iterate over all instructions and data values referring to RSO symbols, and patch them to point to the correct address.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses in this RSO pointing to symbols also in this RSO), and one for external relocations (relocations for addresses in this RSO pointing to symbols in the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039; and &amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are two relocation tables in the file; one for internal relocations (relocations for addresses in this RSO pointing to symbols also in this RSO), and one for external relocations (relocations for addresses in this RSO pointing to symbols in the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039; and &amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
	<entry>
		<id>https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1821&amp;oldid=prev</id>
		<title>&gt;Aruki: Created page with &quot;The &#039;&#039;&#039;RSO format&#039;&#039;&#039; is the file format for shared objects for Wii games. This is essentially the Wii&#039;s equivalent of a DLL file, allowing for code modules to be dynamically l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.axiodl.com/index.php?title=RSO_(File_Format)&amp;diff=1821&amp;oldid=prev"/>
		<updated>2016-10-01T18:39:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;RSO format&amp;#039;&amp;#039;&amp;#039; is the file format for shared objects for Wii games. This is essentially the Wii&amp;#039;s equivalent of a DLL file, allowing for code modules to be dynamically l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;RSO format&amp;#039;&amp;#039;&amp;#039; is the file format for shared objects for Wii games. This is essentially the Wii&amp;#039;s equivalent of a DLL file, allowing for code modules to be dynamically linked at runtime and unlinked when not in use to save memory. It&amp;#039;s very similar to the GameCube&amp;#039;s [[REL (File Format)|REL format]], with the main difference being that the RSO format resolves symbol references via runtime symbol lookups rather than having pre-calculated offsets into the game&amp;#039;s module files.&lt;br /&gt;
&lt;br /&gt;
RSO files are usually accompanied by a &amp;#039;&amp;#039;&amp;#039;SEL file&amp;#039;&amp;#039;&amp;#039;, which is an RSO file that contains no code or data sections, and instead just has an export table for the [[DOL (File Format)|DOL file]]. This is used to resolve module references to symbols in the main executable.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Next Module Link&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Pointer to the next module, forming a linked list. Always 0, filled in at runtime.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Previous Module Link&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Pointer to the previous module, forming a linked list. Always 0, filled in at runtime.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Section Count&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Number of sections contained in the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Section Info Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Offset to the [[#Section Info Table|section info table]]. Always 0x58.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Module Name Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Offset to the module name. Can be 0, in which case this module doesn&amp;#039;t contain a name string.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Module Name Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the module name string.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Module Version&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Module version number. Always 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;BSS Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the BSS section, which is allocated at runtime (not included in the file).&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Prolog Section&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section index of the prolog function, which is called when the module is linked. 0 if this module doesn&amp;#039;t contain a prolog function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x21&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Epilog Section&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section index of the epilog function, which is called when the module is unlinked. 0 if this module doesn&amp;#039;t contain an epilog function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Unresolved Section&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section index of the unresolved function, which is called if the module attempts to call an unlinked function. 0 if this module doesn&amp;#039;t contain an unresolved function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;BSS Section&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section index of the BSS section. Always 0, filled in at runtime.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Prolog Function Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section-relative offset of the prolog function. 0 if this module doesn&amp;#039;t contain a prolog function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Epilog Function Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section-relative offset of the epilog function. 0 if this module doesn&amp;#039;t contain an epilog function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Unresolved Function Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Section-relative offset of the unresolved function. 0 if this module doesn&amp;#039;t contain an unresolved function.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the [[#Relocation Table|relocation table]] for internal relocations (relocations to symbols within this module).&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Internal Relocation Table Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the [[#Relocation Table|relocation table]] for internal relocations.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the [[#Relocation Table|relocation table]] for external relocations (relocations to symbols within other modules).&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;External Relocation Table Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the [[#Relocation Table|relocation table]] for external relocations.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Export Symbol Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the [[#Symbol Table|symbol table]] for exports (symbols within this module).&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Export Symbol Table Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the [[#Symbol Table|symbol table]] for exports.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Export Symbol Names Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the string table containing export symbol names.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Import Symbol Table Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the [[#Symbol Table|symbol table]] for imports (symbols within other modules).&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Import Symbol Table Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the [[#Symbol Table|symbol table]] for imports.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Import Symbol Names Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the string table containing import symbol names.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| colspan=4 {{unknown|End of RSO header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section Info Table ===&lt;br /&gt;
&lt;br /&gt;
This data is pointed to by the &amp;#039;&amp;#039;Section Info Offset&amp;#039;&amp;#039; value in the header. It specifies the layout of the file. The structure loops once for each section in the file, as specified by the &amp;#039;&amp;#039;Section Count&amp;#039;&amp;#039; in the header. Any compiler-generated sections that are unused (such as the symbol table or the section name table) are nulled out and listed with a size/offset of 0. The first section is always null. The BSS section is listed with a valid size but an offset of 0 (as the BSS section is not included in the file, but instead has space allocated at runtime).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of the section.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Size of the section.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=4 {{unknown|End of section info}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Relocation Table ===&lt;br /&gt;
&lt;br /&gt;
Since modules have space allocated at runtime and can therefore do not have a fixed memory address, the relocations table is needed to ensure all references to symbols within the RSO have the correct address. When the module is linked in, the game uses the relocation table to iterate over all instructions and data values referring to RSO symbols, and patch them to point to the correct address.&lt;br /&gt;
&lt;br /&gt;
There are two relocation tables in the file; one for internal relocations (relocations for addresses in this RSO pointing to symbols also in this RSO), and one for external relocations (relocations for addresses in this RSO pointing to symbols in the main [[DOL (File Format)|DOL executable]]). These tables are pointed to by the &amp;#039;&amp;#039;Internal Relocation Table Offset&amp;#039;&amp;#039; and &amp;#039;&amp;#039;External Relocation Table Offset&amp;#039;&amp;#039; values in the header. You can calculate the number of relocation entries by dividing the size of the table by 0xC (the size of one relocation entry).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Absolute offset of this relocation (relative to the start of the RSO file).&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u24&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Symbol ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| For internal relocations, this is the section index of the symbol being patched to. For external relocations, this is the index of the symbol within the import symbol table.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Relocation Type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Type of the relocation. See the below table for a list of possible types.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Symbol Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| For internal relocations, this is the section-relative offset of the symbol being patched to. For external relocations, this is unused and always 0 (the offset is calculated using the import symbol table).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=4 {{unknown|End of relocation}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are the possible relocation types. The &amp;quot;used&amp;quot; column indicates whether this relocation type is used by any of the modules in any of Retro&amp;#039;s games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Used?&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| R_PPC_NONE&lt;br /&gt;
| Do nothing.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| R_PPC_ADDR32&lt;br /&gt;
| Write the full, 32-bit address of the symbol.&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| R_PPC_ADDR24&lt;br /&gt;
| Write the 24-bit address of the symbol. Leave the existing value of the bottom two bits intact.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| R_PPC_ADDR16&lt;br /&gt;
| Write the 16-bit address of the symbol.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| R_PPC_ADDR16_LO&lt;br /&gt;
| Write the low 16 bits of the symbol address.&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| R_PPC_ADDR16_HI&lt;br /&gt;
| Write the high 16 bits of the symbol address.&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| R_PPC_ADDR16_HA&lt;br /&gt;
| Write the high 16 bits of the symbol address, plus 0x10000. This is used for cases where the bottom half is &amp;gt;= 0x8000, in which case a subtract operation is used to load the lower half of the address.&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| R_PPC_ADDR14&lt;br /&gt;
| Write the 14-bit address of the symbol. Leave the existing value of the bottom two bits intact. This is used for conditional branch instructions.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| R_PPC_ADDR14_BRTAKEN&lt;br /&gt;
| Write the 14-bit address of the symbol. Leave the existing value of the bottom two bits intact. &amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Needs a proper check on differences between this and ADDR14&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| R_PPC_ADDR14_BRNTAKEN&lt;br /&gt;
| Write the 14-bit address of the symbol. Leave the existing value of the bottom two bits intact. &amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Needs a proper check on differences between this and ADDR14&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| R_PPC_REL24&lt;br /&gt;
| Write a 24-bit offset from the address of this instruction to the address of the symbol. This is used for branch instructions.&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| R_PPC_REL14&lt;br /&gt;
| Write a 14-bit offset from the address of this instruction to the address of the symbol.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Symbol Table ===&lt;br /&gt;
&lt;br /&gt;
RSO modules resolve references to symbols at runtime, rather than using precalculated offsets into the module files like [[REL (File Format)|REL]] does. To accomplish this, there&amp;#039;s two symbol tables in the file; one for exports (symbols that are included in this RSO), and imports (symbols that are included in other modules but are referenced from this module). The name of the symbol in the import table is used to locate the same symbol in another module&amp;#039;s export table, from which the address of the symbol can be calculated. Note that although the main [[DOL (File Format)|DOL file]] doesn&amp;#039;t contain an export table, there &amp;#039;&amp;#039;is&amp;#039;&amp;#039; a DOL export table in the SEL file, which can usually be found alongside the RSOs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Symbol Name Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Relative offset into the name table pointed to in the header, which points to the name of this symbol. &lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Symbol Offset&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| The section-relative offset to the symbol.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Symbol Section Index&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Index of the section that contains this symbol.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ELF Hash&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| A hash. Exact details unknown, but isn&amp;#039;t required to link to the symbol.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| colspan=4 {{unknown|End of symbol}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>&gt;Aruki</name></author>
	</entry>
</feed>