33#define ELF_INFO_DEBUG_HEADER 0x0001
34#define ELF_INFO_MODULE 0x0002
35#define ELF_INFO_NAME 0x0004
93#define ELF_SHT_PROGBITS 1
94#define ELF_SHT_SYMTAB 2
95#define ELF_SHT_STRTAB 3
98#define ELF_SHT_DYNAMIC 6
100#define ELF_SHT_NOBITS 8
102#define ELF_SHT_SHLIB 10
103#define ELF_SHT_DYNSYM 11
104#define ELF_SHT_INIT_ARRAY 14
105#define ELF_SHT_FINI_ARRAY 15
106#define ELF_SHT_PREINIT_ARRAY 16
107#define ELF_SHT_GROUP 17
108#define ELF_SHT_SYMTAB_SHNDX 18
109#define ELF_SHT_NUM 19
112#define ELF_STT_NOTYPE 0
113#define ELF_STT_OBJECT 1
114#define ELF_STT_FUNC 2
115#define ELF_STT_SECTION 3
116#define ELF_STT_FILE 4
120#define ELF_DT_DEBUG 21
122#define ELF_AT_SYSINFO_EHDR 33
131 struct elf_file_map* fmap = &ism->
fmap->u.elf;
136 if (ism->
sidx < 0 || ism->
sidx >= ism->
fmap->u.elf.elfhdr.e_shnum ||
140 if (fmap->target_copy)
142 return fmap->target_copy + fmap->sect[ism->
sidx].shdr.sh_offset;
147 size = fmap->sect[ism->
sidx].shdr.sh_offset + fmap->sect[ism->
sidx].shdr.sh_size - ofst;
150 ERR(
"map creation %p failed %u offset %lu %lu size %lu\n", fmap->handle,
GetLastError(), ofst, ofst % 4096,
size);
155 if (!fmap->sect[ism->
sidx].mapped)
157 ERR(
"map %p failed %u offset %lu %lu size %lu\n", fmap->handle,
GetLastError(), ofst, ofst % 4096,
size);
171 struct elf_file_map* fmap = &_fmap->
u.
elf;
179 for (
i = 0;
i <
fmap->elfhdr.e_shnum;
i++)
193 struct elf_file_map* fmap;
199 fmap = &_fmap->
u.
elf;
205 for (
i = 0;
i <
fmap->elfhdr.e_shnum;
i++)
228 struct elf_file_map* fmap = &ism->
fmap->u.elf;
230 if (ism->
sidx >= 0 && ism->
sidx < fmap->elfhdr.e_shnum && !fmap->target_copy &&
231 fmap->sect[ism->
sidx].mapped)
234 WARN(
"Couldn't unmap the section\n");
235 fmap->sect[ism->
sidx].mapped =
NULL;
246 ism.
sidx =
fmap->u.elf.elfhdr.e_shstrndx;
260 if (ism->
sidx < 0 || ism->
sidx >= ism->
fmap->u.elf.elfhdr.e_shnum)
262 return ism->
fmap->u.elf.sect[ism->
sidx].shdr.sh_addr - ism->
fmap->u.elf.elf_start;
272 if (ism->
sidx < 0 || ism->
sidx >= ism->
fmap->u.elf.elfhdr.e_shnum)
274 return ism->
fmap->u.elf.sect[ism->
sidx].shdr.sh_size;
336 void*
buf,
size_t len,
size_t off)
378 fmap->
u.
elf.elfhdr.e_shoff +
i *
sizeof(shdr32)))
381 fmap->
u.
elf.sect[
i].shdr.sh_name = shdr32.sh_name;
382 fmap->
u.
elf.sect[
i].shdr.sh_type = shdr32.sh_type;
383 fmap->
u.
elf.sect[
i].shdr.sh_flags = shdr32.sh_flags;
384 fmap->
u.
elf.sect[
i].shdr.sh_addr = shdr32.sh_addr;
385 fmap->
u.
elf.sect[
i].shdr.sh_offset = shdr32.sh_offset;
386 fmap->
u.
elf.sect[
i].shdr.sh_size = shdr32.sh_size;
387 fmap->
u.
elf.sect[
i].shdr.sh_link = shdr32.sh_link;
388 fmap->
u.
elf.sect[
i].shdr.sh_info = shdr32.sh_info;
389 fmap->
u.
elf.sect[
i].shdr.sh_addralign = shdr32.sh_addralign;
390 fmap->
u.
elf.sect[
i].shdr.sh_entsize = shdr32.sh_entsize;
395 fmap->
u.
elf.elfhdr.e_shoff +
i *
sizeof(fmap->
u.
elf.sect[
i].shdr)))
439 if (
memcmp(e_ident,
"\177ELF", 4))
442 fmap->
addr_size = e_ident[4] == 2 ? 64 : 32;
467 memcpy(fmap->
u.
elf.elfhdr.e_ident, elfhdr32.e_ident,
sizeof(e_ident));
468 fmap->
u.
elf.elfhdr.e_type = elfhdr32.e_type;
469 fmap->
u.
elf.elfhdr.e_machine = elfhdr32.e_machine;
470 fmap->
u.
elf.elfhdr.e_version = elfhdr32.e_version;
471 fmap->
u.
elf.elfhdr.e_entry = elfhdr32.e_entry;
472 fmap->
u.
elf.elfhdr.e_phoff = elfhdr32.e_phoff;
473 fmap->
u.
elf.elfhdr.e_shoff = elfhdr32.e_shoff;
474 fmap->
u.
elf.elfhdr.e_flags = elfhdr32.e_flags;
475 fmap->
u.
elf.elfhdr.e_ehsize = elfhdr32.e_ehsize;
476 fmap->
u.
elf.elfhdr.e_phentsize = elfhdr32.e_phentsize;
477 fmap->
u.
elf.elfhdr.e_phnum = elfhdr32.e_phnum;
478 fmap->
u.
elf.elfhdr.e_shentsize = elfhdr32.e_shentsize;
479 fmap->
u.
elf.elfhdr.e_shnum = elfhdr32.e_shnum;
480 fmap->
u.
elf.elfhdr.e_shstrndx = elfhdr32.e_shstrndx;
489 fmap->
u.
elf.elfhdr.e_shnum *
sizeof(fmap->
u.
elf.sect[0]));
492 for (
i = 0;
i < fmap->
u.
elf.elfhdr.e_shnum;
i++)
504 fmap->
u.
elf.elf_size = 0;
505 fmap->
u.
elf.elf_start = ~0
L;
506 for (
i = 0;
i < fmap->
u.
elf.elfhdr.e_phnum;
i++)
523 fmap->
u.
elf.elfhdr.e_phoff +
i *
sizeof(phdr)) &&
527 if (fmap->
u.
elf.elf_size < tmp) fmap->
u.
elf.elf_size = tmp;
528 if (phdr.p_vaddr < fmap->
u.
elf.elf_start) fmap->
u.
elf.elf_start = phdr.p_vaddr;
546 fmap->
u.
elf.elfhdr.e_phoff +
i *
sizeof(phdr)) &&
550 if (fmap->
u.
elf.elf_size < tmp) fmap->
u.
elf.elf_size = tmp;
551 if (phdr.p_vaddr < fmap->
u.
elf.elf_start) fmap->
u.
elf.elf_start = phdr.p_vaddr;
558 fmap->
u.
elf.elf_size -= fmap->
u.
elf.elf_start;
563 case from_file:
break;
607 if (thunks)
for (
i = 0; thunks[
i].
symname;
i++)
609 if (
addr >= thunks[
i].rva_start &&
addr < thunks[
i].rva_end)
647 for (j = 0; thunks[j].symname; j++)
648 thunks[
j].rva_start = thunks[
j].rva_end = 0;
650 for (i = 0; i < nsym; i++)
655 if (fmap->addr_size == 32)
667 sym = ((
struct elf_sym *)symtab)[
i];
669 type = sym.st_info & 0xf;
680 symname = strp + sym.st_name;
696 if (!
strcmp(symname, thunks[
j].symname))
699 thunks[
j].
rva_end = sym.st_value + sym.st_size;
709 if (symname[0] ==
'.' && symname[1] ==
'L' &&
isdigit(symname[2]))
713 ste->
ht_elt.name = symname;
725 if (
ptr > symname && *
ptr ==
'.')
729 n[
ptr - symname] =
'\0';
751 const char*
name,
const struct symt* compiland)
757 const char* compiland_name;
758 const char* compiland_basename;
769 compiland_basename =
file_nameA(compiland_name);
771 else compiland_name = compiland_basename =
NULL;
787 if (
strcmp(
base, compiland_basename))
continue;
792 FIXME(
"Already found symbol %s (%s) in symtab %s @%08x and %s @%08x\n",
793 name, compiland_name,
805 FIXME(
"Couldn't find symbol %s!%s in symtab\n",
835 switch (sym->
symt.tag)
849 FIXME(
"Changing address for %p/%s!%s from %08lx to %s\n",
854 FIXME(
"Changing size for %p/%s!%s from %08lx to %08x\n",
861 FIXME(
"Couldn't find %s!%s\n",
878 FIXME(
"Changing address for %p/%s!%s from %08lx to %s\n",
886 FIXME(
"Couldn't find %s!%s\n",
893 FIXME(
"Unsupported tag %u\n", sym->
symt.tag);
918 if (ste->
used)
continue;
942 switch (ste->
sym.st_info & 0xf)
957 FIXME(
"Shouldn't happen\n");
1026 {
"__wine_spec_thunk_text_16", -16, 0, 0},
1027 {
"__wine_spec_thunk_text_32", -32, 0, 0},
1047 const char* stabstr;
1062 WARN(
"Couldn't correctly read stabs\n");
1147 if (load_offset)
ptr += load_offset -
fmap->u.elf.elf_start;
1149 if (
fmap->addr_size == 32)
1165 if (load_offset == 0 && dyn_addr == 0)
1168 dyn_addr = ism.
fmap->u.elf.sect[ism.
sidx].shdr.sh_addr;
1172 }
while (dyn.d_tag);
1173 if (!dyn.d_tag)
return ret;
1191 if (load_offset == 0 && dyn_addr == 0)
1194 dyn_addr = ism.
fmap->u.elf.sect[ism.
sidx].shdr.sh_addr;
1198 }
while (dyn.d_tag);
1199 if (!dyn.d_tag)
return ret;
1216 TRACE(
"For module %s, got ELF (start=%lx dyn=%lx), link_map (start=%lx dyn=%lx)\n",
1218 load_offset, dyn_addr);
1219 if (dyn_addr && load_offset + rva_dyn != dyn_addr)
1221 WARN(
"\thave to relocate: %lx\n", dyn_addr - rva_dyn);
1222 modbase = dyn_addr - rva_dyn;
1229 if (!modfmt)
return FALSE;
1304 if (!fmap.
u.
elf.elf_start && !load_offset)
1305 ERR(
"Relocatable ELF %s, but no load address. Loading at 0x0000000\n",
1342 si->SizeOfStruct =
sizeof(*si);
1349 FIXME(
"can't find symbol in module\n");
1357 str_max =
min(str_max,
str);
1376 if (auxv.a_type ==
type)
1381 addr +=
sizeof(auxv);
1394 if (auxv.a_type ==
type)
1399 addr +=
sizeof(auxv);
1417 static const WCHAR S_libstdcPPW[] = {
'l',
'i',
'b',
's',
't',
'd',
'c',
'+',
'+',
'\0'};
1455 const WCHAR* main_name,
1488 for (lm_addr = dbg_hdr.r_map; lm_addr; lm_addr = lm.l_next)
1496 bufstr[
sizeof(bufstr) - 1] =
'\0';
1498 if (main_name && !bufstrW[0])
lstrcpyW(bufstrW, main_name);
1530 for (lm_addr = dbg_hdr.r_map; lm_addr; lm_addr = lm.l_next)
1538 bufstr[
sizeof(bufstr) - 1] =
'\0';
1540 if (main_name && !bufstrW[0])
lstrcpyW(bufstrW, main_name);
1553 static const WCHAR vdsoW[] = {
'[',
'v',
'd',
's',
'o',
']',
'.',
's',
'o',0};
1629 emfd.
kind = from_process;
1670 if (
pcs->dbg_hdr_addr)
unsigned long long UINT64
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
static BOOL heap_free(void *mem)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void user(int argc, const char *argv[])
struct symt_thunk * symt_new_thunk(struct module *module, struct symt_compiland *parent, const char *name, THUNK_ORDINAL ord, ULONG_PTR addr, ULONG_PTR size) DECLSPEC_HIDDEN
struct symt_function * symt_new_function(struct module *module, struct symt_compiland *parent, const char *name, ULONG_PTR addr, ULONG_PTR size, struct symt *type) DECLSPEC_HIDDEN
void hash_table_init(struct pool *pool, struct hash_table *ht, unsigned num_buckets) DECLSPEC_HIDDEN
BOOL search_dll_path(const struct process *process, const WCHAR *name, BOOL(*match)(void *, HANDLE, const WCHAR *), void *param) DECLSPEC_HIDDEN
const char * file_nameA(const char *str) DECLSPEC_HIDDEN
BOOL dwarf2_parse(struct module *module, ULONG_PTR load_offset, const struct elf_thunk_area *thunks, struct image_file_map *fmap) DECLSPEC_HIDDEN
void * pool_alloc(struct pool *a, size_t len) DECLSPEC_HIDDEN
BOOL stabs_parse(struct module *module, ULONG_PTR load_offset, const char *stabs, size_t nstab, size_t stabsize, const char *strs, int strtablen, stabs_def_cb callback, void *user) DECLSPEC_HIDDEN
WCHAR * get_dos_file_name(const WCHAR *filename) DECLSPEC_HIDDEN
static BOOL read_process_memory(const struct process *process, UINT64 addr, void *buf, size_t size)
void pool_init(struct pool *a, size_t arena_size) DECLSPEC_HIDDEN
void pool_destroy(struct pool *a) DECLSPEC_HIDDEN
unsigned source_new(struct module *module, const char *basedir, const char *source) DECLSPEC_HIDDEN
struct symt_public * symt_new_public(struct module *module, struct symt_compiland *parent, const char *typename, BOOL is_function, ULONG_PTR address, unsigned size) DECLSPEC_HIDDEN
void hash_table_iter_init(const struct hash_table *ht, struct hash_table_iter *hti, const char *name) DECLSPEC_HIDDEN
WCHAR * get_wine_loader_name(struct process *pcs) DECLSPEC_HIDDEN
BOOL(* enum_modules_cb)(const WCHAR *, ULONG_PTR addr, void *user)
struct symt_data * symt_new_global_variable(struct module *module, struct symt_compiland *parent, const char *name, unsigned is_static, struct location loc, ULONG_PTR size, struct symt *type) DECLSPEC_HIDDEN
struct module * module_is_already_loaded(const struct process *pcs, const WCHAR *imgname) DECLSPEC_HIDDEN
void * hash_table_iter_up(struct hash_table_iter *hti) DECLSPEC_HIDDEN
BOOL symt_get_address(const struct symt *type, ULONG64 *addr) DECLSPEC_HIDDEN
struct symt_compiland * symt_new_compiland(struct module *module, ULONG_PTR address, unsigned src_idx) DECLSPEC_HIDDEN
const char * source_get(const struct module *module, unsigned idx) DECLSPEC_HIDDEN
BOOL search_unix_path(const WCHAR *name, const WCHAR *path, BOOL(*match)(void *, HANDLE, const WCHAR *), void *param) DECLSPEC_HIDDEN
BOOL module_remove(struct process *pcs, struct module *module) DECLSPEC_HIDDEN
void hash_table_add(struct hash_table *ht, struct hash_table_elt *elt) DECLSPEC_HIDDEN
void module_set_module(struct module *module, const WCHAR *name) DECLSPEC_HIDDEN
struct module * module_new(struct process *pcs, const WCHAR *name, enum module_type type, BOOL virtual, DWORD64 addr, DWORD64 size, ULONG_PTR stamp, ULONG_PTR checksum) DECLSPEC_HIDDEN
struct symt_ht * symt_find_nearest(struct module *module, DWORD_PTR addr) DECLSPEC_HIDDEN
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
#define ReadProcessMemory(a, b, c, d, e)
#define SYMOPT_NO_PUBLICS
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
#define SYMOPT_PUBLICS_ONLY
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define GetCurrentProcess()
struct _SYMBOL_INFO SYMBOL_INFO
#define HeapFree(x, y, z)
#define SYMOPT_DEFERRED_LOADS
#define MultiByteToWideChar
DWORD calc_crc32(HANDLE handle)
const WCHAR * process_getenv(const struct process *process, const WCHAR *name)
const WCHAR S_WineLoaderW[]
BOOL WINAPI SetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
static UINT load_file(MSIRECORD *row, LPVOID param)
static BOOL elf_is_local_symbol(unsigned int info)
static BOOL elf_find_section_type(struct image_file_map *_fmap, const char *name, unsigned sht, struct image_section_map *ism)
BOOL elf_read_wine_loader_dbg_info(struct process *pcs, ULONG_PTR addr)
static BOOL elf_search_and_load_file(struct process *pcs, const WCHAR *filename, ULONG_PTR load_offset, ULONG_PTR dyn_addr, struct elf_info *elf_info)
static BOOL elf_enum_modules_internal(const struct process *pcs, const WCHAR *main_name, enum_elf_modules_cb cb, void *user)
static DWORD_PTR elf_get_map_rva(const struct image_section_map *ism)
static const char * elf_map_section(struct image_section_map *ism)
static BOOL elf_synchronize_module_list(struct process *pcs)
static unsigned elf_get_map_size(const struct image_section_map *ism)
BOOL elf_map_handle(HANDLE handle, struct image_file_map *fmap)
static BOOL elf_map_file(struct elf_map_file_data *emfd, struct image_file_map *fmap)
static const struct image_file_map_ops elf_file_map_ops
static struct module * elf_load_module(struct process *pcs, const WCHAR *name, ULONG_PTR addr)
static void elf_end_find(struct image_file_map *fmap)
static void elf_unmap_section(struct image_section_map *ism)
static BOOL elf_enum_modules(struct process *process, enum_modules_cb cb, void *user)
static void elf_module_remove(struct process *pcs, struct module_format *modfmt)
static BOOL elf_load_debug_info_from_map(struct module *module, struct image_file_map *fmap, struct pool *pool, struct hash_table *ht_symtab)
static BOOL elf_find_section(struct image_file_map *_fmap, const char *name, struct image_section_map *ism)
static BOOL elf_load_cb(const WCHAR *name, ULONG_PTR load_addr, ULONG_PTR dyn_addr, BOOL is_system, void *user)
static BOOL elf_map_file_read(struct image_file_map *fmap, struct elf_map_file_data *emfd, void *buf, size_t len, size_t off)
BOOL(* enum_elf_modules_cb)(const WCHAR *, ULONG_PTR load_addr, ULONG_PTR dyn_addr, BOOL is_system, void *user)
static BOOL elf_load_file_from_fmap(struct process *pcs, const WCHAR *filename, struct image_file_map *fmap, ULONG_PTR load_offset, ULONG_PTR dyn_addr, struct elf_info *elf_info)
static BOOL elf_search_auxv(const struct process *pcs, unsigned type, ULONG_PTR *val)
static BOOL elf_load_file_cb(void *param, HANDLE handle, const WCHAR *filename)
static BOOL elf_load_file(struct process *pcs, const WCHAR *filename, ULONG_PTR load_offset, ULONG_PTR dyn_addr, struct elf_info *elf_info)
int elf_is_in_thunk_area(ULONG_PTR addr, const struct elf_thunk_area *thunks)
static BOOL elf_enum_modules_translate(const WCHAR *name, ULONG_PTR load_addr, ULONG_PTR dyn_addr, BOOL is_system, void *user)
static int elf_new_public_symbols(struct module *module, const struct hash_table *symtab)
static BOOL elf_load_debug_info(struct process *process, struct module *module)
static void elf_finish_stabs_info(struct module *module, const struct hash_table *symtab)
static void elf_unmap_file(struct image_file_map *fmap)
static void elf_hash_symtab(struct module *module, struct pool *pool, struct hash_table *ht_symtab, struct image_file_map *fmap, struct elf_thunk_area *thunks)
#define ELF_INFO_DEBUG_HEADER
static const struct loader_ops elf_loader_ops
static int elf_new_wine_thunks(struct module *module, const struct hash_table *ht_symtab, const struct elf_thunk_area *thunks)
static BOOL elf_fetch_file_info(struct process *process, const WCHAR *name, ULONG_PTR load_addr, DWORD_PTR *base, DWORD *size, DWORD *checksum)
#define ELF_AT_SYSINFO_EHDR
static void elf_reset_file_map(struct image_file_map *fmap)
static BOOL elf_map_shdr(struct elf_map_file_data *emfd, struct image_file_map *fmap, unsigned int i)
static const struct elf_sym * elf_lookup_symtab(const struct module *module, const struct hash_table *ht_symtab, const char *name, const struct symt *compiland)
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * addr
GLenum GLenum GLenum GLenum mapping
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static void image_unmap_section(struct image_section_map *ism)
static BOOL image_find_section(struct image_file_map *fmap, const char *name, struct image_section_map *ism)
static const char * image_map_section(struct image_section_map *ism)
BOOL image_check_alternate(struct image_file_map *fmap, const struct module *module) DECLSPEC_HIDDEN
static void image_unmap_file(struct image_file_map *fmap)
static unsigned image_get_map_size(const struct image_section_map *ism)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
REFIID LPVOID DWORD_PTR dw
#define memcpy(s1, s2, n)
static HMODULE MODULEINFO DWORD cb
static UINT_PTR page_mask
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR LoadedImageName[256]
DWORD dwAllocationGranularity
const WCHAR * module_name
struct elf_info * elf_info
enum elf_map_file_data::@379 kind
union elf_map_file_data::@380 u
struct elf_map_file_data::@380::@381 file
struct elf_map_file_data::@380::@382 process
unsigned short elf_loader
struct image_file_map file_map
struct image_file_map::@383::elf_file_map elf
union image_file_map::@383 u
struct image_file_map * alternate
const struct image_file_map_ops * ops
struct image_file_map * fmap
unsigned short is_virtual
IMAGEHLP_MODULEW64 module
struct module_format * format_info[DFI_LAST]
struct hash_table ht_symbols
const struct loader_ops * loader
struct hash_table_elt hash_elt
struct hash_table_elt hash_elt
struct hash_table_elt ht_elt
struct symt_compiland * compiland
BOOL WINAPI SymFromName(HANDLE hProcess, PCSTR Name, PSYMBOL_INFO Symbol)
#define CONTAINING_RECORD(address, type, field)
DWORD WINAPI GetLastError(void)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList