Changes

Jump to navigation Jump to search
57 bytes added ,  17:37, 22 February 2020
no edit summary
Line 1: Line 1: −
[[Category:File formats]]
   
NRO is the executable format for non-[[ExeFS]] binaries.
 
NRO is the executable format for non-[[ExeFS]] binaries.
    
It starts with the NRO-start structure then the "NRO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers):
 
It starts with the NRO-start structure then the "NRO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers):
   −
= NRO Start =
+
= Start =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 24: Line 23:  
|}
 
|}
   −
= NRO Header =
+
= Header =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 37: Line 36:  
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| NRO Format Version (Always 0)
+
| Version (always 0)
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 4
 
| 4
| size (Total NRO filesize)
+
| Size (total NRO file size)
 
|-
 
|-
 
| 0xC
 
| 0xC
 
| 0x4
 
| 0x4
| Flags (Unused)
+
| Flags (unused)
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x8 * 3
 
| 0x8 * 3
| SegmentHeader[3] {.text, .ro, .data}
+
| [[#SegmentHeader|SegmentHeader]][3] {.text, .ro, .data}
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 0x4
 
| 0x4
| bssSize
+
| BssSize
 
|-
 
|-
 
| 0x2C
 
| 0x2C
 
| 0x4
 
| 0x4
| Reserved (Unused)
+
| Reserved
 
|-
 
|-
 
| 0x30
 
| 0x30
 
| 0x20
 
| 0x20
| Value of "build id" from ELF's GNU .note section. Contains variable sized digest, up to 32bytes.
+
| [[#ModuleId]]
 
|-
 
|-
 
| 0x50
 
| 0x50
| 0x08
+
| 0x04
| Reserved (Unused)
+
| DsoHandleOffset (unused)
 +
|-
 +
| 0x54
 +
| 0x04
 +
| Reserved (unused)
 
|-
 
|-
 
| 0x58
 
| 0x58
 
| 0x8 * 3
 
| 0x8 * 3
| SegmentHeader[3] {.apiInfo, .dynstr, .dynsym}
+
| [[#SegmentHeader|SegmentHeader]][3] {.apiInfo, .dynstr, .dynsym}
|-
   
|}
 
|}
   Line 82: Line 84:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| FileOffset
+
| MemoryOffset
 
|-
 
|-
 
| 0x4
 
| 0x4
Line 89: Line 91:  
|}
 
|}
   −
=Assets=
+
== ModuleId ==
 +
Value of "build id" from ELF's GNU .note section. Contains variable sized digest, up to 32bytes.
 +
 
 +
= Assets =
 
This is an optional custom assets section for homebrew, this is located at file offset {NroHeader.size}. See also [https://github.com/switchbrew/switch-tools switch-tools] for implementation.
 
This is an optional custom assets section for homebrew, this is located at file offset {NroHeader.size}. See also [https://github.com/switchbrew/switch-tools switch-tools] for implementation.
   Line 120: Line 125:  
| 0x10
 
| 0x10
 
| AssetSection romfs. Can be used by the application.
 
| AssetSection romfs. Can be used by the application.
|-
   
|}
 
|}
  

Navigation menu