summaryrefslogtreecommitdiff
path: root/test.pit
blob: c67246f3bca4ef6752c7a427acd51cb8e51e8a37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(let ( (elf (elf/new!))
       (entrypoint 0x696000)
       (toff 0x1000)
       (phdroff 0x2000)
       )
  (elf/write-bytes! elf toff
    '( 0x48 0xc7 0xc0 0x3c 0x00 0x00 0x00
       0x48 0xc7 0xc7 0x2a 0x00 0x00 0x00
       0x0f 0x05 ))
  (elf/write-program-header! elf (+ phdroff elf/64_PROGRAM_HEADER_SIZE)
    :type elf/PROGRAM_HEADER_TYPE_LOAD
    :offset toff
    :virtual-addr entrypoint
    :file-size 0x100
    :mem-size 0x100
    :flags (bitwise/or elf/PROGRAM_HEADER_FLAG_R elf/PROGRAM_HEADER_FLAG_X)
    )
  (elf/write-header! elf
    :type elf/TYPE_EXEC
    :machine elf/MACHINE_AMD64
    :program-header-offset phdroff
    :program-header-entry-size elf/64_PROGRAM_HEADER_SIZE
    :program-header-entries 2
    :section-header-offset 0
    :section-header-entry-size elf/64_SECTION_HEADER_SIZE
    :section-header-entries 0
    :entry entrypoint
    )
  (elf/spit! "test.elf" elf)
  )