From d0213b4202ac12d7e92f7125e87c31d9ecb637dd Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Mon, 11 Apr 2022 18:50:08 -0400 Subject: Remove src folders --- tnslc/compile/format/elf.tnsl | 151 +++++++++++++++++++++++++++++++++++++++ tnslc/compile/format/format.tnsl | 20 ++++++ tnslc/compile/format/iex.tnsl | 0 tnslc/compile/format/out.tnsl | 0 tnslc/compile/format/pe.tnsl | 0 5 files changed, 171 insertions(+) create mode 100644 tnslc/compile/format/elf.tnsl create mode 100644 tnslc/compile/format/format.tnsl create mode 100644 tnslc/compile/format/iex.tnsl create mode 100644 tnslc/compile/format/out.tnsl create mode 100644 tnslc/compile/format/pe.tnsl (limited to 'tnslc/compile/format') diff --git a/tnslc/compile/format/elf.tnsl b/tnslc/compile/format/elf.tnsl new file mode 100644 index 0000000..8490180 --- /dev/null +++ b/tnslc/compile/format/elf.tnsl @@ -0,0 +1,151 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +# Constants and values used in ELF files + +# File signature +;const {4}uint8 SIGNATURE_ELF = {0x7F, 'E', 'L', 'F'} + +# ELF version always 1 +;const uint8 VERSION_ELF = 1 + +# OS identifiers (from wikipedia) +;enum ABI_ELF [uint8] { + SystemV = 0x0, + HP_UX = 0x1, + NetBSD = 0x2, + Linux = 0x3, + GNUHurd = 0x4, + Solaris = 0x6, + AIX = 0x7, + IRIX = 0x8, + FreeBSD = 0x9, + Tru64 = 0xA, + OpenBSD = 0xC, + OpenVMS = 0xD +} + +# ELF file types (from wikipedia) +;enum TYPE_ELF [uint16] { + ET_NONE = 0x0, + ET_REL = 0x1, + ET_EXEC = 0x2, + ET_DYN = 0x3, + ET_CORE = 0x4, + ET_LOOS = 0xFE00, + ET_HIOS = 0xFEFF, + ET_LOPROC = 0xFF00, + ET_HIPROC = 0xFFFF +} + +# ISA (from wikipedia) +;enum ARCH_ELF [uint16] { + NONE = 0x0, + SPARC = 0x2, + x86_32 = 0x3, + MIPS = 0x8, + PowerPC = 0x14, + PowerPC64 = 0x15, + ARM = 0x28, + SPARC9 = 0x2B, + IA_64 = 0x32, + x86_64 = 0x3E, + ARM64 = 0xB7, + RISC_V = 0xF3 +} + +# Some zeros to fill out the pad in the header +;const {7}uint8 PAD_ZEROS_ELF = {0, 0, 0, 0, 0, 0, 0} + + + +# Internal file structures + +# Identity inside header +;raw struct IdentityELF { + {4}uint8 + signature, + + uint8 + class, + data, + version, + abi, + + # Usually zero + abiVersion, + + {7}uint8 + # Filled with zeros, use PAD_ZEROS_ELF to fill out + pad +} + +# Main header (32 bit) +;raw struct HeaderELF32 { + IdentityELF + identity, + + uint16 + fileType, + arch, + + {4}uint8 + version, + entry, + programHeader, + sectionHeader, + + {4}uint8 + flags, + + uint16 + headerSize, + programHeaderSize, + programHeaderEntries, + sectionHeaderSize, + sectionHeaderEntries, + shNameIndex +} + +# Main header (64 bit) +;raw struct HeaderELF64 { + IdentityELF + identity, + + uint16 + fileType, + arch, + + {4}uint8 + version, + + {8}uint8 + entry, + programHeader, + sectionHeader, + + {4}uint8 + flags, + + uint16 + headerSize, + programHeaderSize, + programHeaderEntries, + sectionHeaderSize, + sectionHeaderEntries, + shNameIndex +} + diff --git a/tnslc/compile/format/format.tnsl b/tnslc/compile/format/format.tnsl new file mode 100644 index 0000000..2d4ed4b --- /dev/null +++ b/tnslc/compile/format/format.tnsl @@ -0,0 +1,20 @@ +/## + Copyright 2021 Kyle Gunger + + This file is licensed under the CDDL 1.0 (the License) + and may only be used in accordance with the License. + You should have received a copy of the License with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +/; module format + :include "compile/format/out.tnsl" + :include "compile/format/elf.tnsl" +;/ \ No newline at end of file diff --git a/tnslc/compile/format/iex.tnsl b/tnslc/compile/format/iex.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/tnslc/compile/format/out.tnsl b/tnslc/compile/format/out.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/tnslc/compile/format/pe.tnsl b/tnslc/compile/format/pe.tnsl new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3