PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
srxfixup_internal.h
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
11#ifndef __SRXFIXUP_INTERNAL_H__
12#define __SRXFIXUP_INTERNAL_H__
13
14#include <stdint.h>
15
16// Type definitions
17
18// srxfixup.c, elflib.c, elfdump.c, srxgen.c, readconf.c
19
20typedef short unsigned int Elf32_Half;
21typedef unsigned int Elf32_Addr;
22typedef unsigned int Elf32_Off;
23typedef unsigned int Elf32_Word;
24typedef int Elf32_SWord;
25typedef struct _Elf32_ehdr
26{
27 unsigned char e_ident[16];
28 Elf32_Half e_type;
29 Elf32_Half e_machine;
30 Elf32_Word e_version;
31 Elf32_Addr e_entry;
32 Elf32_Off e_phoff;
33 Elf32_Off e_shoff;
34 Elf32_Word e_flags;
35 Elf32_Half e_ehsize;
36 Elf32_Half e_phentsize;
37 Elf32_Half e_phnum;
38 Elf32_Half e_shentsize;
39 Elf32_Half e_shnum;
40 Elf32_Half e_shstrndx;
42typedef struct _Elf32_Phdr
43{
44 Elf32_Word p_type;
45 Elf32_Off p_offset;
46 Elf32_Addr p_vaddr;
47 Elf32_Addr p_paddr;
48 Elf32_Word p_filesz;
49 Elf32_Word p_memsz;
50 Elf32_Word p_flags;
51 Elf32_Word p_align;
53typedef struct _Elf32_Shdr
54{
55 Elf32_Word sh_name;
56 Elf32_Word sh_type;
57 Elf32_Word sh_flags;
58 Elf32_Addr sh_addr;
59 Elf32_Off sh_offset;
60 Elf32_Word sh_size;
61 Elf32_Word sh_link;
62 Elf32_Word sh_info;
63 Elf32_Word sh_addralign;
64 Elf32_Word sh_entsize;
66typedef struct _Elf32_Sym
67{
68 Elf32_Word st_name;
69 Elf32_Addr st_value;
70 Elf32_Word st_size;
71 unsigned char st_info;
72 unsigned char st_other;
73 Elf32_Half st_shndx;
74} Elf32_Sym;
75typedef struct _Elf_Note
76{
77 Elf32_Word namesz;
78 Elf32_Word descsz;
79 Elf32_Word type;
80 char name[];
81} Elf_Note;
82typedef struct _Elf32_Rel
83{
84 Elf32_Addr r_offset;
85 Elf32_Word r_info;
86} Elf32_Rel;
87typedef struct _Elf32_RegInfo
88{
89 Elf32_Word ri_gprmask;
90 Elf32_Word ri_cprmask[4];
91 Elf32_SWord ri_gp_value;
93typedef struct _Elf32_IopMod
94{
95 Elf32_Word moduleinfo;
96 Elf32_Addr entry;
97 Elf32_Addr gp_value;
98 Elf32_Word text_size;
99 Elf32_Word data_size;
100 Elf32_Word bss_size;
101 Elf32_Half moduleversion;
102 char modulename[];
104typedef struct _Elf32_EeMod
105{
106 Elf32_Word moduleinfo;
107 Elf32_Addr entry;
108 Elf32_Addr gp_value;
109 Elf32_Word text_size;
110 Elf32_Word data_size;
111 Elf32_Word bss_size;
112 Elf32_Addr erx_lib_addr;
113 Elf32_Word erx_lib_size;
114 Elf32_Addr erx_stub_addr;
115 Elf32_Word erx_stub_size;
116 Elf32_Half moduleversion;
117 char modulename[];
119typedef struct _hdrr
120{
121 short int magic;
122 short int vstamp;
123 unsigned int ilineMax;
124 unsigned int cbLine;
125 unsigned int cbLineOffset;
126 unsigned int idnMax;
127 unsigned int cbDnOffset;
128 unsigned int ipdMax;
129 unsigned int cbPdOffset;
130 unsigned int isymMax;
131 unsigned int cbSymOffset;
132 unsigned int ioptMax;
133 unsigned int cbOptOffset;
134 unsigned int iauxMax;
135 unsigned int cbAuxOffset;
136 unsigned int issMax;
137 unsigned int cbSsOffset;
138 unsigned int issExtMax;
139 unsigned int cbSsExtOffset;
140 unsigned int ifdMax;
141 unsigned int cbFdOffset;
142 unsigned int crfd;
143 unsigned int cbRfdOffset;
144 unsigned int iextMax;
145 unsigned int cbExtOffset;
146} hdrr;
147typedef struct _fdr
148{
149 unsigned int adr;
150 int rss;
151 int issBase;
152 int cbSs;
153 int isymBase;
154 int csym;
155 int ilineBase;
156 int cline;
157 int ioptBase;
158 int copt;
159 short unsigned int ipdFirst;
160 short int cpd;
161 int iauxBase;
162 int caux;
163 int rfdBase;
164 int crfd;
165 unsigned int fdr_bits;
166 int cbLineOffset;
167 int cbLine;
168} fdr;
169typedef struct _symr
170{
171 int iss;
172 int value;
173 unsigned int sy_bits;
174} symr;
175typedef struct _extr
176{
177 short int reserved;
178 short int ifd;
179 symr asym;
180} extr;
181typedef struct _dnr
182{
183 unsigned int d_rfd;
184 unsigned int d_index;
185} dnr;
186typedef struct _pdr
187{
188 unsigned int adr;
189 int isym;
190 int iline;
191 int regmask;
192 int regoffset;
193 int iopt;
194 int fregmask;
195 int fregoffset;
196 int frameoffset;
197 short int framereg;
198 short int pcreg;
199 int lnLow;
200 int lnHigh;
201 unsigned int cbLineOffset;
202} pdr;
203typedef struct _tir
204{
205 unsigned int fBitfield;
206 unsigned int continued;
207 unsigned int bt;
208 unsigned int tq4;
209 unsigned int tq5;
210 unsigned int tq0;
211 unsigned int tq1;
212 unsigned int tq2;
213 unsigned int tq3;
214} tir;
215typedef struct _rndxr
216{
217 unsigned int rfd;
218 unsigned int index;
219} rndxr;
220typedef union _auxu
221{
222 tir ti;
223 rndxr rndx;
224 int dnLow;
225 int dnHigh;
226 int isym;
227 int iss;
228 int width;
229 int count;
230} auxu;
231typedef struct _optr
232{
233 unsigned int optr_bits;
234 rndxr rndx;
235 unsigned int offset;
236} optr;
237typedef int rfdt;
238typedef struct _elf_mips_symbolic
239{
240 hdrr head;
241 char *cbLine_Ptr;
242 char *cbDn_Ptr;
243 char *cbPd_Ptr;
244 char *cbSym_Ptr;
245 char *cbOpt_Ptr;
246 char *cbAux_Ptr;
247 char *cbSs_Ptr;
248 char *cbSsExt_Ptr;
249 char *cbFd_Ptr;
250 char *cbRfd_Ptr;
251 char *cbExt_Ptr;
253typedef struct _elf_section
254{
255 Elf32_Shdr shr;
256 uint8_t *data;
257 const char *name;
258 unsigned int number;
259 struct _elf_section *link;
260 struct _elf_section *info;
261 void *optdata;
263typedef struct _syment
264{
265 Elf32_Sym sym;
266 const char *name;
267 unsigned int number;
268 int bind;
269 unsigned int type;
270 elf_section *shptr;
271 int refcount;
272} elf_syment;
273typedef struct _rel
274{
275 Elf32_Rel rel;
276 elf_syment *symptr;
277 unsigned int type;
278} elf_rel;
279typedef struct _elf_proghead
280{
281 Elf32_Phdr phdr;
282 elf_section **scp;
283 void *optdata; // Not used
285typedef struct _elffile
286{
287 Elf32_Ehdr *ehp;
288 elf_section *shstrptr;
289 elf_proghead *php;
290 elf_section **scp;
291 void *optdata;
292} elf_file;
293
294// elflib.c, elfdump.c, srxgen.c
295
296typedef struct _elf_file_slot
297{
298 unsigned int offset;
299 unsigned int size;
300 unsigned int align;
301 int type;
303 {
304 elf_proghead *php;
305 elf_section *scp;
306 } d;
308
309// readconf.c, srxfixup.c, srxgen.c
310
311typedef struct _segconf
312{
313 const char *name;
314 int bitid;
315 const char **sect_name_patterns;
316 elf_section *empty_section;
317 int nsect;
318 elf_section **scp;
319 unsigned int addr;
320 unsigned int size;
321} SegConf;
322typedef struct _pheader_info
323{
324 int sw;
326 {
327 const char *section_name;
328 SegConf **segment_list;
329 } d;
331typedef struct _sectconf
332{
333 const char *sect_name_pattern;
334 unsigned int flag;
335 int secttype;
336 int sectflag;
337} SectConf;
338typedef struct _crtsymconf
339{
340 const char *name;
341 int bind;
342 int type;
343 SegConf *segment;
344 const char *sectname;
345 int shindex;
346 int seflag;
348typedef struct _srx_gen_table
349{
350 int target;
351 SegConf *segment_list;
352 CreateSymbolConf *create_symbols;
353 PheaderInfo *program_header_order;
354 SectConf *section_list;
355 const char **removesection_list;
356 const char **section_table_order;
357 const char **file_layout_order;
359
360// anaarg.c, srxfixup.c
361
362typedef struct _opt_strings
363{
364 struct _opt_strings *next;
365 const char *string;
367typedef struct _opttable
368{
369 const char *option;
370 int havearg;
371 char vartype;
372 void *var;
373} Opttable;
374
375// ring.c, anaarg.c, srxfixup.c
376
377typedef struct _slink
378{
379 struct _slink *next;
380} SLink;
381
382// mipsdis.c, elfdump.c
383
384typedef enum OperandTag
385{
386 OprTag_none = 0,
387 OprTag_reg = 1,
388 OprTag_c0reg_iop = 2,
389 OprTag_c0reg_ee = 3,
390 OprTag_czreg = 4,
391 OprTag_c1reg = 5,
392 OprTag_imm = 6,
393 OprTag_shamt = 7,
394 OprTag_jtarget = 8,
395 OprTag_regoffset = 9,
396 OprTag_code20 = 10,
397 OprTag_code25 = 11
398} OperandTag;
399typedef struct operand
400{
401 enum OperandTag tag;
402 unsigned char reg;
403 unsigned int data;
404} Operand;
405typedef struct disasm_result
406{
407 unsigned int addr;
408 unsigned int data;
409 char mnemonic[16];
410 Operand operands[4];
412
413// Function definitions
414
415// anaarg.c
416extern int analize_arguments(const Opttable *dopttable, int argc, char **argv);
417
418// elfdump.c
419extern void print_elf(const elf_file *elf, unsigned int flag);
420extern void print_elf_ehdr(const elf_file *elf, unsigned int flag);
421extern void print_elf_phdr(const elf_file *elf, unsigned int flag);
422extern void print_elf_sections(const elf_file *elf, unsigned int flag);
423extern void print_elf_reloc(const elf_section *scp, unsigned int flag);
424extern void print_elf_disasm(const elf_file *elf, const elf_section *scp, unsigned int flag);
425extern void print_elf_datadump(const elf_file *elf, const elf_section *scp, unsigned int flag);
426extern void print_elf_symtbl(const elf_section *scp, unsigned int flag);
427extern void print_elf_mips_symbols(const elf_mips_symbolic_data *symbol, unsigned int flag);
428
429// elflib.c
430extern elf_file *read_elf(const char *filename);
431extern int layout_elf_file(elf_file *elf);
432extern int write_elf(elf_file *elf, const char *filename);
433extern void add_section(elf_file *elf, elf_section *scp);
434extern elf_section *remove_section(elf_file *elf, Elf32_Word shtype);
435extern elf_section *remove_section_by_name(elf_file *elf, const char *secname);
436extern elf_section *search_section(elf_file *elf, Elf32_Word stype);
437extern elf_section *search_section_by_name(elf_file *elf, const char *secname);
438extern unsigned int *get_section_data(elf_file *elf, unsigned int addr);
439extern elf_syment *search_global_symbol(const char *name, elf_file *elf);
440extern int is_defined_symbol(const elf_syment *sym);
441extern elf_syment *
442add_symbol(elf_file *elf, const char *name, int bind, int type, int value, elf_section *scp, int st_shndx);
443extern unsigned int get_symbol_value(const elf_syment *sym, const elf_file *elf);
444extern void reorder_symtab(elf_file *elf);
445extern unsigned int adjust_align(unsigned int value, unsigned int align);
446extern void rebuild_section_name_strings(elf_file *elf);
447extern void rebuild_symbol_name_strings(elf_file *elf);
448extern Elf_file_slot *build_file_order_list(const elf_file *elf);
449extern void shrink_file_order_list(Elf_file_slot *efs);
450extern void writeback_file_order_list(elf_file *elf, Elf_file_slot *efs);
451extern void dump_file_order_list(const elf_file *elf, const Elf_file_slot *efs);
452
453// mipsdis.c
454extern void gen_asmmacro(Disasm_result *result);
455extern void initdisasm(int arch, int regform0, int regform1, int regform2, int regform3);
456extern Disasm_result *disassemble(unsigned int addr, unsigned int data);
457extern void shex(char *buf, unsigned int data);
458extern void format_operand(const Operand *opr, char *buf);
459extern void format_disasm(Disasm_result *dis, char *buf);
460
461// readconf.c
462extern Srx_gen_table *read_conf(const char *indata, const char *infile, int dumpopt);
463
464// ring.c
465extern SLink *add_ring_top(SLink *tailp, SLink *elementp);
466extern SLink *add_ring_tail(SLink *tailp, SLink *elementp);
467extern SLink *joint_ring(SLink *tailp, SLink *otherring);
468extern SLink *ring_to_liner(SLink *tailp);
469
470// srxfixup.c
471extern void usage(const char *myname);
472extern void stripusage(const char *myname);
473
474// srxgen.c
475extern int convert_rel2srx(elf_file *elf, const char *entrysym, int needoutput, int cause_irx1);
476extern int layout_srx_file(elf_file *elf);
477extern void strip_elf(elf_file *elf);
478extern SegConf *lookup_segment(Srx_gen_table *conf, const char *segname, int msgsw);
479extern void fixlocation_elf(elf_file *elf, unsigned int startaddr);
480extern int relocation_is_version2(elf_section *relsect);
481extern void dump_srx_gen_table(Srx_gen_table *tp);
482
483// swapmem.c
484extern void swapmemory(void *aaddr, const char *format, unsigned int times);
485
486// eefixconf.c
487extern const char *ee_defaultconf;
488
489// iopfixconf.c
490extern const char *iop_defaultconf;
491
492enum Ei_class_name_enum
493{
494 ELFCLASSNONE = 0,
495 ELFCLASS32 = 1,
496 ELFCLASS64 = 2,
497};
498
499#define XEACH_Ei_class_name_enum() \
500 X(ELFCLASSNONE) \
501 X(ELFCLASS32) \
502 X(ELFCLASS64)
503
504enum E_type_name_enum
505{
506 ET_NONE = 0,
507 ET_REL = 1,
508 ET_EXEC = 2,
509 ET_DYN = 3,
510 ET_CORE = 4,
511 ET_SCE_IOPRELEXEC = 0xFF80,
512 ET_SCE_IOPRELEXEC2 = 0xFF81,
513 ET_SCE_EERELEXEC = 0xFF90,
514 ET_SCE_EERELEXEC2 = 0xFF91,
515};
516
517#define XEACH_E_type_name_enum() \
518 X(ET_NONE) \
519 X(ET_REL) \
520 X(ET_EXEC) \
521 X(ET_DYN) \
522 X(ET_CORE) \
523 X(ET_SCE_IOPRELEXEC) \
524 X(ET_SCE_IOPRELEXEC2) \
525 X(ET_SCE_EERELEXEC) \
526 X(ET_SCE_EERELEXEC2)
527
528enum Ei_data_name_enum
529{
530 ELFDATANONE = 0,
531 ELFDATA2LSB = 1,
532 ELFDATA2MSB = 2,
533};
534
535#define XEACH_Ei_data_name_enum() \
536 X(ELFDATANONE) \
537 X(ELFDATA2LSB) \
538 X(ELFDATA2MSB)
539
540enum E_version_name_enum
541{
542 EV_NONE = 0,
543 EV_CURRENT = 1,
544};
545
546#define XEACH_E_version_name_enum() \
547 X(EV_NONE) \
548 X(EV_CURRENT)
549
550enum E_machine_name_enum
551{
552 EM_NONE = 0,
553 EM_M32 = 1,
554 EM_SPARC = 2,
555 EM_386 = 3,
556 EM_68K = 4,
557 EM_88K = 5,
558 EM_860 = 7,
559 EM_MIPS = 8,
560 EM_MIPS_RS4_BE = 10,
561 EM_SPARC64 = 11,
562 EM_PARISC = 15,
563 EM_SPARC32PLUS = 18,
564 EM_PPC = 20,
565 EM_SH = 42,
566};
567
568#define XEACH_E_machine_name_enum() \
569 X(EM_NONE) \
570 X(EM_M32) \
571 X(EM_SPARC) \
572 X(EM_386) \
573 X(EM_68K) \
574 X(EM_88K) \
575 X(EM_860) \
576 X(EM_MIPS) \
577 X(EM_MIPS_RS4_BE) \
578 X(EM_SPARC64) \
579 X(EM_PARISC) \
580 X(EM_SPARC32PLUS) \
581 X(EM_PPC) \
582 X(EM_SH)
583
584enum P_type_name_enum
585{
586 PT_NULL = 0,
587 PT_LOAD = 1,
588 PT_DYNAMIC = 2,
589 PT_INTERP = 3,
590 PT_NOTE = 4,
591 PT_SHLIB = 5,
592 PT_PHDR = 6,
593 PT_MIPS_REGINFO = 0x70000000,
594 PT_MIPS_RTPROC = 0x70000001,
595 PT_SCE_IOPMOD = 0x70000080,
596 PT_SCE_EEMOD = 0x70000090,
597};
598
599#define XEACH_P_type_name_enum() \
600 X(PT_NULL) \
601 X(PT_LOAD) \
602 X(PT_DYNAMIC) \
603 X(PT_INTERP) \
604 X(PT_NOTE) \
605 X(PT_SHLIB) \
606 X(PT_PHDR) \
607 X(PT_MIPS_REGINFO) \
608 X(PT_MIPS_RTPROC) \
609 X(PT_SCE_IOPMOD) \
610 X(PT_SCE_EEMOD)
611
612enum S_type_name_enum
613{
614 SHT_NULL = 0,
615 SHT_PROGBITS = 1,
616 SHT_SYMTAB = 2,
617 SHT_STRTAB = 3,
618 SHT_RELA = 4,
619 SHT_HASH = 5,
620 SHT_DYNAMIC = 6,
621 SHT_NOTE = 7,
622 SHT_NOBITS = 8,
623 SHT_REL = 9,
624 SHT_SHLIB = 10,
625 SHT_DYNSYM = 11,
626 SHT_MIPS_LIBLIST = 0x70000000,
627 SHT_MIPS_CONFLICT = 0x70000002,
628 SHT_MIPS_GPTAB = 0x70000003,
629 SHT_MIPS_UCODE = 0x70000004,
630 SHT_MIPS_DEBUG = 0x70000005,
631 SHT_MIPS_REGINFO = 0x70000006,
632 SHT_SCE_IOPMOD = 0x70000080,
633 SHT_SCE_EEMOD = 0x70000090,
634};
635
636#define XEACH_S_type_name_enum() \
637 X(SHT_NULL) \
638 X(SHT_PROGBITS) \
639 X(SHT_SYMTAB) \
640 X(SHT_STRTAB) \
641 X(SHT_RELA) \
642 X(SHT_HASH) \
643 X(SHT_DYNAMIC) \
644 X(SHT_NOTE) \
645 X(SHT_NOBITS) \
646 X(SHT_REL) \
647 X(SHT_SHLIB) \
648 X(SHT_DYNSYM) \
649 X(SHT_MIPS_LIBLIST) \
650 X(SHT_MIPS_CONFLICT) \
651 X(SHT_MIPS_GPTAB) \
652 X(SHT_MIPS_UCODE) \
653 X(SHT_MIPS_DEBUG) \
654 X(SHT_MIPS_REGINFO) \
655 X(SHT_SCE_IOPMOD) \
656 X(SHT_SCE_EEMOD)
657
658enum R_MIPS_Type_enum
659{
660 R_MIPS_NONE = 0,
661 R_MIPS_16 = 1,
662 R_MIPS_32 = 2,
663 R_MIPS_REL32 = 3,
664 R_MIPS_26 = 4,
665 R_MIPS_HI16 = 5,
666 R_MIPS_LO16 = 6,
667 R_MIPS_GPREL16 = 7,
668 R_MIPS_LITERAL = 8,
669 R_MIPS_GOT16 = 9,
670 R_MIPS_PC16 = 10,
671 R_MIPS_CALL16 = 11,
672 R_MIPS_GPREL32 = 12,
673 R_MIPS_GOTHI16 = 21,
674 R_MIPS_GOTLO16 = 22,
675 R_MIPS_CALLHI16 = 30,
676 R_MIPS_CALLLO16 = 31,
677 R_MIPS_DVP_11_PCREL = 120,
678 R_MIPS_DVP_27_S4 = 121,
679 R_MIPS_DVP_11_S4 = 122,
680 R_MIPS_DVP_U15_S3 = 123,
681 R_MIPSSCE_MHI16 = 250,
682 R_MIPSSCE_ADDEND = 251,
683};
684
685#define XEACH_R_MIPS_Type_enum() \
686 X(R_MIPS_NONE) \
687 X(R_MIPS_16) \
688 X(R_MIPS_32) \
689 X(R_MIPS_REL32) \
690 X(R_MIPS_26) \
691 X(R_MIPS_HI16) \
692 X(R_MIPS_LO16) \
693 X(R_MIPS_GPREL16) \
694 X(R_MIPS_LITERAL) \
695 X(R_MIPS_GOT16) \
696 X(R_MIPS_PC16) \
697 X(R_MIPS_CALL16) \
698 X(R_MIPS_GPREL32) \
699 X(R_MIPS_GOTHI16) \
700 X(R_MIPS_GOTLO16) \
701 X(R_MIPS_CALLHI16) \
702 X(R_MIPS_CALLLO16) \
703 X(R_MIPS_DVP_11_PCREL) \
704 X(R_MIPS_DVP_27_S4) \
705 X(R_MIPS_DVP_11_S4) \
706 X(R_MIPS_DVP_U15_S3) \
707 X(R_MIPSSCE_MHI16) \
708 X(R_MIPSSCE_ADDEND)
709
710enum SymbolBinding_enum
711{
712 STB_LOCAL = 0,
713 STB_GLOBAL = 1,
714 STB_WEAK = 2,
715};
716
717#define XEACH_SymbolBinding_enum() \
718 X(STB_LOCAL) \
719 X(STB_GLOBAL) \
720 X(STB_WEAK)
721
722enum SymbolType_enum
723{
724 STT_NOTYPE = 0,
725 STT_OBJECT = 1,
726 STT_FUNC = 2,
727 STT_SECTION = 3,
728 STT_FILE = 4,
729};
730
731#define XEACH_SymbolType_enum() \
732 X(STT_NOTYPE) \
733 X(STT_OBJECT) \
734 X(STT_FUNC) \
735 X(STT_SECTION) \
736 X(STT_FILE)
737
738enum SymbolSpSection_enum
739{
740 SHN_UNDEF = 0,
741 SHN_MIPS_ACOMMON = 0xFF00,
742 SHN_MIPS_TEXT = 0xFF01,
743 SHN_MIPS_DATA = 0xFF02,
744 SHN_MIPS_SCOMMON = 0xFF03,
745 SHN_MIPS_SUNDEFINED = 0xFF04,
746 SHN_RADDR = 0xFF1F,
747 SHN_ABS = 0xFFF1,
748 SHN_COMMON = 0xFFF2,
749};
750
751#define XEACH_SymbolSpSection_enum() \
752 X(SHN_UNDEF) \
753 X(SHN_MIPS_ACOMMON) \
754 X(SHN_MIPS_TEXT) \
755 X(SHN_MIPS_DATA) \
756 X(SHN_MIPS_SCOMMON) \
757 X(SHN_MIPS_SUNDEFINED) \
758 X(SHN_RADDR) \
759 X(SHN_ABS) \
760 X(SHN_COMMON)
761
762enum SymbolTypes_enum
763{
764 stNil = 0,
765 stGlobal = 1,
766 stStatic = 2,
767 stParam = 3,
768 stLocal = 4,
769 stLabel = 5,
770 stProc = 6,
771 stBlock = 7,
772 stEnd = 8,
773 stMember = 9,
774 stTypedef = 10,
775 stFile = 11,
776 stRegReloc = 12,
777 stForward = 13,
778 stStaticProc = 14,
779 stConstant = 15,
780 stStaParam = 16,
781 stStruct = 26,
782 stUnion = 27,
783 stEnum = 28,
784 stIndirect = 34,
785 stStr = 60,
786 stNumber = 61,
787 stExpr = 62,
788 stType = 63,
789 stMax = 64,
790};
791
792#define XEACH_SymbolTypes_enum() \
793 X(stNil) \
794 X(stGlobal) \
795 X(stStatic) \
796 X(stParam) \
797 X(stLocal) \
798 X(stLabel) \
799 X(stProc) \
800 X(stBlock) \
801 X(stEnd) \
802 X(stMember) \
803 X(stTypedef) \
804 X(stFile) \
805 X(stRegReloc) \
806 X(stForward) \
807 X(stStaticProc) \
808 X(stConstant) \
809 X(stStaParam) \
810 X(stStruct) \
811 X(stUnion) \
812 X(stEnum) \
813 X(stIndirect) \
814 X(stStr) \
815 X(stNumber) \
816 X(stExpr) \
817 X(stType) \
818 X(stMax)
819
820enum StorageClasse_enum
821{
822 scNil = 0,
823 scText = 1,
824 scData = 2,
825 scBss = 3,
826 scRegister = 4,
827 scAbs = 5,
828 scUndef = 6,
829 scUndefined = 6,
830 scCdbLocal = 7,
831 scBits = 8,
832 scCdbSystem = 9,
833 scDbx = 9,
834 scRegImage = 10,
835 scInfo = 11,
836 scUserStruct = 12,
837 scSData = 13,
838 scSBss = 14,
839 scRData = 15,
840 scVar = 16,
841 scCommon = 17,
842 scSCommon = 18,
843 scVarRegister = 19,
844 scVariant = 20,
845 scSUndefined = 21,
846 scInit = 22,
847 scBasedVar = 23,
848 scXData = 24,
849 scPData = 25,
850 scFini = 26,
851 scRConst = 27,
852 scMax = 32,
853};
854
855#define XEACH_StorageClasse_enum() \
856 X(scNil) \
857 X(scText) \
858 X(scData) \
859 X(scBss) \
860 X(scRegister) \
861 X(scAbs) \
862 X(scUndef) \
863 X(scUndefined) \
864 X(scCdbLocal) \
865 X(scBits) \
866 X(scCdbSystem) \
867 X(scDbx) \
868 X(scRegImage) \
869 X(scInfo) \
870 X(scUserStruct) \
871 X(scSData) \
872 X(scSBss) \
873 X(scRData) \
874 X(scVar) \
875 X(scCommon) \
876 X(scSCommon) \
877 X(scVarRegister) \
878 X(scVariant) \
879 X(scSUndefined) \
880 X(scInit) \
881 X(scBasedVar) \
882 X(scXData) \
883 X(scPData) \
884 X(scFini) \
885 X(scRConst) \
886 X(scMax)
887
888enum elf_header_flags
889{
890 EF_MIPS_NOREORDER = 1,
891 EF_MIPS_PIC = 2,
892 EF_MIPS_CPIC = 4,
893 EF_MIPS_MACH = 0x00FF0000,
894 EF_MIPS_MACH_5900 = 0x00920000,
895 EF_MIPS_ARCH_3 = 0x20000000,
896 EF_MIPS_ARCH = 0xF0000000,
897};
898
899enum elf_program_header_flags
900{
901 PF_X = 1,
902 PF_W = 2,
903 PF_R = 4,
904};
905
906enum elf_section_header_flags
907{
908 SHF_WRITE = 1,
909 SHF_ALLOC = 2,
910 SHF_EXECINSTR = 4,
911 SHF_MIPS_GPREL = 0x10000000,
912};
913
914enum anaarg_havearg_param
915{
916 ARG_HAVEARG_NONE = 0,
917 ARG_HAVEARG_UNK1 = 1,
918 ARG_HAVEARG_REQUIRED = 2,
919 ARG_HAVEARG_UNK3 = 3,
920 ARG_HAVEARG_UNK4 = 4,
921};
922
923enum elf_file_slot_type
924{
925 EFS_TYPE_NONE = 0,
926 EFS_TYPE_ELF_HEADER = 1,
927 EFS_TYPE_PROGRAM_HEADER_TABLE = 2,
928 EFS_TYPE_PROGRAM_HEADER_ENTRY = 3,
929 EFS_TYPE_SECTION_HEADER_TABLE = 4,
930 EFS_TYPE_SECTION_DATA = 5,
931 EFS_TYPE_END = 100,
932};
933
934enum srx_target_enum
935{
936 SRX_TARGET_IOP = 1,
937 SRX_TARGET_EE = 2,
938};
939
940enum srx_program_header_type
941{
942 SRX_PH_TYPE_MOD = 1,
943 SRX_PH_TYPE_TEXT = 2,
944};
945
946#endif
Definition main.c:242