#ifndef MR4TH_ELF_DUMP_H
#define MR4TH_ELF_DUMP_H

////////////////////////////////
// ELF DUMP Arguments Types

typedef struct ELFDUMP_Arguments{
  String8 input_file_name;
} ELFDUMP_Arguments;

////////////////////////////////
// ELF DUMP Types

typedef struct ELFDUMP_SymbolTable{
  ELF_Symbol64 *symbols;
  U32 count;
  U8 *string_table_first;
  U8 *string_table_opl;
} ELFDUMP_SymbolTable;

typedef struct ELFDUMP_Relocs{
  struct ELFDUMP_Relocs *next;
  U32 section_idx;
  U32 symbol_table_section_idx;
  U32 target_section_idx;
  U32 count;
  ELF_RelocationAdd64 *relocs;
} ELFDUMP_Relocs;

////////////////////////////////
// ELF DUMP Arguments Functions

MR4TH_SYMBOL_STATIC ELFDUMP_Arguments* elfdump_args(Arena *arena, String8List *args);

////////////////////////////////
// Entry Point

int main(int argc, char **argv);

#endif //MR4TH_ELF_DUMP_H
