From b88b0184abe6e0d2d8ce8f825793ade3bb010f00 Mon Sep 17 00:00:00 2001 From: Artemis Tosini Date: Sun, 5 Nov 2023 20:28:40 +0000 Subject: [PATCH] Initial hex2 tests pass on aarch64 --- lib/linux/aarch64-mes/elf64-body-exit-42.hex2 | 1 + .../aarch64-mes/elf64-body-hello-mes.hex2 | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 lib/linux/aarch64-mes/elf64-body-hello-mes.hex2 diff --git a/lib/linux/aarch64-mes/elf64-body-exit-42.hex2 b/lib/linux/aarch64-mes/elf64-body-exit-42.hex2 index e42b2427..a41c263f 100644 --- a/lib/linux/aarch64-mes/elf64-body-exit-42.hex2 +++ b/lib/linux/aarch64-mes/elf64-body-exit-42.hex2 @@ -47,3 +47,4 @@ a8 0b 80 d2 # mov x8, #93 :ELF_data 65 78 69 74 34 32 20 64 61 74 61 20 68 65 72 65 # exit42 data here" 00 +:#ELF_end diff --git a/lib/linux/aarch64-mes/elf64-body-hello-mes.hex2 b/lib/linux/aarch64-mes/elf64-body-hello-mes.hex2 new file mode 100644 index 00000000..333cd647 --- /dev/null +++ b/lib/linux/aarch64-mes/elf64-body-hello-mes.hex2 @@ -0,0 +1,69 @@ +### GNU Mes --- Maxwell Equations of Software +### Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen +### +### This file is part of GNU Mes. +### +### GNU Mes is free software; you can redistribute it and/or modify it +### under the terms of the GNU General Public License as published by +### the Free Software Foundation; either version 3 of the License, or (at +### your option) any later version. +### +### GNU Mes is distributed in the hope that it will be useful, but +### WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +### GNU General Public License for more details. +### +### You should have received a copy of the GNU General Public License +### along with GNU Mes. If not, see . + +### Commentary: + +# elf64-body-exit-42.hex2: `exit 42' for x86_64-linux written in hex2 +# assembly, for usage with generic elf64-header.hex2 and +# elf64-footer-single-main.hex. + +# This ELF binary contains a symbol table, which means that objdump and +# gdb can be used to inspect and debug. + +### Code: + +# @300 +:ELF_text +:_start +^~main 14 # b main + +00 00 00 00 +00 00 00 00 +00 00 00 00 + +# @310 +:main + # print +08 08 80 d2 # mov x8, #64 +20 00 80 d2 # mov x0, #1 + +41 00 00 18 # ldr w1, .+8 +02 00 00 14 # b .+8 +&hello # .word hello + +42 00 00 18 # ldr w2, .+8 +02 00 00 14 # b .+8 +%end>hello # .word end-hello + +01 00 00 d4 # svc #0 + + # exit 0 +a8 0b 80 d2 # mov x8, #93 +e0 03 1f aa # mov x0, xzr +01 00 00 d4 # svc #0 +7f 20 03 d5 # wfi + +00 00 00 00 00 00 00 00 # align to @350 +00 00 00 00 +# @350 +:ELF_data +:hello +48 65 6c 6c 6f 2c 20 47 # Hello, G +4e 55 20 4d 65 73 21 0a # NU Mes!\n +:end +:ELF_end