NationalSecurityAgency / ghidra

Ghidra is a software reverse engineering (SRE) framework
https://www.nsa.gov/ghidra
Apache License 2.0
49.09k stars 5.65k forks source link

AArch32: addrmode3 incorrectly had load in address pointer export #6607

Open Sleigh-InSPECtor opened 1 month ago

Sleigh-InSPECtor commented 1 month ago

As part of a research project testing the accuracy of the SLEIGH specifications compared to real hardware, we observed unexpected behaviours in a few instructions that used addrmode3 constructor for AArch32 (ARM:LE:32:v8).

According to the manual, the instruction in the example stores two words from two registers to memory. However, we noticed the output was incorrect.


e.g, for AArch32 with,

Instruction: 0xf000cfb1 or 0xf0004fb1, strdlt r0,r1,[0x10000008] initial_registers: { "r0": 0xaabc1448, "r1": 0x1923c5ef, "NG": 0x1 } initial_memory: { "0x10000008": [ 0xfd, 0xd6, 0xf0, 0x8f ] }

We get:

Hardware: { 0x10000008: 0x48, 0x10000009: 0x14, 0x1000000A: 0xbc, 0x1000000B: 0xaa, 0x1000000C: 0xef, 0x1000000D: 0xc5, 0x1000000E: 0x23, 0x1000000F: 0x19 }

Patched Spec: { 0x10000008: 0x48, 0x10000009: 0x14, 0x1000000A: 0xbc, 0x1000000B: 0xaa, 0x1000000C: 0xef, 0x1000000D: 0xc5, 0x1000000E: 0x23, 0x1000000F: 0x19 }

Existing Spec: { 0x8FF0D6FD: 0x48, 0x8FF0D6FE: 0x14, 0x8FF0D6FF: 0xbc, 0x8FF0D700: 0xaa, 0x8FF0D701: 0xef, 0x8FF0D702: 0xc5, 0x8FF0D703: 0x23, 0x8FF0D704: 0x19 }


Note: The patched spec does not introduce any disassembly changes to the best of our knowledge.

jobermayr commented 1 month ago

With this patch applied I get a lot of build errors at least for Ghidra Staging:

> Task :ARM:sleighCompile
Compiling ./data/languages/ARM4_be.slaspec:
79 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM4_le.slaspec:
79 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict

Compiling ./data/languages/ARM4t_be.slaspec:
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced
155 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0

No output produced
Compiling ./data/languages/ARM4t_le.slaspec:
155 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM5_be.slaspec:
79 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict

Compiling ./data/languages/ARM5_le.slaspec:
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

79 NOP constructors found
Compiling ./data/languages/ARM5t_be.slaspec:
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced
155 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0

No output produced
Compiling ./data/languages/ARM5t_le.slaspec:
155 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0

Compiling ./data/languages/ARM6_be.slaspec:
No output produced
275 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM6_le.slaspec:
275 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM7_be.slaspec:
502 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM7_le.slaspec:
502 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0

No output produced
Compiling ./data/languages/ARM8_be.slaspec:
539 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM8_le.slaspec:
539 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM8m_be.slaspec:
537 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0
No output produced

Compiling ./data/languages/ARM8m_le.slaspec:
537 NOP constructors found
Use -n switch to list each individually
ARMinstructions.sinc:1796: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1796 is first conflict
ARMinstructions.sinc:1802: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1802 is first conflict
ARMinstructions.sinc:1808: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1808 is first conflict
ARMinstructions.sinc:1813: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1813 is first conflict
ARMinstructions.sinc:1818: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1818 is first conflict
ARMinstructions.sinc:1824: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1824 is first conflict
ARMinstructions.sinc:1830: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1830 is first conflict
ARMinstructions.sinc:1835: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1835 is first conflict
ARMinstructions.sinc:1840: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1840 is first conflict
ARMinstructions.sinc:1846: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1846 is first conflict
ARMinstructions.sinc:1852: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1852 is first conflict
ARMinstructions.sinc:1857: Table 'addrmode3' has inconsistent export size; Constructor at ARMinstructions.sinc:1857 is first conflict
ARMinstructions.sinc:1784: Table 'addrmode3' exports size 0

No output produced
0 languages successfully compiled
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM4_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM4_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM4t_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM4t_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM5_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM5_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM5t_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM5t_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM6_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM6_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM7_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM7_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM8_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM8_le.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM8m_be.slaspec failed to compile
/tmp/ghidra/Ghidra/Processors/ARM/./data/languages/ARM8m_le.slaspec failed to compile
16 languages failed to compile

> Task :ARM:sleighCompile FAILED
GhidorahRex commented 4 weeks ago

You're right @jobermayr, you have to give it a size. Since everything else is exporting a varnode based on rn it should be size 4. This should fix it: local tmp:4 = reloff; export tmp;