diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/elfs/elfloader.c | 50 | ||||
| -rwxr-xr-x | src/library_list.h | 6 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 5 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibdrmdefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibdrmtypes.h | 17 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibdrmundefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri2defs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri2types.h | 17 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri2undefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri3defs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri3types.h | 17 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibxcbdri3undefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibdrm.c | 18 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibdrm_private.h | 198 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxcbdri2.c | 24 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxcbdri2_private.h | 68 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxcbdri3.c | 24 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibxcbdri3_private.h | 50 |
20 files changed, 517 insertions, 28 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 4431c848..d688d0a8 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -134,9 +134,9 @@ int CalcLoadAddr(elfheader_t* head) head->tlssize++; } } - printf_log(LOG_DEBUG, "Elf Addr(v/p)=%p/%p Memsize=0x%lx (align=0x%zx)\n", (void*)head->vaddr, (void*)head->paddr, head->memsz, head->align); - printf_log(LOG_DEBUG, "Elf Stack Memsize=%lu (align=%zu)\n", head->stacksz, head->stackalign); - printf_log(LOG_DEBUG, "Elf TLS Memsize=%lu (align=%zu)\n", head->tlssize, head->tlsalign); + printf_log(LOG_DEBUG, "Elf Addr(v/p)=%p/%p Memsize=0x%zx (align=0x%zx)\n", (void*)head->vaddr, (void*)head->paddr, head->memsz, head->align); + printf_log(LOG_DEBUG, "Elf Stack Memsize=%zu (align=%zu)\n", head->stacksz, head->stackalign); + printf_log(LOG_DEBUG, "Elf TLS Memsize=%zu (align=%zu)\n", head->tlssize, head->tlsalign); return 0; } @@ -153,7 +153,7 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) if(mainbin && head->vaddr==0) { char* load_addr = getenv("BOX64_LOAD_ADDR"); if(load_addr) - if(sscanf(load_addr, "0x%lx", &offs)!=1) + if(sscanf(load_addr, "0x%zx", &offs)!=1) offs = 0; } if(!offs) @@ -210,12 +210,12 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) , MAP_PRIVATE | MAP_ANONYMOUS /*| ((wine_preloaded)?MAP_FIXED:0)*/ , -1, 0); if(p==MAP_FAILED) { - printf_log(LOG_NONE, "Cannot create memory map (@%p 0x%lx/0x%zx) for elf \"%s\"\n", (void*)head->multiblock_offs[i], head->multiblock_size[i], head->align, head->name); + printf_log(LOG_NONE, "Cannot create memory map (@%p 0x%zx/0x%zx) for elf \"%s\"\n", (void*)head->multiblock_offs[i], head->multiblock_size[i], head->align, head->name); return 1; } if(head->multiblock_offs[i] &&( p!=(void*)head->multiblock_offs[i])) { if((head->e_type!=ET_DYN)) { - printf_log(LOG_NONE, "Error, memory map (@%p 0x%lx/0x%zx) for elf \"%s\" allocated @%p\n", (void*)head->multiblock_offs[i], head->multiblock_size[i], head->align, head->name, p); + printf_log(LOG_NONE, "Error, memory map (@%p 0x%zx/0x%zx) for elf \"%s\" allocated @%p\n", (void*)head->multiblock_offs[i], head->multiblock_size[i], head->align, head->name, p); return 1; } else { printf_log(LOG_INFO, "Allocated memory is not at hinted %p but %p (size %lx) \"%s\"\n", (void*)head->multiblock_offs[i], p, head->multiblock_size[i], head->name); @@ -239,17 +239,17 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) // vaddr is 0, load everything has a One block if(!offs && box64_wine) offs = (uintptr_t)find47bitBlock(head->memsz); // limit to 47bits... - printf_log(LOG_DEBUG, "Allocating 0x%lx memory @%p for Elf \"%s\"\n", head->memsz, (void*)offs, head->name); + printf_log(LOG_DEBUG, "Allocating 0x%zx memory @%p for Elf \"%s\"\n", head->memsz, (void*)offs, head->name); void* p = mmap((void*)offs, head->memsz , PROT_READ | PROT_WRITE | PROT_EXEC , MAP_PRIVATE | MAP_ANONYMOUS /*| (((offs&&wine_preloaded)?MAP_FIXED:0))*/ , -1, 0); if(p==MAP_FAILED) { - printf_log(LOG_NONE, "Cannot create memory map (@%p 0x%lx/0x%zx) for elf \"%s\"\n", (void*)offs, head->memsz, head->align, head->name); + printf_log(LOG_NONE, "Cannot create memory map (@%p 0x%zx/0x%zx) for elf \"%s\"\n", (void*)offs, head->memsz, head->align, head->name); return 1; } if(offs && (p!=(void*)offs) && (head->e_type!=ET_DYN)) { - printf_log(LOG_NONE, "Error, memory map (@%p 0x%lx/0x%zx) for elf \"%s\" allocated @%p\n", (void*)offs, head->memsz, head->align, head->name, p); + printf_log(LOG_NONE, "Error, memory map (@%p 0x%zx/0x%zx) for elf \"%s\" allocated @%p\n", (void*)offs, head->memsz, head->align, head->name, p); return 1; } setProtection((uintptr_t)p, head->memsz, PROT_READ | PROT_WRITE | PROT_EXEC); @@ -289,7 +289,7 @@ int LoadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) if(head->PHEntries[i].p_type == PT_LOAD) { Elf64_Phdr * e = &head->PHEntries[i]; char* dest = (char*)e->p_paddr + head->delta; - printf_log(LOG_DEBUG, "MMap block #%zu @%p offset=%p (0x%lx/0x%lx)\n", i, dest, (void*)e->p_offset, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "MMap block #%zu @%p offset=%p (0x%zx/0x%zx)\n", i, dest, (void*)e->p_offset, e->p_filesz, e->p_memsz); void* p = (void*)-1; if(e->p_memsz==e->p_filesz && !(e->p_align&0xfff)) { printf_log(LOG_DEBUG, "MMap block #%zu @%p offset=%p (0x%zx/0x%zx, flags:0x%x)\n", i, dest, (void*)e->p_offset, e->p_filesz, e->p_memsz, e->p_flags); @@ -319,11 +319,11 @@ int LoadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) if(head->PHEntries[i].p_type == PT_TLS) { Elf64_Phdr * e = &head->PHEntries[i]; char* dest = (char*)(context->tlsdata+context->tlssize+head->tlsbase); - printf_log(LOG_DEBUG, "Loading TLS block #%zu @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "Loading TLS block #%zu @%p (0x%zx/0x%zx)\n", i, dest, e->p_filesz, e->p_memsz); if(e->p_filesz) { fseeko64(f, e->p_offset, SEEK_SET); if(fread(dest, e->p_filesz, 1, f)!=1) { - printf_log(LOG_NONE, "Fail to read PT_TLS part #%zu (size=%ld)\n", i, e->p_filesz); + printf_log(LOG_NONE, "Fail to read PT_TLS part #%zu (size=%zd)\n", i, e->p_filesz); return 1; } } @@ -343,7 +343,7 @@ int ReloadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) if(head->PHEntries[i].p_type == PT_LOAD) { Elf64_Phdr * e = &head->PHEntries[i]; char* dest = (char*)e->p_paddr + head->delta; - printf_log(LOG_DEBUG, "Re-loading block #%zu @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "Re-loading block #%zu @%p (0x%zx/0x%zx)\n", i, dest, e->p_filesz, e->p_memsz); int ret = fseeko64(f, e->p_offset, SEEK_SET); if(ret==-1) {printf_log(LOG_NONE, "Fail to (re)seek PT_LOAD part #%zu (offset=%ld, errno=%d/%s)\n", i, e->p_offset, errno, strerror(errno)); return 1;} #ifdef DYNAREC @@ -354,7 +354,7 @@ int ReloadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) if(e->p_filesz) { ssize_t r = -1; if((r=fread(dest, e->p_filesz, 1, f))!=1) { - printf_log(LOG_NONE, "Fail to (re)read PT_LOAD part #%zu (dest=%p, size=%ld, return=%ld, feof=%d/ferror=%d/%s)\n", i, dest, e->p_filesz, r, feof(f), ferror(f), strerror(ferror(f))); + printf_log(LOG_NONE, "Fail to (re)read PT_LOAD part #%zu (dest=%p, size=%zd, return=%zd, feof=%d/ferror=%d/%s)\n", i, dest, e->p_filesz, r, feof(f), ferror(f), strerror(ferror(f))); return 1; } } @@ -371,22 +371,22 @@ int FindR64COPYRel(elfheader_t* h, const char* name, uintptr_t *offs, uint64_t** { if(!h) return 0; - Elf64_Rela * rel = (Elf64_Rela *)(h->rela + h->delta); + Elf64_Rela * rela = (Elf64_Rela *)(h->rela + h->delta); if(!h->rela) return 0; int cnt = h->relasz / h->relaent; for (int i=0; i<cnt; ++i) { - int t = ELF64_R_TYPE(rel[i].r_info); - Elf64_Sym *sym = &h->DynSym[ELF64_R_SYM(rel[i].r_info)]; + int t = ELF64_R_TYPE(rela[i].r_info); + Elf64_Sym *sym = &h->DynSym[ELF64_R_SYM(rela[i].r_info)]; const char* symname = SymName(h, sym); if(t==R_X86_64_COPY && symname && !strcmp(symname, name)) { - int version2 = h->VerSym?((Elf64_Half*)((uintptr_t)h->VerSym+h->delta))[ELF64_R_SYM(rel[i].r_info)]:-1; + int version2 = h->VerSym?((Elf64_Half*)((uintptr_t)h->VerSym+h->delta))[ELF64_R_SYM(rela[i].r_info)]:-1; if(version2!=-1) version2 &= 0x7fff; if(version && !version2) version2=-1; // match a versionned symbol against a global "local" symbol const char* vername2 = GetSymbolVersion(h, version2); if(SameVersionnedSymbol(name, version, vername, symname, version2, vername2)) { *offs = sym->st_value + h->delta; - *p = (uint64_t*)(rel[i].r_offset + h->delta + rel[i].r_addend); + *p = (uint64_t*)(rela[i].r_offset + h->delta + rela[i].r_addend); return 1; } } @@ -604,7 +604,7 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t uint64_t* globp; uintptr_t tmp = 0; intptr_t delta; - switch(ELF64_R_TYPE(rela[i].r_info)) { + switch(t) { case R_X86_64_NONE: break; case R_X86_64_PC32: @@ -639,8 +639,8 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t // set global offs / size for the symbol offs = sym->st_value + head->delta; end = offs + sym->st_size; - if(sym->st_size) { - printf_dump(LOG_NEVER, "Apply %s R_X86_64_GLOB_DAT with R_X86_64_COPY @%p/%p (%p/%p -> %p/%p) size=%ld on sym=%s (ver=%d/%s) \n", + if(sym->st_size && offs) { + printf_dump(LOG_NEVER, "Apply %s R_X86_64_GLOB_DAT with R_X86_64_COPY @%p/%p (%p/%p -> %p/%p) size=%zd on sym=%s (ver=%d/%s) \n", (bind==STB_LOCAL)?"Local":"Global", p, globp, (void*)(p?(*p):0), (void*)(globp?(*globp):0), (void*)offs, (void*)globoffs, sym->st_size, symname, version, vername?vername:"(none)"); //memmove((void*)globoffs, (void*)offs, sym->st_size); // preapply to copy part from lib to main elf @@ -939,7 +939,7 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea int bind = ELF64_ST_BIND(h->SymTab[i].st_info); int type = ELF64_ST_TYPE(h->SymTab[i].st_info); int vis = h->SymTab[i].st_other&0x3; - uint64_t sz = h->SymTab[i].st_size; + size_t sz = h->SymTab[i].st_size; if((type==STT_OBJECT || type==STT_FUNC || type==STT_COMMON || type==STT_TLS || type==STT_NOTYPE) && (vis==STV_DEFAULT || vis==STV_PROTECTED) && (h->SymTab[i].st_shndx!=0)) { if(sz && strstr(symname, "@@")) { @@ -997,7 +997,7 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea if((type==STT_OBJECT || type==STT_FUNC || type==STT_COMMON || type==STT_TLS || type==STT_NOTYPE) && (vis==STV_DEFAULT || vis==STV_PROTECTED) && (h->DynSym[i].st_shndx!=0 && h->DynSym[i].st_shndx<=65521)) { uintptr_t offs = (type==STT_TLS)?h->DynSym[i].st_value:(h->DynSym[i].st_value + h->delta); - uint64_t sz = h->DynSym[i].st_size; + size_t sz = h->DynSym[i].st_size; int version = h->VerSym?((Elf64_Half*)((uintptr_t)h->VerSym+h->delta))[i]:-1; if(version!=-1) version &= 0x7fff; const char* vername = GetSymbolVersion(h, version); @@ -1018,7 +1018,7 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea if(bind==STB_WEAK) { AddSymbol(weaksymbols, symname, offs, sz, version, vername); } else { - AddSymbol(mapsymbols, symname, offs, sz, version, vername); + AddWeakSymbol(mapsymbols, symname, offs, sz, version?version:1, vername); } } } diff --git a/src/library_list.h b/src/library_list.h index 9de0f0ca..e5b6d9c8 100755 --- a/src/library_list.h +++ b/src/library_list.h @@ -60,8 +60,8 @@ GO("libxcb-image.so.0", libxcbimage) GO("libxcb-keysyms.so.1", libxcbkeysyms) GO("libxcb-xtest.so.0", libxcbxtest) GO("libxcb-glx.so.0", libxcbglx) -//GO("libxcb-dri2.so.0", libxcbdri2) -//GO("libxcb-dri3.so.0", libxcbdri3) +GO("libxcb-dri2.so.0", libxcbdri2) +GO("libxcb-dri3.so.0", libxcbdri3) //GO("libxcb-present.so.0", libxcbpresent) GO("libXtst.so.6", libxtst) GO("libXt.so.6", libxt) @@ -87,7 +87,7 @@ GO("libudev.so.0", udev0) GO("libudev.so.1", udev1) GO("libdbus-1.so.3", dbus) //GO("libiconv.so.2", iconv) -//GO("libdrm.so.2", libdrm) +GO("libdrm.so.2", libdrm) GO("libexpat.so.1", expat) GO("libexpat.so", expat) GO("libcrypto.so.1", crypto) diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index ddc42db2..3d66c77c 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1817,6 +1817,7 @@ #() pFpCuWCCuuCW #() pFpuwwWWuCuu #() pFpuuuwwwwWW +#() pFpuuuWWWCCi #() pFplllllllll #() pFppuiipuuii #() pFpppppppppp @@ -2680,6 +2681,7 @@ wrappedlibdl: - dlmopen - pFppp: - dlvsym +wrappedlibdrm: wrappedlibform: wrappedlibformw: wrappedlibfuse: @@ -2961,6 +2963,9 @@ wrappedlibx11: wrappedlibx11xcb: wrappedlibxau: wrappedlibxcb: +wrappedlibxcbdri2: +% x my_xcb_cookie_t u +wrappedlibxcbdri3: wrappedlibxcbglx: wrappedlibxcbimage: wrappedlibxcbkeysyms: diff --git a/src/wrapped/generated/wrappedlibdrmdefs.h b/src/wrapped/generated/wrappedlibdrmdefs.h new file mode 100644 index 00000000..77311b0f --- /dev/null +++ b/src/wrapped/generated/wrappedlibdrmdefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibdrmDEFS_H_ +#define __wrappedlibdrmDEFS_H_ + + +#endif // __wrappedlibdrmDEFS_H_ diff --git a/src/wrapped/generated/wrappedlibdrmtypes.h b/src/wrapped/generated/wrappedlibdrmtypes.h new file mode 100644 index 00000000..1f952f16 --- /dev/null +++ b/src/wrapped/generated/wrappedlibdrmtypes.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibdrmTYPES_H_ +#define __wrappedlibdrmTYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + + +#define SUPER() ADDED_FUNCTIONS() + +#endif // __wrappedlibdrmTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibdrmundefs.h b/src/wrapped/generated/wrappedlibdrmundefs.h new file mode 100644 index 00000000..8756a8b1 --- /dev/null +++ b/src/wrapped/generated/wrappedlibdrmundefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibdrmUNDEFS_H_ +#define __wrappedlibdrmUNDEFS_H_ + + +#endif // __wrappedlibdrmUNDEFS_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri2defs.h b/src/wrapped/generated/wrappedlibxcbdri2defs.h new file mode 100644 index 00000000..186616f3 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri2defs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri2DEFS_H_ +#define __wrappedlibxcbdri2DEFS_H_ + + +#endif // __wrappedlibxcbdri2DEFS_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri2types.h b/src/wrapped/generated/wrappedlibxcbdri2types.h new file mode 100644 index 00000000..9091b9c1 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri2types.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri2TYPES_H_ +#define __wrappedlibxcbdri2TYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + + +#define SUPER() ADDED_FUNCTIONS() + +#endif // __wrappedlibxcbdri2TYPES_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri2undefs.h b/src/wrapped/generated/wrappedlibxcbdri2undefs.h new file mode 100644 index 00000000..53416634 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri2undefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri2UNDEFS_H_ +#define __wrappedlibxcbdri2UNDEFS_H_ + + +#endif // __wrappedlibxcbdri2UNDEFS_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri3defs.h b/src/wrapped/generated/wrappedlibxcbdri3defs.h new file mode 100644 index 00000000..d0072aa7 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri3defs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri3DEFS_H_ +#define __wrappedlibxcbdri3DEFS_H_ + + +#endif // __wrappedlibxcbdri3DEFS_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri3types.h b/src/wrapped/generated/wrappedlibxcbdri3types.h new file mode 100644 index 00000000..a0780c73 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri3types.h @@ -0,0 +1,17 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri3TYPES_H_ +#define __wrappedlibxcbdri3TYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + + +#define SUPER() ADDED_FUNCTIONS() + +#endif // __wrappedlibxcbdri3TYPES_H_ diff --git a/src/wrapped/generated/wrappedlibxcbdri3undefs.h b/src/wrapped/generated/wrappedlibxcbdri3undefs.h new file mode 100644 index 00000000..ec4e6a44 --- /dev/null +++ b/src/wrapped/generated/wrappedlibxcbdri3undefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedlibxcbdri3UNDEFS_H_ +#define __wrappedlibxcbdri3UNDEFS_H_ + + +#endif // __wrappedlibxcbdri3UNDEFS_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 2f55c2ff..ecf9dbd0 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -1851,6 +1851,7 @@ typedef void* (*pFEpippppppp_t)(x64emu_t*, void*, int64_t, void*, void*, void*, typedef void* (*pFpCuWCCuuCW_t)(void*, uint8_t, uint64_t, uint16_t, uint8_t, uint8_t, uint64_t, uint64_t, uint8_t, uint16_t); typedef void* (*pFpuwwWWuCuu_t)(void*, uint64_t, int16_t, int16_t, uint16_t, uint16_t, uint64_t, uint8_t, uint64_t, uint64_t); typedef void* (*pFpuuuwwwwWW_t)(void*, uint64_t, uint64_t, uint64_t, int16_t, int16_t, int16_t, int16_t, uint16_t, uint16_t); +typedef void* (*pFpuuuWWWCCi_t)(void*, uint64_t, uint64_t, uint64_t, uint16_t, uint16_t, uint16_t, uint8_t, uint8_t, int64_t); typedef void* (*pFplllllllll_t)(void*, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t); typedef void* (*pFppuiipuuii_t)(void*, void*, uint64_t, int64_t, int64_t, void*, uint64_t, uint64_t, int64_t, int64_t); typedef void* (*pFpppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); @@ -3807,6 +3808,7 @@ void pFEpippppppp(x64emu_t *emu, uintptr_t fcn) { pFEpippppppp_t fn = (pFEpipppp void pFpCuWCCuuCW(x64emu_t *emu, uintptr_t fcn) { pFpCuWCCuuCW_t fn = (pFpCuWCCuuCW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint64_t)R_RDX, (uint16_t)R_RCX, (uint8_t)R_R8, (uint8_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(uint8_t*)(R_RSP + 24), *(uint16_t*)(R_RSP + 32)); } void pFpuwwWWuCuu(x64emu_t *emu, uintptr_t fcn) { pFpuwwWWuCuu_t fn = (pFpuwwWWuCuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int16_t)R_RDX, (int16_t)R_RCX, (uint16_t)R_R8, (uint16_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint8_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(uint64_t*)(R_RSP + 32)); } void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fcn) { pFpuuuwwwwWW_t fn = (pFpuuuwwwwWW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (int16_t)R_R8, (int16_t)R_R9, *(int16_t*)(R_RSP + 8), *(int16_t*)(R_RSP + 16), *(uint16_t*)(R_RSP + 24), *(uint16_t*)(R_RSP + 32)); } +void pFpuuuWWWCCi(x64emu_t *emu, uintptr_t fcn) { pFpuuuWWWCCi_t fn = (pFpuuuWWWCCi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint16_t)R_R8, (uint16_t)R_R9, *(uint16_t*)(R_RSP + 8), *(uint8_t*)(R_RSP + 16), *(uint8_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32)); } void pFplllllllll(x64emu_t *emu, uintptr_t fcn) { pFplllllllll_t fn = (pFplllllllll_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9, *(intptr_t*)(R_RSP + 8), *(intptr_t*)(R_RSP + 16), *(intptr_t*)(R_RSP + 24), *(intptr_t*)(R_RSP + 32)); } void pFppuiipuuii(x64emu_t *emu, uintptr_t fcn) { pFppuiipuuii_t fn = (pFppuiipuuii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32)); } void pFpppppppppp(x64emu_t *emu, uintptr_t fcn) { pFpppppppppp_t fn = (pFpppppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 8c49be58..fad1c565 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -1850,6 +1850,7 @@ void pFEpippppppp(x64emu_t *emu, uintptr_t fnc); void pFpCuWCCuuCW(x64emu_t *emu, uintptr_t fnc); void pFpuwwWWuCuu(x64emu_t *emu, uintptr_t fnc); void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fnc); +void pFpuuuWWWCCi(x64emu_t *emu, uintptr_t fnc); void pFplllllllll(x64emu_t *emu, uintptr_t fnc); void pFppuiipuuii(x64emu_t *emu, uintptr_t fnc); void pFpppppppppp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibdrm.c b/src/wrapped/wrappedlibdrm.c new file mode 100755 index 00000000..01f49676 --- /dev/null +++ b/src/wrapped/wrappedlibdrm.c @@ -0,0 +1,18 @@ +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" + +const char* libdrmName = "libdrm.so.2"; +#define LIBNAME libdrm + +#include "wrappedlib_init.h" + diff --git a/src/wrapped/wrappedlibdrm_private.h b/src/wrapped/wrappedlibdrm_private.h new file mode 100755 index 00000000..3ded5707 --- /dev/null +++ b/src/wrapped/wrappedlibdrm_private.h @@ -0,0 +1,198 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh.... +#endif + +//GO(drmAddBufs, +//GO(drmAddContextPrivateMapping, +//GO(drmAddContextTag, +//GO(drmAddMap, +//GO(drmAgpAcquire, +//GO(drmAgpAlloc, +//GO(drmAgpBase, +//GO(drmAgpBind, +//GO(drmAgpDeviceId, +//GO(drmAgpEnable, +//GO(drmAgpFree, +//GO(drmAgpGetMode, +//GO(drmAgpMemoryAvail, +//GO(drmAgpMemoryUsed, +//GO(drmAgpRelease, +//GO(drmAgpSize, +//GO(drmAgpUnbind, +//GO(drmAgpVendorId, +//GO(drmAgpVersionMajor, +//GO(drmAgpVersionMinor, +GO(drmAuthMagic, iFiu) +//GO(drmAvailable, +//GO(drmCheckModesettingSupported, +//GO(drmClose, +//GO(drmCloseOnce, +//GO(drmCommandNone, +//GO(drmCommandRead, +//GO(drmCommandWrite, +//GO(drmCommandWriteRead, +//GO(drmCreateContext, +//GO(drmCreateDrawable, +//GO(drmCrtcGetSequence, +//GO(drmCrtcQueueSequence, +//GO(drmCtlInstHandler, +//GO(drmCtlUninstHandler, +//GO(drmDelContextTag, +//GO(drmDestroyContext, +//GO(drmDestroyDrawable, +//GO(drmDevicesEqual, +//GO(drmDMA, +//GO(drmDropMaster, +//GO(drmError, +//GO(drmFinish, +//GO(drmFree, +//GO(drmFreeBufs, +//GO(drmFreeBusid, +//GO(drmFreeDevice, +//GO(drmFreeDevices, +//GO(drmFreeReservedContextList, +GO(drmFreeVersion, vFp) +//GO(drmGetBufInfo, +//GO(drmGetBusid, +//GO(drmGetCap, +//GO(drmGetClient, +//GO(drmGetContextFlags, +//GO(drmGetContextPrivateMapping, +//GO(drmGetContextTag, +//GO(drmGetDevice, +//GO(drmGetDevice2, +GO(drmGetDeviceNameFromFd, pFi) +//GO(drmGetDeviceNameFromFd2, +//GO(drmGetDevices, +//GO(drmGetDevices2, +//GO(drmGetEntry, +//GO(drmGetHashTable, +//GO(drmGetInterruptFromBusID, +//GO(drmGetLibVersion, +//GO(drmGetLock, +GO(drmGetMagic, iFip) +//GO(drmGetMap, +//GO(drmGetNodeTypeFromFd, +//GO(drmGetPrimaryDeviceNameFromFd, +//GO(drmGetRenderDeviceNameFromFd, +//GO(drmGetReservedContextList, +//GO(drmGetStats, +GO(drmGetVersion, pFi) +//GO(drmHandleEvent, +//GO(drmHashCreate, +//GO(drmHashDelete, +//GO(drmHashDestroy, +//GO(drmHashFirst, +//GO(drmHashInsert, +//GO(drmHashLookup, +//GO(drmHashNext, +//GO(drmIoctl, +//GO(drmIsMaster, +//GO(drmMalloc, +//GO(drmMap, +//GO(drmMapBufs, +//GO(drmMarkBufs, +//GO(drmModeAddFB, +//GO(drmModeAddFB2, +//GO(drmModeAddFB2WithModifiers, +//GO(drmModeAtomicAddProperty, +//GO(drmModeAtomicAlloc, +//GO(drmModeAtomicCommit, +//GO(drmModeAtomicDuplicate, +//GO(drmModeAtomicFree, +//GO(drmModeAtomicGetCursor, +//GO(drmModeAtomicMerge, +//GO(drmModeAtomicSetCursor, +//GO(drmModeAttachMode, +//GO(drmModeConnectorSetProperty, +//GO(drmModeCreateLease, +//GO(drmModeCreatePropertyBlob, +//GO(drmModeCrtcGetGamma, +//GO(drmModeCrtcSetGamma, +//GO(drmModeDestroyPropertyBlob, +//GO(drmModeDetachMode, +//GO(drmModeDirtyFB, +//GO(drmModeFreeConnector, +//GO(drmModeFreeCrtc, +//GO(drmModeFreeEncoder, +//GO(drmModeFreeFB, +//GO(drmModeFreeModeInfo, +//GO(drmModeFreeObjectProperties, +//GO(drmModeFreePlane, +//GO(drmModeFreePlaneResources, +//GO(drmModeFreeProperty, +//GO(drmModeFreePropertyBlob, +//GO(drmModeFreeResources, +//GO(drmModeGetConnector, +//GO(drmModeGetConnectorCurrent, +//GO(drmModeGetCrtc, +//GO(drmModeGetEncoder, +//GO(drmModeGetFB, +//GO(drmModeGetLease, +//GO(drmModeGetPlane, +//GO(drmModeGetPlaneResources, +//GO(drmModeGetProperty, +//GO(drmModeGetPropertyBlob, +//GO(drmModeGetResources, +//GO(drmModeListLessees, +//GO(drmModeMoveCursor, +//GO(drmModeObjectGetProperties, +//GO(drmModeObjectSetProperty, +//GO(drmModePageFlip, +//GO(drmModePageFlipTarget, +//GO(drmModeRevokeLease, +//GO(drmModeRmFB, +//GO(drmModeSetCrtc, +//GO(drmModeSetCursor, +//GO(drmModeSetCursor2, +//GO(drmModeSetPlane, +//GO(drmMsg, +//GO(drmOpen, +//GO(drmOpenControl, +//GO(drmOpenOnce, +//GO(drmOpenOnceWithType, +//GO(drmOpenRender, +//GO(drmOpenWithType, +//GO(drmPrimeFDToHandle, +//GO(drmPrimeHandleToFD, +//GO(drmRandom, +//GO(drmRandomCreate, +//GO(drmRandomDestroy, +//GO(drmRandomDouble, +//GO(drmRmMap, +//GO(drmScatterGatherAlloc, +//GO(drmScatterGatherFree, +//GO(drmSetBusid, +//GO(drmSetClientCap, +//GO(drmSetContextFlags, +//GO(drmSetInterfaceVersion, +//GO(drmSetMaster, +//GO(drmSetServerInfo, +//GO(drmSLCreate, +//GO(drmSLDelete, +//GO(drmSLDestroy, +//GO(drmSLDump, +//GO(drmSLFirst, +//GO(drmSLInsert, +//GO(drmSLLookup, +//GO(drmSLLookupNeighbors, +//GO(drmSLNext, +//GO(drmSwitchToContext, +//GO(drmSyncobjCreate, +//GO(drmSyncobjDestroy, +//GO(drmSyncobjExportSyncFile, +//GO(drmSyncobjFDToHandle, +//GO(drmSyncobjHandleToFD, +//GO(drmSyncobjImportSyncFile, +//GO(drmSyncobjQuery, +//GO(drmSyncobjReset, +//GO(drmSyncobjSignal, +//GO(drmSyncobjTimelineSignal, +//GO(drmSyncobjTimelineWait, +//GO(drmSyncobjTransfer, +//GO(drmSyncobjWait, +//GO(drmUnlock, +//GO(drmUnmap, +//GO(drmUnmapBufs, +//GO(drmUpdateDrawableInfo, +//GO(drmWaitVBlank, diff --git a/src/wrapped/wrappedlibxcbdri2.c b/src/wrapped/wrappedlibxcbdri2.c new file mode 100755 index 00000000..1a474f9d --- /dev/null +++ b/src/wrapped/wrappedlibxcbdri2.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box64context.h" +#include "emu/x64emu_private.h" + +const char* libxcbdri2Name = "libxcb-dri2.so.0"; +#define LIBNAME libxcbdri2 +static library_t *my_lib = NULL; + +#include "wrappedlib_init.h" diff --git a/src/wrapped/wrappedlibxcbdri2_private.h b/src/wrapped/wrappedlibxcbdri2_private.h new file mode 100755 index 00000000..d9efcec8 --- /dev/null +++ b/src/wrapped/wrappedlibxcbdri2_private.h @@ -0,0 +1,68 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error meh! +#endif + +//%S x my_xcb_cookie_t u + +//GO(xcb_dri2_attach_format_end, +//GO(xcb_dri2_attach_format_next, +GO(xcb_dri2_authenticate, pFpuu) +GO(xcb_dri2_authenticate_reply, pFpup) +//GO(xcb_dri2_authenticate_unchecked, +GO(xcb_dri2_connect, pFpuu) +//GO(xcb_dri2_connect_alignment_pad, +//GO(xcb_dri2_connect_alignment_pad_end, +//GO(xcb_dri2_connect_alignment_pad_length, +GO(xcb_dri2_connect_device_name, pFp) +//GO(xcb_dri2_connect_device_name_end, +GO(xcb_dri2_connect_device_name_length, iFp) +//GO(xcb_dri2_connect_driver_name, +//GO(xcb_dri2_connect_driver_name_end, +//GO(xcb_dri2_connect_driver_name_length, +GO(xcb_dri2_connect_reply, pFpup) +//GO(xcb_dri2_connect_sizeof, +//GO(xcb_dri2_connect_unchecked, +//GO(xcb_dri2_copy_region, +//GO(xcb_dri2_copy_region_reply, +//GO(xcb_dri2_copy_region_unchecked, +//GO(xcb_dri2_create_drawable, +//GO(xcb_dri2_create_drawable_checked, +//GO(xcb_dri2_destroy_drawable, +//GO(xcb_dri2_destroy_drawable_checked, +//GO(xcb_dri2_dri2_buffer_end, +//GO(xcb_dri2_dri2_buffer_next, +//GO(xcb_dri2_get_buffers, +//GO(xcb_dri2_get_buffers_buffers, +//GO(xcb_dri2_get_buffers_buffers_iterator, +//GO(xcb_dri2_get_buffers_buffers_length, +//GO(xcb_dri2_get_buffers_reply, +//GO(xcb_dri2_get_buffers_sizeof, +//GO(xcb_dri2_get_buffers_unchecked, +//GO(xcb_dri2_get_buffers_with_format, +//GO(xcb_dri2_get_buffers_with_format_buffers, +//GO(xcb_dri2_get_buffers_with_format_buffers_iterator, +//GO(xcb_dri2_get_buffers_with_format_buffers_length, +//GO(xcb_dri2_get_buffers_with_format_reply, +//GO(xcb_dri2_get_buffers_with_format_sizeof, +//GO(xcb_dri2_get_buffers_with_format_unchecked, +//GO(xcb_dri2_get_msc, +//GO(xcb_dri2_get_msc_reply, +//GO(xcb_dri2_get_msc_unchecked, +//GO(xcb_dri2_get_param, +//GO(xcb_dri2_get_param_reply, +//GO(xcb_dri2_get_param_unchecked, +DATA(xcb_dri2_id, sizeof(void*)+sizeof(int)) +GO(xcb_dri2_query_version, pFpuu) +GO(xcb_dri2_query_version_reply, pFpup) +//GO(xcb_dri2_query_version_unchecked, +//GO(xcb_dri2_swap_buffers, +//GO(xcb_dri2_swap_buffers_reply, +//GO(xcb_dri2_swap_buffers_unchecked, +//GO(xcb_dri2_swap_interval, +//GO(xcb_dri2_swap_interval_checked, +//GO(xcb_dri2_wait_msc, +//GO(xcb_dri2_wait_msc_reply, +//GO(xcb_dri2_wait_msc_unchecked, +//GO(xcb_dri2_wait_sbc, +//GO(xcb_dri2_wait_sbc_reply, +//GO(xcb_dri2_wait_sbc_unchecked, diff --git a/src/wrapped/wrappedlibxcbdri3.c b/src/wrapped/wrappedlibxcbdri3.c new file mode 100755 index 00000000..494fc462 --- /dev/null +++ b/src/wrapped/wrappedlibxcbdri3.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box64context.h" +#include "emu/x64emu_private.h" + +const char* libxcbdri3Name = "libxcb-dri3.so.0"; +#define LIBNAME libxcbdri3 +static library_t *my_lib = NULL; + +#include "wrappedlib_init.h" diff --git a/src/wrapped/wrappedlibxcbdri3_private.h b/src/wrapped/wrappedlibxcbdri3_private.h new file mode 100755 index 00000000..2490657e --- /dev/null +++ b/src/wrapped/wrappedlibxcbdri3_private.h @@ -0,0 +1,50 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error meh! +#endif + +//GO(xcb_dri3_buffer_from_pixmap, +//GO(xcb_dri3_buffer_from_pixmap_reply, +//GO(xcb_dri3_buffer_from_pixmap_reply_fds, +//GO(xcb_dri3_buffer_from_pixmap_unchecked, +//GO(xcb_dri3_buffers_from_pixmap, +//GO(xcb_dri3_buffers_from_pixmap_buffers, +//GO(xcb_dri3_buffers_from_pixmap_buffers_end, +//GO(xcb_dri3_buffers_from_pixmap_buffers_length, +//GO(xcb_dri3_buffers_from_pixmap_offsets, +//GO(xcb_dri3_buffers_from_pixmap_offsets_end, +//GO(xcb_dri3_buffers_from_pixmap_offsets_length, +//GO(xcb_dri3_buffers_from_pixmap_reply, +//GO(xcb_dri3_buffers_from_pixmap_reply_fds, +//GO(xcb_dri3_buffers_from_pixmap_sizeof, +//GO(xcb_dri3_buffers_from_pixmap_strides, +//GO(xcb_dri3_buffers_from_pixmap_strides_end, +//GO(xcb_dri3_buffers_from_pixmap_strides_length, +//GO(xcb_dri3_buffers_from_pixmap_unchecked, +//GO(xcb_dri3_fd_from_fence, +//GO(xcb_dri3_fd_from_fence_reply, +//GO(xcb_dri3_fd_from_fence_reply_fds, +//GO(xcb_dri3_fd_from_fence_unchecked, +//GO(xcb_dri3_fence_from_fd, +//GO(xcb_dri3_fence_from_fd_checked, +//GO(xcb_dri3_get_supported_modifiers, +//GO(xcb_dri3_get_supported_modifiers_reply, +//GO(xcb_dri3_get_supported_modifiers_screen_modifiers, +//GO(xcb_dri3_get_supported_modifiers_screen_modifiers_end, +//GO(xcb_dri3_get_supported_modifiers_screen_modifiers_length, +//GO(xcb_dri3_get_supported_modifiers_sizeof, +//GO(xcb_dri3_get_supported_modifiers_unchecked, +//GO(xcb_dri3_get_supported_modifiers_window_modifiers, +//GO(xcb_dri3_get_supported_modifiers_window_modifiers_end, +//GO(xcb_dri3_get_supported_modifiers_window_modifiers_length, +DATA(xcb_dri3_id, sizeof(void*)+sizeof(int)) +GO(xcb_dri3_open, pFpuu) +GO(xcb_dri3_open_reply, pFpup) +GO(xcb_dri3_open_reply_fds, pFpp) +//GO(xcb_dri3_open_unchecked, +//GO(xcb_dri3_pixmap_from_buffer, +GO(xcb_dri3_pixmap_from_buffer_checked, pFpuuuWWWCCi) +//GO(xcb_dri3_pixmap_from_buffers, +//GO(xcb_dri3_pixmap_from_buffers_checked, +GO(xcb_dri3_query_version, pFpuu) +GO(xcb_dri3_query_version_reply, pFpup) +//GO(xcb_dri3_query_version_unchecked, |