11#ifndef __ELF_LOADER_COMMON_H__
12#define __ELF_LOADER_COMMON_H__
14#include <elf-loader.h>
23#define ELF_LOADER_MAX_PROGRAM_HEADERS 32
65#define ELF_LOADER_MAX_LOADERINFO_ITEMS (ELF_LOADER_MAX_PROGRAM_HEADERS + 3)
89 size_t m_segment_size;
92 typedef enum elf_loader_reader_stage_
94 ELF_LOADER_READER_STAGE_ELF_HEADER,
95 ELF_LOADER_READER_STAGE_PROGRAM_HEADERS,
96 ELF_LOADER_READER_STAGE_SEGMENTS,
97 ELF_LOADER_READER_STAGE_END,
98 } elf_loader_reader_stage_t;
100 typedef void *(*elf_loader_reader_allocation_callback_t)(
101 void *userdata,
void *pointer, ptrdiff_t old_size, ptrdiff_t new_size);
102 typedef int (*elf_loader_reader_read_callback_t)(
104 elf_loader_reader_stage_t stage,
107 typedef void (*elf_loader_reader_result_callback_t)(
108 void *userdata,
void *pointer, ptrdiff_t pointer_size,
int errval);
112 elf_loader_reader_allocation_callback_t m_alloc_callback;
113 elf_loader_reader_read_callback_t m_read_callback;
114 elf_loader_reader_result_callback_t m_result_callback;
126 extern int elf_loader_is_elf_valid_for_loading(
const void *buf,
size_t buf_size);
127 extern int elf_loader_exec_elf_prepare_loadinfo(
elf_loader_execinfo_t *execinfo,
const void *buf,
size_t buf_size);
128 extern int elf_loader_exec_elf_prepare_arginfo(
136 extern int elf_loader_reader_read_elf_file_stdio(