#! /bin/sh

mkdir -p out || exit 99

name=$( basename "$0" )
datafile="$srcdir/${name}.data"
dumpfile="out/${name}.dump"
resultfile="out/${name}.result"
expectfile="$srcdir/${name}.expect"

./mkelf "$dumpfile" <<EOF
ei_class = 2
ei_data = 1
e_machine = 62
e_phoff = 0x1000

DATA = $datafile
EOF
rc=$?
if [ $rc -ne 0 ]; then
    echo "Cannot create ELF file" >&2
    exit $rc
fi
echo "Created ELF dump: $dumpfile"

./checkattr "$dumpfile" <<EOF
file = directory:
file.set.number = number:1
file.set.0 = directory:
file.set.0.fd = number
file.format = string: elf

cpu = directory:
cpu.qemu_number = number:1
cpu.0 = directory:
cpu.0.QEMU_CPUSTATE = blob:\
01000000b8010000\
20202020207261782020202020726278\
20202020207263782020202020726478\
20202020207273692020202020726469\
20202020207273702020202020726270\
20202020202072382020202020207239\
20202020207231302020202020723131\
20202020207231322020202020723133\
20202020207231342020202020723135\
2020202020726970202072666c616773\
2020637363735f6c63735f66000000002063735f62617365\
2020647364735f6c64735f66000000002064735f62617365\
2020657365735f6c65735f66000000002065735f62617365\
2020667366735f6c66735f66000000002066735f62617365\
2020677367735f6c67735f66000000002067735f62617365\
2020737373735f6c73735f66000000002073735f62617365\
206c64746c64746c6c647466000000006c64745f62617365\
2020747274725f6c74725f66000000002074725f62617365\
000000006764746c00000000000000006764745f62617365\
000000006964746c00000000000000006964745f62617365\
20202020206372302020202020637231\
20202020206372322020202020637233\
20202020206372346b67735f62617365
cpu.0.reg = directory:
cpu.0.reg.rax = number:0x7861722020202020
cpu.0.reg.rbx = number:0x7862722020202020
cpu.0.reg.rcx = number:0x7863722020202020
cpu.0.reg.rdx = number:0x7864722020202020
cpu.0.reg.rsi = number:0x6973722020202020
cpu.0.reg.rdi = number:0x6964722020202020
cpu.0.reg.rsp = number:0x7073722020202020
cpu.0.reg.rbp = number:0x7062722020202020
cpu.0.reg.r8 = number:0x3872202020202020
cpu.0.reg.r9 = number:0x3972202020202020
cpu.0.reg.r10 = number:0x3031722020202020
cpu.0.reg.r11 = number:0x3131722020202020
cpu.0.reg.r12 = number:0x3231722020202020
cpu.0.reg.r13 = number:0x3331722020202020
cpu.0.reg.r14 = number:0x3431722020202020
cpu.0.reg.r15 = number:0x3531722020202020
cpu.0.reg.rip = number:0x7069722020202020
cpu.0.reg.rflags = number:0x7367616c66722020
cpu.0.reg.cs = number:0x73632020
cpu.0.reg.cs_limit = number:0x6c5f7363
cpu.0.reg.cs_flags = number:0x665f7363
cpu.0.reg.cs_base = number:0x657361625f736320
cpu.0.reg.ds = number:0x73642020
cpu.0.reg.ds_limit = number:0x6c5f7364
cpu.0.reg.ds_flags = number:0x665f7364
cpu.0.reg.ds_base = number:0x657361625f736420
cpu.0.reg.es = number:0x73652020
cpu.0.reg.es_limit = number:0x6c5f7365
cpu.0.reg.es_flags = number:0x665f7365
cpu.0.reg.es_base = number:0x657361625f736520
cpu.0.reg.fs = number:0x73662020
cpu.0.reg.fs_limit = number:0x6c5f7366
cpu.0.reg.fs_flags = number:0x665f7366
cpu.0.reg.fs_base = number:0x657361625f736620
cpu.0.reg.gs = number:0x73672020
cpu.0.reg.gs_limit = number:0x6c5f7367
cpu.0.reg.gs_flags = number:0x665f7367
cpu.0.reg.gs_base = number:0x657361625f736720
cpu.0.reg.ss = number:0x73732020
cpu.0.reg.ss_limit = number:0x6c5f7373
cpu.0.reg.ss_flags = number:0x665f7373
cpu.0.reg.ss_base = number:0x657361625f737320
cpu.0.reg.ldt = number:0x74646c20
cpu.0.reg.ldt_limit = number:0x6c74646c
cpu.0.reg.ldt_flags = number:0x6674646c
cpu.0.reg.ldt_base = number:0x657361625f74646c
cpu.0.reg.tr = number:0x72742020
cpu.0.reg.tr_limit = number:0x6c5f7274
cpu.0.reg.tr_flags = number:0x665f7274
cpu.0.reg.tr_base = number:0x657361625f727420
cpu.0.reg.gdt_limit = number:0x6c746467
cpu.0.reg.gdt_base = number:0x657361625f746467
cpu.0.reg.idt_limit = number:0x6c746469
cpu.0.reg.idt_base = number:0x657361625f746469
cpu.0.reg.cr0 = number:0x3072632020202020
cpu.0.reg.cr1 = number:0x3172632020202020
cpu.0.reg.cr2 = number:0x3272632020202020
cpu.0.reg.cr3 = number:0x3372632020202020
cpu.0.reg.cr4 = number:0x3472632020202020
EOF
rc=$?
if [ $rc -ne 0 ]; then
    echo "Attribute check failed" >&2
    exit $rc
fi

exit 0
