]> git.sesse.net Git - pistorm/blob - platforms/amiga/hunk-reloc.h
afd6c0275eb725e72bd6e5a7be5c5f6b0859dc7a
[pistorm] / platforms / amiga / hunk-reloc.h
1 struct hunk_reloc {
2     uint32_t src_hunk;
3     uint32_t target_hunk;
4     uint32_t offset;
5 };
6
7 struct hunk_info {
8     uint16_t current_hunk;
9     uint16_t num_libs;
10     uint8_t *libnames[256];
11     uint32_t table_size;
12     uint32_t base_offset;
13     uint32_t first_hunk, last_hunk, num_hunks;
14     uint32_t reloc_hunks;
15     uint32_t *hunk_offsets;
16     uint32_t *hunk_sizes;
17 };
18
19 enum hunk_types {
20     HUNKTYPE_CODE = 0x3E9,
21     HUNKTYPE_DATA = 0x3EA,
22     HUNKTYPE_BSS = 0x3EB,
23     HUNKTYPE_HUNK_RELOC32 = 0x3EC,
24     HUNKTYPE_SYMBOL = 0x3F0,
25     HUNKTYPE_END = 0x3F2,
26     HUNKTYPE_HEADER = 0x3F3,
27 };
28
29 int process_hunk(uint32_t index, struct hunk_info *info, FILE *f, struct hunk_reloc *r);
30 void reloc_hunk(struct hunk_reloc *h, uint8_t *buf, struct hunk_info *i);
31 void process_hunks(FILE *in, struct hunk_info *h_info, struct hunk_reloc *r);
32 void reloc_hunks(struct hunk_reloc *r, uint8_t *buf, struct hunk_info *h_info);