diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-14 14:54:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-14 14:54:30 +0200 |
| commit | 6f217d78da0a49b3f3cf99443cfa95a9a6507303 (patch) | |
| tree | 8d790b143339b5b910594dd919754622b0885d40 /src | |
| parent | 0d38b1cd91d4265042396d3d1dbacac2e662ba00 (diff) | |
| parent | cdf71c4cbc8c07510708cb7396cd1035300f587f (diff) | |
| download | box64-6f217d78da0a49b3f3cf99443cfa95a9a6507303.tar.gz box64-6f217d78da0a49b3f3cf99443cfa95a9a6507303.zip | |
Merge pull request #10 from rajdakin/warnFixRefactor
Warnings and fixes
Diffstat (limited to 'src')
138 files changed, 1005 insertions, 710 deletions
diff --git a/src/custommem.c b/src/custommem.c index f4c0102d..a4c4a00d 100644 --- a/src/custommem.c +++ b/src/custommem.c @@ -33,7 +33,7 @@ KHASH_MAP_INIT_INT64(dynablocks, dynablock_t*) static dynablocklist_t*** dynmap123[1<<DYNAMAP_SHIFT]; // 64bits.. in 4x16bits array static pthread_mutex_t mutex_mmap; static mmaplist_t *mmaplist; -static int mmapsize; +static size_t mmapsize; static kh_dynablocks_t *dblist_oversized; // store the list of oversized dynablocks (normal sized are inside mmaplist) static uintptr_t*** box64_jmptbl3[1<<JMPTABL_SHIFT]; static uintptr_t** box64_jmptbldefault2[1<<JMPTABL_SHIFT]; @@ -50,7 +50,7 @@ static int inited = 0; typedef struct blocklist_s { void* block; - int maxfree; + size_t maxfree; size_t size; } blocklist_t; @@ -74,7 +74,7 @@ typedef struct blockmark_s { // get first subblock free in block, stating at start (from block). return NULL if no block, else first subblock free (mark included), filling size -static void* getFirstBlock(void* block, int maxsize, int* size) +static void* getFirstBlock(void* block, size_t maxsize, size_t* size) { // get start of block blockmark_t *m = (blockmark_t*)block; @@ -89,7 +89,7 @@ static void* getFirstBlock(void* block, int maxsize, int* size) return NULL; } -static int getMaxFreeBlock(void* block, size_t block_size) +static size_t getMaxFreeBlock(void* block, size_t block_size) { // get start of block blockmark_t *m = (blockmark_t*)((uintptr_t)block+block_size-sizeof(blockmark_t)); // styart with the end @@ -105,8 +105,10 @@ static int getMaxFreeBlock(void* block, size_t block_size) return maxsize; } -static void* allocBlock(void* block, void *sub, int size) +static void* allocBlock(void* block, void *sub, size_t size) { + (void)block; + blockmark_t *s = (blockmark_t*)sub; blockmark_t *n = (blockmark_t*)((uintptr_t)s + s->next.size); @@ -152,14 +154,17 @@ static void freeBlock(void *block, void* sub) } } // return 1 if block has been expanded to new size, 0 if not -static int expandBlock(void* block, void* sub, int newsize) +static int expandBlock(void* block, void* sub, size_t newsize) { + (void)block; + newsize = (newsize+3)&~3; blockmark_t *s = (blockmark_t*)sub; blockmark_t *n = (blockmark_t*)((uintptr_t)s + s->next.size); if(s->next.fill) return 0; // next block is filled - if(s->next.size + n->next.size < newsize) + // unsigned bitfield of this length gets "promoted" to *signed* int... + if((size_t)(s->next.size + n->next.size) < newsize) return 0; // free space too short // ok, doing the alloc! s->next.size = newsize+sizeof(blockmark_t); @@ -178,7 +183,7 @@ static int expandBlock(void* block, void* sub, int newsize) return 1; } // return size of block -static int sizeBlock(void* sub) +static size_t sizeBlock(void* sub) { blockmark_t *s = (blockmark_t*)sub; return s->next.size; @@ -191,7 +196,7 @@ void* customMalloc(size_t size) pthread_mutex_lock(&mutex_blocks); for(int i=0; i<n_blocks; ++i) { if(p_blocks[i].maxfree>=size) { - int rsize = 0; + size_t rsize = 0; sub = getFirstBlock(p_blocks[i].block, size, &rsize); if(sub) { void* ret = allocBlock(p_blocks[i].block, sub, size); @@ -253,17 +258,16 @@ void* customRealloc(void* p, size_t size) pthread_mutex_unlock(&mutex_blocks); return p; } - pthread_mutex_unlock(&mutex_blocks); - void* newp = customMalloc(size); - memcpy(newp, p, sizeBlock(sub)); - customFree(p); - return newp; - + pthread_mutex_unlock(&mutex_blocks); + void* newp = customMalloc(size); + memcpy(newp, p, sizeBlock(sub)); + customFree(p); + return newp; } } pthread_mutex_unlock(&mutex_blocks); if(n_blocks) - dynarec_log(LOG_NONE, "Warning, block %p not found in p_blocks for Realloc, Malloc'ng again without free\n", (void*)addr); + dynarec_log(LOG_NONE, "Warning, block %p not found in p_blocks for realloc, malloc'ing again without free\n", (void*)addr); return customMalloc(size); } void customFree(void* p) @@ -290,19 +294,19 @@ void customFree(void* p) #ifdef DYNAREC typedef struct mmaplist_s { void* block; - int maxfree; + size_t maxfree; size_t size; kh_dynablocks_t* dblist; uint8_t* helper; } mmaplist_t; -uintptr_t FindFreeDynarecMap(dynablock_t* db, int size) +uintptr_t FindFreeDynarecMap(dynablock_t* db, size_t size) { // look for free space void* sub = NULL; - for(int i=0; i<mmapsize; ++i) { + for(size_t i=0; i<mmapsize; ++i) { if(mmaplist[i].maxfree>=size) { - int rsize = 0; + size_t rsize = 0; sub = getFirstBlock(mmaplist[i].block, size, &rsize); if(sub) { uintptr_t ret = (uintptr_t)allocBlock(mmaplist[i].block, sub, size); @@ -317,7 +321,7 @@ uintptr_t FindFreeDynarecMap(dynablock_t* db, int size) int r; k = kh_put(dynablocks, blocks, (uintptr_t)ret, &r); kh_value(blocks, k) = db; - for(int j=0; j<size; ++j) + for(size_t j=0; j<size; ++j) mmaplist[i].helper[(uintptr_t)ret-(uintptr_t)mmaplist[i].block+j] = (j<256)?j:255; return ret; } @@ -326,15 +330,15 @@ uintptr_t FindFreeDynarecMap(dynablock_t* db, int size) return 0; } -uintptr_t AddNewDynarecMap(dynablock_t* db, int size) +uintptr_t AddNewDynarecMap(dynablock_t* db, size_t size) { - int i = mmapsize++; - dynarec_log(LOG_DEBUG, "Ask for DynaRec Block Alloc #%d\n", mmapsize); + size_t i = mmapsize++; + dynarec_log(LOG_DEBUG, "Ask for DynaRec Block Alloc #%zu\n", mmapsize); mmaplist = (mmaplist_t*)realloc(mmaplist, mmapsize*sizeof(mmaplist_t)); #ifndef USE_MMAP void *p = NULL; if(posix_memalign(&p, box64_pagesize, MMAPSIZE)) { - dynarec_log(LOG_INFO, "Cannot create memory map of %d byte for dynarec block #%d\n", MMAPSIZE, i); + dynarec_log(LOG_INFO, "Cannot create memory map of %d byte for dynarec block #%zu\n", MMAPSIZE, i); --mmapsize; return 0; } @@ -342,7 +346,7 @@ uintptr_t AddNewDynarecMap(dynablock_t* db, int size) #else void* p = mmap(NULL, MMAPSIZE, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if(p==(void*)-1) { - dynarec_log(LOG_INFO, "Cannot create memory map of %d byte for dynarec block #%d\n", MMAPSIZE, i); + dynarec_log(LOG_INFO, "Cannot create memory map of %d byte for dynarec block #%zu\n", MMAPSIZE, i); --mmapsize; return 0; } @@ -370,16 +374,17 @@ uintptr_t AddNewDynarecMap(dynablock_t* db, int size) int ret; k = kh_put(dynablocks, blocks, (uintptr_t)sub, &ret); kh_value(blocks, k) = db; - for(int j=0; j<size; ++j) + for(size_t j=0; j<size; ++j) mmaplist[i].helper[(uintptr_t)sub-(uintptr_t)mmaplist[i].block + j] = (j<256)?j:255; return sub; } -void ActuallyFreeDynarecMap(dynablock_t* db, uintptr_t addr, int size) +void ActuallyFreeDynarecMap(dynablock_t* db, uintptr_t addr, size_t size) { + (void)db; if(!addr || !size) return; - for(int i=0; i<mmapsize; ++i) { + for(size_t i=0; i<mmapsize; ++i) { if ((addr>(uintptr_t)mmaplist[i].block) && (addr<((uintptr_t)mmaplist[i].block+mmaplist[i].size))) { void* sub = (void*)(addr-sizeof(blockmark_t)); @@ -390,20 +395,20 @@ void ActuallyFreeDynarecMap(dynablock_t* db, uintptr_t addr, int size) khint_t k = kh_get(dynablocks, blocks, (uintptr_t)sub); if(k!=kh_end(blocks)) kh_del(dynablocks, blocks, k); - for(int j=0; j<size; ++j) + for(size_t j=0; j<size; ++j) mmaplist[i].helper[(uintptr_t)sub-(uintptr_t)mmaplist[i].block+j] = 0; } return; } } if(mmapsize) - dynarec_log(LOG_NONE, "Warning, block %p (size %d) not found in mmaplist for Free\n", (void*)addr, size); + dynarec_log(LOG_NONE, "Warning, block %p (size %zu) not found in mmaplist for Free\n", (void*)addr, size); } dynablock_t* FindDynablockFromNativeAddress(void* addr) { // look in actual list - for(int i=0; i<mmapsize; ++i) { + for(size_t i=0; i<mmapsize; ++i) { if ((uintptr_t)addr>=(uintptr_t)mmaplist[i].block && ((uintptr_t)addr<(uintptr_t)mmaplist[i].block+mmaplist[i].size)) { if(!mmaplist[i].helper) @@ -422,7 +427,7 @@ dynablock_t* FindDynablockFromNativeAddress(void* addr) return FindDynablockDynablocklist(addr, dblist_oversized); } -uintptr_t AllocDynarecMap(dynablock_t* db, int size) +uintptr_t AllocDynarecMap(dynablock_t* db, size_t size) { if(!size) return 0; @@ -431,14 +436,14 @@ uintptr_t AllocDynarecMap(dynablock_t* db, int size) pthread_mutex_lock(&mutex_mmap); void *p = NULL; if(posix_memalign(&p, box64_pagesize, size)) { - dynarec_log(LOG_INFO, "Cannot create dynamic map of %d bytes\n", size); + dynarec_log(LOG_INFO, "Cannot create dynamic map of %zu bytes\n", size); return 0; } mprotect(p, size, PROT_READ | PROT_WRITE | PROT_EXEC); #else void* p = mmap(NULL, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); if(p==(void*)-1) { - dynarec_log(LOG_INFO, "Cannot create dynamic map of %d bytes\n", size); + dynarec_log(LOG_INFO, "Cannot create dynamic map of %zu bytes\n", size); return 0; } #endif @@ -467,7 +472,7 @@ uintptr_t AllocDynarecMap(dynablock_t* db, int size) return ret; } -void FreeDynarecMap(dynablock_t* db, uintptr_t addr, uint32_t size) +void FreeDynarecMap(dynablock_t* db, uintptr_t addr, size_t size) { if(!addr || !size) return; @@ -508,7 +513,7 @@ dynablocklist_t* getDB(uintptr_t idx) // each dynmap is 64k of size -void addDBFromAddressRange(uintptr_t addr, uintptr_t size) +void addDBFromAddressRange(uintptr_t addr, size_t size) { dynarec_log(LOG_DEBUG, "addDBFromAddressRange %p -> %p\n", (void*)addr, (void*)(addr+size-1)); uintptr_t idx = (addr>>DYNAMAP_SHIFT); @@ -535,7 +540,7 @@ void addDBFromAddressRange(uintptr_t addr, uintptr_t size) } } -void cleanDBFromAddressRange(uintptr_t addr, uintptr_t size, int destroy) +void cleanDBFromAddressRange(uintptr_t addr, size_t size, int destroy) { dynarec_log(LOG_DEBUG, "cleanDBFromAddressRange %p -> %p %s\n", (void*)addr, (void*)(addr+size-1), destroy?"destroy":"mark"); uintptr_t idx = (addr>>DYNAMAP_SHIFT); @@ -664,7 +669,7 @@ uintptr_t getJumpTableAddress64(uintptr_t addr) // Remove the Write flag from an adress range, so DB can be executed // no log, as it can be executed inside a signal handler -void protectDB(uintptr_t addr, uintptr_t size) +void protectDB(uintptr_t addr, size_t size) { dynarec_log(LOG_DEBUG, "protectDB %p -> %p\n", (void*)addr, (void*)(addr+size-1)); uintptr_t idx = (addr>>MEMPROT_SHIFT); @@ -693,7 +698,7 @@ void protectDBnolock(uintptr_t addr, uintptr_t size) { dynarec_log(LOG_DEBUG, "protectDB %p -> %p\n", (void*)addr, (void*)(addr+size-1)); uintptr_t idx = (addr>>MEMPROT_SHIFT); - uintptr_t end = ((addr+size-1)>>MEMPROT_SHIFT); + uintptr_t end = ((addr+size-1LL)>>MEMPROT_SHIFT); int ret; for (uintptr_t i=idx; i<=end; ++i) { const uint32_t key = (i>>MEMPROT_SHIFT2)&0xffffffff; @@ -724,7 +729,7 @@ void unlockDB() // Add the Write flag from an adress range, and mark all block as dirty // no log, as it can be executed inside a signal handler -void unprotectDB(uintptr_t addr, uintptr_t size) +void unprotectDB(uintptr_t addr, size_t size) { dynarec_log(LOG_DEBUG, "unprotectDB %p -> %p\n", (void*)addr, (void*)(addr+size-1)); uintptr_t idx = (addr>>MEMPROT_SHIFT); @@ -751,7 +756,7 @@ void unprotectDB(uintptr_t addr, uintptr_t size) #endif -void updateProtection(uintptr_t addr, uintptr_t size, uint32_t prot) +void updateProtection(uintptr_t addr, size_t size, uint32_t prot) { dynarec_log(LOG_DEBUG, "updateProtection %p:%p 0x%x\n", (void*)addr, (void*)(addr+size-1), prot); uintptr_t idx = (addr>>MEMPROT_SHIFT); @@ -774,7 +779,7 @@ void updateProtection(uintptr_t addr, uintptr_t size, uint32_t prot) pthread_mutex_unlock(&mutex_prot); } -void setProtection(uintptr_t addr, uintptr_t size, uint32_t prot) +void setProtection(uintptr_t addr, size_t size, uint32_t prot) { dynarec_log(LOG_DEBUG, "setProtection %p:%p 0x%x\n", (void*)addr, (void*)(addr+size-1), prot); uintptr_t idx = (addr>>MEMPROT_SHIFT); @@ -794,7 +799,7 @@ void setProtection(uintptr_t addr, uintptr_t size, uint32_t prot) pthread_mutex_unlock(&mutex_prot); } -void freeProtection(uintptr_t addr, uintptr_t size) +void freeProtection(uintptr_t addr, size_t size) { dynarec_log(LOG_DEBUG, "freeProtection %p:%p\n", (void*)addr, (void*)(addr+size-1)); uintptr_t idx = (addr>>MEMPROT_SHIFT); @@ -832,7 +837,7 @@ uint32_t getProtection(uintptr_t addr) #define LOWEST (void*)0x20000 int availableBlock(uint8_t* p, size_t n) { - for (int i=0; i<n; ++i, ++p) + for (size_t i=0; i<n; ++i, ++p) if(*p) return 0; return 1; @@ -857,7 +862,7 @@ void* find32bitBlock(size_t size) return p; p += 0x10000; } while(p!=(void*)0xffff0000); - printf_log(LOG_NONE, "Warning: cannot find a 0x%lx block in 32bits address space\n", size); + printf_log(LOG_NONE, "Warning: cannot find a 0x%zx block in 32bits address space\n", size); return NULL; } void* findBlockNearHint(void* hint, size_t size) @@ -883,7 +888,7 @@ void* findBlockNearHint(void* hint, size_t size) return p; p += step; } while(p!=end); - printf_log(LOG_NONE, "Warning: cannot find a 0x%lx block in 32bits address space\n", size); + printf_log(LOG_NONE, "Warning: cannot find a 0x%zx block in 32bits address space\n", size); return NULL; } #undef LOWEST @@ -943,6 +948,7 @@ static void atfork_child_custommem(void) void init_custommem_helper(box64context_t* ctx) { + (void)ctx; if(inited) // already initialized return; inited = 1; @@ -966,13 +972,14 @@ void init_custommem_helper(box64context_t* ctx) void fini_custommem_helper(box64context_t *ctx) { + (void)ctx; if(!inited) return; inited = 0; #ifdef DYNAREC if(box64_dynarec) { dynarec_log(LOG_DEBUG, "Free global Dynarecblocks\n"); - for (int i=0; i<mmapsize; ++i) { + for (size_t i=0; i<mmapsize; ++i) { if(mmaplist[i].block) #ifdef USE_MMAP munmap(mmaplist[i].block, mmaplist[i].size); diff --git a/src/dynarec/arm64_emitter.h b/src/dynarec/arm64_emitter.h index ac6e59df..c986edc3 100755 --- a/src/dynarec/arm64_emitter.h +++ b/src/dynarec/arm64_emitter.h @@ -110,8 +110,9 @@ #define MOVKw(Rd, imm16) EMIT(MOVK_gen(0, 0, ((uint16_t)imm16)&0xffff, Rd)) #define MOVKw_LSL(Rd, imm16, shift) EMIT(MOVK_gen(0, (shift)/16, ((uint16_t)imm16)&0xffff, Rd)) +// This macro will give a -Wsign-compare warning, probably bug #38341 #define MOV32w(Rd, imm32) \ - if(~((uint32_t)(imm32))<0xffff) { \ + if(~((uint32_t)(imm32))<0xffffu) { \ MOVNw(Rd, (~(uint32_t)(imm32))&0xffff); \ } else { \ MOVZw(Rd, (imm32)&0xffff); \ diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 7e3677fa..e412366e 100755 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -214,7 +214,7 @@ void MarkRangeDynablock(dynablocklist_t* dynablocks, uintptr_t addr, uintptr_t s uintptr_t new_size = size + dynablocks->maxsz; MarkDirectDynablock(dynablocks, new_addr, new_size); // the blocks check before - for(int idx=(new_addr)>>DYNAMAP_SHIFT; idx<(addr>>DYNAMAP_SHIFT); ++idx) + for(unsigned idx=(new_addr)>>DYNAMAP_SHIFT; idx<(addr>>DYNAMAP_SHIFT); ++idx) MarkDirectDynablock(getDB(idx), new_addr, new_size); } } @@ -347,7 +347,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t int blocksz = block->x64_size; if(dynablocks->maxsz<blocksz) { dynablocks->maxsz = blocksz; - for(int idx=(addr>>DYNAMAP_SHIFT)+1; idx<=((addr+blocksz)>>DYNAMAP_SHIFT); ++idx) { + for(unsigned idx=(addr>>DYNAMAP_SHIFT)+1; idx<=((addr+blocksz)>>DYNAMAP_SHIFT); ++idx) { dynablocklist_t* dblist; if((dblist = getDB(idx))) if(dblist->maxsz<blocksz) diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c index 4e7e0953..a142f91d 100755 --- a/src/dynarec/dynarec.c +++ b/src/dynarec/dynarec.c @@ -65,6 +65,11 @@ printf_log(LOG_NONE, "Warning, jumping to a no-block address %p from %p (db=%p, } #endif +#ifdef __GNUC__ +// Disable "clobbered" warnings +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclobbered" +#endif void DynaCall(x64emu_t* emu, uintptr_t addr) { // prepare setjump for signal handling @@ -214,4 +219,7 @@ int DynaRun(x64emu_t* emu) ejb->jmpbuf_ok = 0; return 0; #endif -} \ No newline at end of file +} +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif diff --git a/src/dynarec/dynarec_arm64.c b/src/dynarec/dynarec_arm64.c index 7855f4be..40c2899b 100755 --- a/src/dynarec/dynarec_arm64.c +++ b/src/dynarec/dynarec_arm64.c @@ -383,10 +383,10 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr) { // pass 2, instruction size arm_pass2(&helper, addr); // ok, now allocate mapped memory, with executable flag on - int sz = helper.arm_size + helper.table64size*sizeof(uint64_t); + size_t sz = helper.arm_size + helper.table64size*sizeof(uint64_t); void* p = (void*)AllocDynarecMap(block, sz); if(p==NULL) { - dynarec_log(LOG_DEBUG, "AllocDynarecMap(%p, %d) failed, cancelling block\n", block, sz); + dynarec_log(LOG_DEBUG, "AllocDynarecMap(%p, %zu) failed, cancelling block\n", block, sz); free(helper.insts); free(helper.next); free(helper.table64); @@ -401,17 +401,17 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr) { } // pass 3, emit (log emit arm opcode) if(box64_dynarec_dump) { - dynarec_log(LOG_NONE, "%s%04d|Emitting %d bytes for %d x64 bytes", (box64_dynarec_dump>1)?"\e[01;36m":"", GetTID(), helper.arm_size, helper.isize); + dynarec_log(LOG_NONE, "%s%04d|Emitting %zu bytes for %u x64 bytes", (box64_dynarec_dump>1)?"\e[01;36m":"", GetTID(), helper.arm_size, helper.isize); printFunctionAddr(helper.start, " => "); dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump>1)?"\e[m":""); } int oldtable64size = helper.table64size; - int oldarmsize = helper.arm_size; + size_t oldarmsize = helper.arm_size; helper.arm_size = 0; helper.table64size = 0; // reset table64 (but not the cap) arm_pass3(&helper, addr); if((oldarmsize!=helper.arm_size) || (oldtable64size<helper.table64size)) { - printf_log(LOG_NONE, "BOX64: Warning, size difference in block between pass2 (%d) & pass3 (%d)!\n", sz, helper.arm_size+helper.table64size*8); + printf_log(LOG_NONE, "BOX64: Warning, size difference in block between pass2 (%zu) & pass3 (%zu)!\n", sz, helper.arm_size+helper.table64size*8); uint8_t *dump = (uint8_t*)helper.start; printf_log(LOG_NONE, "Dump of %d x64 opcodes:\n", helper.size); for(int i=0; i<helper.size; ++i) { @@ -451,8 +451,6 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr) { block->need_test = 0; //block->x64_addr = (void*)start; block->x64_size = end-start+1; - if(box64_dynarec_largest<block->x64_size) - box64_dynarec_largest = block->x64_size; block->hash = X31_hash_code(block->x64_addr, block->x64_size); // Check if something changed, to abbort if it as if(block->hash != hash) { @@ -493,4 +491,4 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr) { free(helper.sons_arm); block->done = 1; return (void*)block; -} \ No newline at end of file +} diff --git a/src/dynarec/dynarec_arm64_00.c b/src/dynarec/dynarec_arm64_00.c index 5b0015cc..2f89297e 100755 --- a/src/dynarec/dynarec_arm64_00.c +++ b/src/dynarec/dynarec_arm64_00.c @@ -29,21 +29,19 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin uint8_t nextop, opcode; uint8_t gd, ed; int8_t i8; - int32_t i32, j32, tmp; - int64_t i64; + int32_t i32, tmp; + int64_t i64, j64; uint8_t u8; uint8_t gb1, gb2, eb1, eb2; uint32_t u32; uint64_t u64; uint8_t wback, wb1, wb2; - int fixedaddress; + int64_t fixedaddress; opcode = F8; MAYUSE(eb1); MAYUSE(eb2); - MAYUSE(wb2); - MAYUSE(tmp); - MAYUSE(j32); + MAYUSE(j64); switch(opcode) { case 0x00: @@ -2212,4 +2210,3 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin return addr; } - diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c index 4a8cfb90..cff67cf9 100755 --- a/src/dynarec/dynarec_arm64_0f.c +++ b/src/dynarec/dynarec_arm64_0f.c @@ -64,33 +64,32 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop, u8; - int32_t i32, i32_, j32; uint8_t gd, ed; uint8_t wback, wb2; uint8_t eb1, eb2; - uint64_t tmp64u; + int32_t i32, i32_; int v0, v1; int q0, q1; int d0, d1; int s0; - int fixedaddress; - MAYUSE(s0); + uint64_t tmp64u; + int64_t j64; + int64_t fixedaddress; + MAYUSE(wb2); + MAYUSE(eb1); + MAYUSE(eb2); MAYUSE(q0); MAYUSE(q1); - MAYUSE(v0); - MAYUSE(v1); MAYUSE(d0); MAYUSE(d1); - MAYUSE(eb2); - MAYUSE(eb1); - MAYUSE(wb2); - MAYUSE(j32); - MAYUSE(i32); - MAYUSE(u8); - #if STEP == 3 - //static const int8_t mask_shift8[] = { -7, -6, -5, -4, -3, -2, -1, 0 }; + MAYUSE(s0); + MAYUSE(j64); + #if 0//STEP == 3 + static const int8_t mask_shift8[] = { -7, -6, -5, -4, -3, -2, -1, 0 }; #endif switch(opcode) { @@ -1564,4 +1563,3 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_64.c b/src/dynarec/dynarec_arm64_64.c index 840d2312..d6245467 100644 --- a/src/dynarec/dynarec_arm64_64.c +++ b/src/dynarec/dynarec_arm64_64.c @@ -25,17 +25,18 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop; uint8_t u8; - int32_t j32; uint8_t gd, ed, eb1, eb2; uint8_t wback; - int64_t i64; - int fixedaddress; - MAYUSE(j32); + int64_t i64, j64; + int64_t fixedaddress; MAYUSE(eb1); MAYUSE(eb2); + MAYUSE(j64); while((opcode==0xF2) || (opcode==0xF3)) { rep = opcode-0xF1; @@ -219,4 +220,3 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_66.c b/src/dynarec/dynarec_arm64_66.c index d79c411f..8237fe3c 100755 --- a/src/dynarec/dynarec_arm64_66.c +++ b/src/dynarec/dynarec_arm64_66.c @@ -27,15 +27,16 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin { uint8_t opcode = F8; uint8_t nextop, u8; - int32_t i32, j32; int16_t i16; uint16_t u16; + int32_t i32; + int64_t j64; uint8_t gd, ed; uint8_t wback, wb1; - int fixedaddress; - MAYUSE(u16); + int64_t fixedaddress; MAYUSE(u8); - MAYUSE(j32); + MAYUSE(u16); + MAYUSE(j64); while((opcode==0x2E) || (opcode==0x66)) // ignoring CS: or multiple 0x66 opcode = F8; @@ -814,4 +815,3 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index dc08994a..97106761 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -44,17 +44,20 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop, u8; - int32_t i32, j32; + int32_t i32; uint8_t gd, ed; uint8_t wback, wb1; uint8_t eb1, eb2; + int64_t j64; uint64_t tmp64u; int v0, v1; int q0, q1; int d0, d1; - int fixedaddress; + int64_t fixedaddress; MAYUSE(d0); MAYUSE(d1); @@ -62,7 +65,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n MAYUSE(q1); MAYUSE(eb1); MAYUSE(eb2); - MAYUSE(j32); + MAYUSE(j64); #if 0//STEP > 1 static const int8_t mask_shift8[] = { -7, -6, -5, -4, -3, -2, -1, 0 }; #endif @@ -1401,4 +1404,3 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } return addr; } - diff --git a/src/dynarec/dynarec_arm64_6664.c b/src/dynarec/dynarec_arm64_6664.c index a17a3a85..0ffd8282 100644 --- a/src/dynarec/dynarec_arm64_6664.c +++ b/src/dynarec/dynarec_arm64_6664.c @@ -25,10 +25,12 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop; uint8_t gd, ed; - int fixedaddress; + int64_t fixedaddress; // REX prefix before the 66 are ignored rex.rex = 0; @@ -76,4 +78,3 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } return addr; } - diff --git a/src/dynarec/dynarec_arm64_67.c b/src/dynarec/dynarec_arm64_67.c index fe381f95..36483a68 100755 --- a/src/dynarec/dynarec_arm64_67.c +++ b/src/dynarec/dynarec_arm64_67.c @@ -25,14 +25,17 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop; uint8_t gd, ed; - int fixedaddress; + int64_t fixedaddress; int8_t i8; - int32_t i32, j32; - MAYUSE(j32); + int32_t i32; + int64_t j64; MAYUSE(i32); + MAYUSE(j64); // REX prefix before the 67 are ignored rex.rex = 0; @@ -117,4 +120,3 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_d8.c b/src/dynarec/dynarec_arm64_d8.c index 89afebbd..9b65f764 100644 --- a/src/dynarec/dynarec_arm64_d8.c +++ b/src/dynarec/dynarec_arm64_d8.c @@ -26,9 +26,11 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t nextop = F8; uint8_t ed; - int fixedaddress; + int64_t fixedaddress; int v1, v2; int s0; @@ -228,4 +230,3 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_d9.c b/src/dynarec/dynarec_arm64_d9.c index b729eb8c..f152860a 100644 --- a/src/dynarec/dynarec_arm64_d9.c +++ b/src/dynarec/dynarec_arm64_d9.c @@ -26,10 +26,12 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t nextop = F8; uint8_t ed; uint8_t wback, wb1; - int fixedaddress; + int64_t fixedaddress; int v1, v2; int s0; int i1, i2, i3; @@ -336,4 +338,3 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_db.c b/src/dynarec/dynarec_arm64_db.c index e2922b31..23a6926a 100644 --- a/src/dynarec/dynarec_arm64_db.c +++ b/src/dynarec/dynarec_arm64_db.c @@ -26,19 +26,21 @@ uintptr_t dynarec64_DB(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t nextop = F8; uint8_t ed; uint8_t wback; uint8_t u8; - int fixedaddress; + int64_t fixedaddress; int v1, v2; int s0; - int j32; + int64_t j64; MAYUSE(s0); MAYUSE(v2); MAYUSE(v1); - MAYUSE(j32); + MAYUSE(j64); switch(nextop) { case 0xC0: @@ -286,4 +288,3 @@ uintptr_t dynarec64_DB(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_dd.c b/src/dynarec/dynarec_arm64_dd.c index 0324cba1..7b6cf750 100644 --- a/src/dynarec/dynarec_arm64_dd.c +++ b/src/dynarec/dynarec_arm64_dd.c @@ -26,9 +26,11 @@ uintptr_t dynarec64_DD(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t nextop = F8; uint8_t ed; - int fixedaddress; + int64_t fixedaddress; int v1, v2; int s0; @@ -195,4 +197,3 @@ uintptr_t dynarec64_DD(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_df.c b/src/dynarec/dynarec_arm64_df.c index 981fe830..e044c7f0 100644 --- a/src/dynarec/dynarec_arm64_df.c +++ b/src/dynarec/dynarec_arm64_df.c @@ -26,17 +26,19 @@ uintptr_t dynarec64_DF(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t nextop = F8; uint8_t ed, wback, u8; - int fixedaddress; int v1, v2; - int j32; int s0; + int64_t j64; + int64_t fixedaddress; MAYUSE(s0); MAYUSE(v2); MAYUSE(v1); - MAYUSE(j32); + MAYUSE(j64); switch(nextop) { case 0xC0: @@ -286,4 +288,3 @@ uintptr_t dynarec64_DF(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_emit_logic.c b/src/dynarec/dynarec_arm64_emit_logic.c index d797a704..5255f47c 100755 --- a/src/dynarec/dynarec_arm64_emit_logic.c +++ b/src/dynarec/dynarec_arm64_emit_logic.c @@ -23,9 +23,10 @@ #include "dynarec_arm64_functions.h" #include "dynarec_arm64_helper.h" -// emit OR32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit OR32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_or32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -89,9 +90,10 @@ void emit_or32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, int } } -// emit XOR32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit XOR32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_xor32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -155,9 +157,10 @@ void emit_xor32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, in } } -// emit AND32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit AND32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_and32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -227,9 +230,10 @@ void emit_and32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, in } } -// emit OR8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit OR8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_or8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -292,9 +296,10 @@ void emit_or8c(dynarec_arm_t* dyn, int ninst, int s1, int32_t c, int s3, int s4) } } -// emit XOR8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit XOR8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_xor8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -357,9 +362,10 @@ void emit_xor8c(dynarec_arm_t* dyn, int ninst, int s1, int32_t c, int s3, int s4 } } -// emit AND8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit AND8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_and8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -429,9 +435,10 @@ void emit_and8c(dynarec_arm_t* dyn, int ninst, int s1, int32_t c, int s3, int s4 } -// emit OR16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit OR16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_or16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -507,9 +514,10 @@ void emit_or16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) // } //} -// emit XOR16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit XOR16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_xor16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -585,9 +593,10 @@ void emit_xor16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) // } //} -// emit AND16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) +// emit AND16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch, s4 can be same as s2 (and so s2 destroyed) void emit_and16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -667,4 +676,4 @@ void emit_and16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) // IFX(X_PF) { // emit_pf(dyn, ninst, s1, s3, s4); // } -//} \ No newline at end of file +//} diff --git a/src/dynarec/dynarec_arm64_emit_math.c b/src/dynarec/dynarec_arm64_emit_math.c index 67c80185..8b5ef974 100755 --- a/src/dynarec/dynarec_arm64_emit_math.c +++ b/src/dynarec/dynarec_arm64_emit_math.c @@ -23,9 +23,10 @@ #include "dynarec_arm64_functions.h" #include "dynarec_arm64_helper.h" -// emit ADD32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit ADD32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_add32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -76,9 +77,10 @@ void emit_add32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 } } -// emit ADD32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit ADD32 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch void emit_add32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, int s3, int s4, int s5) { + MAYUSE(s5); if(s1==xRSP && (!dyn->insts || dyn->insts[ninst].x64.need_flags==X_PEND)) { // special case when doing math on ESP and only PEND is needed: ignoring it! @@ -151,9 +153,10 @@ void emit_add32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, in } } -// emit SUB32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit SUB32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sub32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -206,9 +209,10 @@ void emit_sub32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 } } -// emit SUB32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SUB32 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch void emit_sub32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, int s3, int s4, int s5) { + MAYUSE(s5); if(s1==xRSP && (!dyn->insts || dyn->insts[ninst].x64.need_flags==X_PEND)) { // special case when doing math on RSP and only PEND is needed: ignoring it! @@ -282,9 +286,10 @@ void emit_sub32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, in } } -// emit ADD8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADD8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_add8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -331,7 +336,7 @@ void emit_add8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit ADD8 instruction, from s1 , const c, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADD8 instruction, from s1, const c, store result in s1 using s3 and s4 as scratch void emit_add8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) { IFX(X_PEND) { @@ -383,9 +388,10 @@ void emit_add8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) } } -// emit SUB8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit SUB8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sub8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -434,9 +440,10 @@ void emit_sub8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit SUB8 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SUB8 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch void emit_sub8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, int s5) { + MAYUSE(s5); IFX(X_ALL|X_PEND) { MOV32w(s5, c&0xff); } @@ -491,9 +498,10 @@ void emit_sub8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, in } } -// emit ADD16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADD16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_add16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -541,7 +549,7 @@ void emit_add16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit ADD16 instruction, from s1 , const c, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADD16 instruction, from s1, const c, store result in s1 using s3 and s4 as scratch //void emit_add16c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) //{ // IFX(X_PEND) { @@ -608,9 +616,10 @@ void emit_add16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) // } //} -// emit SUB16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit SUB16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sub16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -659,7 +668,7 @@ void emit_sub16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit SUB16 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SUB16 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch //void emit_sub16c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) //{ // IFX(X_PEND) { @@ -777,7 +786,7 @@ void emit_inc32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s3, int s4 } } -// emit INC8 instruction, from s1, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit INC8 instruction, from s1, store result in s1 using s3 and s4 as scratch void emit_inc8(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) { IFX(X_PEND) { @@ -822,7 +831,7 @@ void emit_inc8(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) } } -// emit INC16 instruction, from s1 , store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit INC16 instruction, from s1, store result in s1 using s3 and s4 as scratch void emit_inc16(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) { IFX(X_PEND) { @@ -1009,9 +1018,10 @@ void emit_dec16(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) } } -// emit ADC32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit ADC32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_adc32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1062,7 +1072,7 @@ void emit_adc32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 } } -// emit ADC32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit ADC32 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch //void emit_adc32c(dynarec_arm_t* dyn, int ninst, int s1, int32_t c, int s3, int s4) //{ // IFX(X_PEND) { @@ -1132,9 +1142,10 @@ void emit_adc32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 // } //} -// emit ADC8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADC8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_adc8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1185,9 +1196,10 @@ void emit_adc8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit ADC8 instruction, from s1 , const c, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADC8 instruction, from s1, const c, store result in s1 using s3 and s4 as scratch void emit_adc8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, int s5) { + MAYUSE(s5); MOV32w(s5, c&0xff); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); @@ -1239,9 +1251,10 @@ void emit_adc8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, in } } -// emit ADC16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADC16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_adc16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1292,7 +1305,7 @@ void emit_adc16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit ADC16 instruction, from s1 , const c, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit ADC16 instruction, from s1, const c, store result in s1 using s3 and s4 as scratch //void emit_adc16c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) //{ // IFX(X_PEND) { @@ -1359,9 +1372,10 @@ void emit_adc16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) // } //} -// emit SBB32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch +// emit SBB32 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sbb32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1414,7 +1428,7 @@ void emit_sbb32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 } } -// emit SBB32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SBB32 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch //void emit_sbb32c(dynarec_arm_t* dyn, int ninst, int s1, int32_t c, int s3, int s4) //{ // IFX(X_PEND) { @@ -1486,9 +1500,10 @@ void emit_sbb32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 // } //} -// emit SBB8 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit SBB8 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sbb8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1540,9 +1555,10 @@ void emit_sbb8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit SBB8 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SBB8 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch void emit_sbb8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, int s5) { + MAYUSE(s5); MOV32w(s5, c&0xff); IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); @@ -1595,9 +1611,10 @@ void emit_sbb8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4, in } } -// emit SBB16 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, with save_s4 is s4 need to be saved +// emit SBB16 instruction, from s1, s2, store result in s1 using s3 and s4 as scratch void emit_sbb16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) { + MAYUSE(s2); IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -1649,7 +1666,7 @@ void emit_sbb16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4) } } -// emit SBB16 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch +// emit SBB16 instruction, from s1, constant c, store result in s1 using s3 and s4 as scratch //void emit_sbb16c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) //{ // IFX(X_PEND) { @@ -1853,4 +1870,4 @@ void emit_neg8(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) IFX(X_PF) { emit_pf(dyn, ninst, s1, s3, s4); } -} \ No newline at end of file +} diff --git a/src/dynarec/dynarec_arm64_emit_shift.c b/src/dynarec/dynarec_arm64_emit_shift.c index 98ed81f5..d252997f 100755 --- a/src/dynarec/dynarec_arm64_emit_shift.c +++ b/src/dynarec/dynarec_arm64_emit_shift.c @@ -26,8 +26,9 @@ // emit SHL32 instruction, from s1 , shift s2, store result in s1 using s3 and s4 as scratch. s3 can be same as s2 void emit_shl32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { - int32_t j32; - MAYUSE(j32); + MAYUSE(s2); + int64_t j64; + MAYUSE(j64); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); @@ -138,8 +139,9 @@ void emit_shl32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, in // emit SHR32 instruction, from s1 , s2, store result in s1 using s3 and s4 as scratch, s2 can be same as s3 void emit_shr32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { - int32_t j32; - MAYUSE(j32); + MAYUSE(s2); + int64_t j64; + MAYUSE(j64); IFX(X_PEND) { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); @@ -281,6 +283,7 @@ void emit_sar32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, in // emit ROL32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch void emit_rol32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, int s3, int s4) { + MAYUSE(rex); MAYUSE(s1); MAYUSE(s3); MAYUSE(s4); IFX(X_PEND) { MOV32w(s3, c); STRxw_U12(s3, xEmu, offsetof(x64emu_t, op2)); @@ -312,6 +315,7 @@ void emit_rol32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, in // emit ROR32 instruction, from s1 , constant c, store result in s1 using s3 and s4 as scratch void emit_ror32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int32_t c, int s3, int s4) { + MAYUSE(s1); MAYUSE(s3); MAYUSE(s4); IFX(X_PEND) { MOV32w(s3, c); STRxw_U12(s3, xEmu, offsetof(x64emu_t, op2)); diff --git a/src/dynarec/dynarec_arm64_emit_tests.c b/src/dynarec/dynarec_arm64_emit_tests.c index bf14b8cc..ad9e08a2 100755 --- a/src/dynarec/dynarec_arm64_emit_tests.c +++ b/src/dynarec/dynarec_arm64_emit_tests.c @@ -23,9 +23,10 @@ #include "dynarec_arm64_functions.h" #include "dynarec_arm64_helper.h" -// emit CMP32 instruction, from cmp s1 , s2, using s3 and s4 as scratch +// emit CMP32 instruction, from cmp s1, s2, using s3 and s4 as scratch void emit_cmp32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4, int s5) { + MAYUSE(s1); MAYUSE(s2); IFX_PENDOR0 { STRxw_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRxw_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -110,9 +111,10 @@ void emit_cmp32_0(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s3, int } } -// emit CMP16 instruction, from cmp s1 , s2, using s3 and s4 as scratch +// emit CMP16 instruction, from cmp s1, s2, using s3 and s4 as scratch void emit_cmp16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4, int s5) { + MAYUSE(s1); MAYUSE(s2); IFX_PENDOR0 { STRH_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRH_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -189,9 +191,10 @@ void emit_cmp16_0(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) emit_pf(dyn, ninst, s1, s3, s4); } } -// emit CMP8 instruction, from cmp s1 , s2, using s3 and s4 as scratch +// emit CMP8 instruction, from cmp s1, s2, using s3 and s4 as scratch void emit_cmp8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4, int s5) { + MAYUSE(s1); MAYUSE(s2); IFX_PENDOR0 { STRB_U12(s1, xEmu, offsetof(x64emu_t, op1)); STRB_U12(s2, xEmu, offsetof(x64emu_t, op2)); @@ -270,9 +273,10 @@ void emit_cmp8_0(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) } } -// emit TEST32 instruction, from test s1 , s2, using s3 and s4 as scratch +// emit TEST32 instruction, from test s1, s2, using s3 and s4 as scratch void emit_test32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3, int s4) { + MAYUSE(s1); MAYUSE(s2); MAYUSE(s3); MAYUSE(s4); IFX_PENDOR0 { SET_DF(s3, rex.w?d_tst64:d_tst32); } else { @@ -307,9 +311,10 @@ void emit_test32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s } } -// emit TEST16 instruction, from test s1 , s2, using s3 and s4 as scratch +// emit TEST16 instruction, from test s1, s2, using s3 and s4 as scratch void emit_test16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4, int s5) { + MAYUSE(s1); MAYUSE(s2); IFX_PENDOR0 { SET_DF(s3, d_tst16); } else { @@ -339,9 +344,10 @@ void emit_test16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4, } } -// emit TEST8 instruction, from test s1 , s2, using s3 and s4 as scratch +// emit TEST8 instruction, from test s1, s2, using s3 and s4 as scratch void emit_test8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4, int s5) { + MAYUSE(s1); MAYUSE(s2); IFX_PENDOR0 { SET_DF(s3, d_tst8); } else { diff --git a/src/dynarec/dynarec_arm64_f0.c b/src/dynarec/dynarec_arm64_f0.c index 620a03a7..ebddf6d3 100644 --- a/src/dynarec/dynarec_arm64_f0.c +++ b/src/dynarec/dynarec_arm64_f0.c @@ -25,17 +25,18 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int rep, int* ok, int* need_epilog) { + (void)ip; (void)rep; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop; - int32_t j32; uint8_t gd, ed; uint8_t wback, wb2, gb1, gb2; - int64_t i64; - int fixedaddress; + int64_t i64, j64; + int64_t fixedaddress; MAYUSE(gb1); MAYUSE(gb2); MAYUSE(wb2); - MAYUSE(j32); + MAYUSE(j64); while((opcode==0xF2) || (opcode==0xF3)) { rep = opcode-0xF1; @@ -441,4 +442,3 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } return addr; } - diff --git a/src/dynarec/dynarec_arm64_f20f.c b/src/dynarec/dynarec_arm64_f20f.c index 3957e9d7..999c5c2e 100755 --- a/src/dynarec/dynarec_arm64_f20f.c +++ b/src/dynarec/dynarec_arm64_f20f.c @@ -42,6 +42,8 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int* ok, int* need_epilog) { + (void)ip; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop; uint8_t gd, ed; @@ -51,7 +53,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n int v0, v1; int q0; int d0, d1; - int fixedaddress; + int64_t fixedaddress; #ifdef PRECISE_CVT int j32; @@ -316,4 +318,3 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } return addr; } - diff --git a/src/dynarec/dynarec_arm64_f30f.c b/src/dynarec/dynarec_arm64_f30f.c index 82f47d54..ded6e40a 100755 --- a/src/dynarec/dynarec_arm64_f30f.c +++ b/src/dynarec/dynarec_arm64_f30f.c @@ -42,6 +42,8 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, rex_t rex, int* ok, int* need_epilog) { + (void)ip; (void)need_epilog; + uint8_t opcode = F8; uint8_t nextop, u8; uint8_t gd, ed; @@ -50,8 +52,8 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n int v0, v1; int q0, q1; int d0, d1; - int fixedaddress; - int j32; + int64_t fixedaddress; + int64_t j64; MAYUSE(d0); MAYUSE(d1); @@ -59,7 +61,7 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n MAYUSE(q1); MAYUSE(v0); MAYUSE(v1); - MAYUSE(j32); + MAYUSE(j64); switch(opcode) { @@ -396,4 +398,3 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } return addr; } - diff --git a/src/dynarec/dynarec_arm64_functions.c b/src/dynarec/dynarec_arm64_functions.c index da6175af..f9b051e3 100755 --- a/src/dynarec/dynarec_arm64_functions.c +++ b/src/dynarec/dynarec_arm64_functions.c @@ -36,7 +36,8 @@ void arm_fstp(x64emu_t* emu, void* p) void arm_print_armreg(x64emu_t* emu, uintptr_t reg, uintptr_t n) { - dynarec_log(LOG_DEBUG, "R%ld=0x%lx (%ld)\n", n, reg, reg); + (void)emu; + dynarec_log(LOG_DEBUG, "R%lu=0x%lx (%lu)\n", n, reg, reg); } void arm_f2xm1(x64emu_t* emu) @@ -118,7 +119,7 @@ void arm_fbstp(x64emu_t* emu, uint8_t* ed) void arm_fistp64(x64emu_t* emu, int64_t* ed) { // used of memcpy to avoid aligments issues - if(STll(0).ref==ST(0).q) { + if((uint64_t)STll(0).ref==ST(0).q) { memcpy(ed, &STll(0).ll, sizeof(int64_t)); } else { int64_t tmp; @@ -244,6 +245,7 @@ void fpu_reset_reg(dynarec_arm_t* dyn) // Get if ED will have the correct parity. Not emiting anything. Parity is 2 for DWORD or 3 for QWORD int getedparity(dynarec_arm_t* dyn, int ninst, uintptr_t addr, uint8_t nextop, int parity, int delta) { + (void)dyn; (void)ninst; uint32_t tested = (1<<parity)-1; if((nextop&0xC0)==0xC0) @@ -282,6 +284,8 @@ int getedparity(dynarec_arm_t* dyn, int ninst, uintptr_t addr, uint8_t nextop, i // Do the GETED, but don't emit anything... uintptr_t fakeed(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop) { + (void)dyn; (void)addr; (void)ninst; + if((nextop&0xC0)==0xC0) return addr; if(!(nextop&0xC0)) { @@ -310,6 +314,8 @@ uintptr_t fakeed(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop) int isNativeCall(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t* calladdress, int* retn) { + (void)dyn; + #define PK(a) *(uint8_t*)(addr+a) #define PK32(a) *(int32_t*)(addr+a) @@ -332,4 +338,3 @@ int isNativeCall(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t* calladdress, int #undef PK32 #undef PK } - diff --git a/src/dynarec/dynarec_arm64_helper.c b/src/dynarec/dynarec_arm64_helper.c index f3b9b95f..6fe90924 100755 --- a/src/dynarec/dynarec_arm64_helper.c +++ b/src/dynarec/dynarec_arm64_helper.c @@ -26,8 +26,10 @@ #include "dynarec_arm64_helper.h" /* setup r2 to address pointed by ED, also fixaddress is an optionnal delta in the range [-absmax, +absmax], with delta&mask==0 to be added to ed for LDR/STR */ -uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta) +uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta) { + MAYUSE(dyn); MAYUSE(ninst); MAYUSE(delta); + uint8_t ret = x2; uint8_t scratch = x2; *fixaddress = 0; @@ -41,7 +43,7 @@ uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, u uint8_t sib = F8; int sib_reg = ((sib>>3)&7)+(rex.x<<3); if((sib&0x7)==5) { - uint64_t tmp = F32S64; + int64_t tmp = F32S; if (sib_reg!=4) { if(tmp && ((tmp<absmin) || (tmp>absmax) || (tmp&mask))) { MOV64x(scratch, tmp); @@ -141,8 +143,10 @@ uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, u } /* setup r2 to address pointed by ED, also fixaddress is an optionnal delta in the range [-absmax, +absmax], with delta&mask==0 to be added to ed for LDR/STR */ -uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta) +uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta) { + MAYUSE(dyn); MAYUSE(ninst); MAYUSE(delta); + uint8_t ret = x2; uint8_t scratch = x2; *fixaddress = 0; @@ -156,17 +160,17 @@ uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t sib = F8; int sib_reg = ((sib>>3)&7)+(rex.x<<3); if((sib&0x7)==5) { - uint32_t tmp = F32; + int64_t tmp = F32S; if (sib_reg!=4) { if(tmp && ((tmp<absmin) || (tmp>absmax) || (tmp&mask))) { - MOV32w(scratch, tmp); + MOV64x(scratch, tmp); ADDw_REG_LSL(ret, scratch, xRAX+sib_reg, (sib>>6)); } else { LSLw(ret, xRAX+sib_reg, (sib>>6)); *fixaddress = tmp; } } else { - MOV32w(ret, tmp); + MOV64x(ret, tmp); } } else { if (sib_reg!=4) { @@ -260,8 +264,10 @@ uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, } /* setup r2 to address pointed by ED, r3 as scratch also fixaddress is an optionnal delta in the range [-absmax, +absmax], with delta&mask==0 to be added to ed for LDR/STR */ -uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, int s) +uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, int s) { + MAYUSE(dyn); MAYUSE(ninst); + uint8_t ret = x2; uint8_t scratch = x3; *fixaddress = 0; @@ -270,7 +276,7 @@ uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, MAYUSE(scratch); uint32_t m = nextop&0xC7; uint32_t n = (m>>6)&3; - int32_t offset = 0; + int64_t offset = 0; int absmin = 0; if(s) absmin = -absmax; if(!n && m==6) { @@ -338,7 +344,9 @@ uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, void jump_to_epilog(dynarec_arm_t* dyn, uintptr_t ip, int reg, int ninst) { + MAYUSE(dyn); MAYUSE(ip); MAYUSE(ninst); MESSAGE(LOG_DUMP, "Jump to epilog\n"); + if(reg) { if(reg!=xRIP) { MOVx_REG(xRIP, reg); @@ -352,6 +360,7 @@ void jump_to_epilog(dynarec_arm_t* dyn, uintptr_t ip, int reg, int ninst) void jump_to_next(dynarec_arm_t* dyn, uintptr_t ip, int reg, int ninst) { + MAYUSE(dyn); MAYUSE(ninst); MESSAGE(LOG_DUMP, "Jump to next\n"); if(reg) { @@ -387,7 +396,8 @@ void jump_to_next(dynarec_arm_t* dyn, uintptr_t ip, int reg, int ninst) void ret_to_epilog(dynarec_arm_t* dyn, int ninst) { - MESSAGE(LOG_DUMP, "Ret next\n"); + MAYUSE(dyn); MAYUSE(ninst); + MESSAGE(LOG_DUMP, "Ret to epilog\n"); POP1(xRIP); uintptr_t tbl = getJumpTable64(); MOV64x(x2, tbl); @@ -405,7 +415,8 @@ void ret_to_epilog(dynarec_arm_t* dyn, int ninst) void retn_to_epilog(dynarec_arm_t* dyn, int ninst, int n) { - MESSAGE(LOG_DUMP, "Retn epilog\n"); + MAYUSE(dyn); MAYUSE(ninst); + MESSAGE(LOG_DUMP, "Retn to epilog\n"); POP1(xRIP); if(n>0xfff) { MOV32w(w1, n); @@ -429,7 +440,8 @@ void retn_to_epilog(dynarec_arm_t* dyn, int ninst, int n) void iret_to_epilog(dynarec_arm_t* dyn, int ninst) { - MESSAGE(LOG_DUMP, "IRet epilog\n"); + MAYUSE(ninst); + MESSAGE(LOG_DUMP, "IRet to epilog\n"); // POP IP POP1(xRIP); // POP CS @@ -450,6 +462,7 @@ void iret_to_epilog(dynarec_arm_t* dyn, int ninst) void call_c(dynarec_arm_t* dyn, int ninst, void* fnc, int reg, int ret, int saveflags, int savereg) { + MAYUSE(fnc); if(savereg==0) savereg = 7; if(saveflags) { @@ -494,8 +507,9 @@ void call_c(dynarec_arm_t* dyn, int ninst, void* fnc, int reg, int ret, int save void grab_segdata(dynarec_arm_t* dyn, uintptr_t addr, int ninst, int reg, int segment) { - int32_t j32; - MAYUSE(j32); + (void)addr; + int64_t j64; + MAYUSE(j64); MESSAGE(LOG_DUMP, "Get %s Offset\n", (segment==_FS)?"FS":"GS"); int t1 = x1, t2 = x4; if(reg==t1) ++t1; @@ -519,16 +533,20 @@ void grab_segdata(dynarec_arm_t* dyn, uintptr_t addr, int ninst, int reg, int se // x87 stuffs static void x87_reset(dynarec_arm_t* dyn, int ninst) { + (void)ninst; #if STEP > 1 for (int i=0; i<8; ++i) dyn->x87cache[i] = -1; dyn->x87stack = 0; +#else + (void)dyn; #endif } void x87_stackcount(dynarec_arm_t* dyn, int ninst, int scratch) { #if STEP > 1 + MAYUSE(scratch); if(!dyn->x87stack) return; MESSAGE(LOG_DUMP, "\tSynch x87 Stackcount (%d)\n", dyn->x87stack); @@ -553,11 +571,14 @@ void x87_stackcount(dynarec_arm_t* dyn, int ninst, int scratch) // reset x87stack dyn->x87stack = 0; MESSAGE(LOG_DUMP, "\t------x87 Stackcount\n"); +#else + (void)dyn; (void)ninst; (void)scratch; #endif } int x87_do_push(dynarec_arm_t* dyn, int ninst) { + (void)ninst; #if STEP > 1 dyn->x87stack+=1; // move all regs in cache, and find a free one @@ -571,6 +592,7 @@ int x87_do_push(dynarec_arm_t* dyn, int ninst) } return ret; #else + (void)dyn; return 0; #endif } @@ -584,10 +606,13 @@ void x87_do_push_empty(dynarec_arm_t* dyn, int ninst, int s1) ++dyn->x87cache[i]; if(s1) x87_stackcount(dyn, ninst, s1); +#else + (void)dyn; (void)ninst; (void)s1; #endif } void x87_do_pop(dynarec_arm_t* dyn, int ninst) { + (void)ninst; #if STEP > 1 dyn->x87stack-=1; // move all regs in cache, poping ST0 @@ -599,12 +624,16 @@ void x87_do_pop(dynarec_arm_t* dyn, int ninst) dyn->x87reg[i] = -1; } } +#else + (void)dyn; #endif } void x87_purgecache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) { + (void)ninst; #if STEP > 1 + MAYUSE(s1); MAYUSE(s2); MAYUSE(s3); int ret = 0; for (int i=0; i<8 && !ret; ++i) if(dyn->x87cache[i] != -1) @@ -666,6 +695,8 @@ void x87_purgecache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) dyn->x87cache[i] = -1; } } +#else + (void)dyn; (void)s1; (void)s2; (void)s3; #endif } @@ -673,6 +704,7 @@ void x87_purgecache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) static void x87_reflectcache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) { #if STEP > 1 + MAYUSE(s2); MAYUSE(s3); x87_stackcount(dyn, ninst, s1); int ret = 0; for (int i=0; (i<8) && (!ret); ++i) @@ -691,13 +723,17 @@ static void x87_reflectcache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int ANDw_mask(s3, s3, 0, 2); // mask=7 // (emu->top + i)&7 VSTR64_REG_LSL3(dyn->x87reg[i], s1, s3); } +#else + (void)dyn; (void)ninst; (void)s1; (void)s2; (void)s3; #endif } #endif int x87_get_cache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) { + (void)ninst; #if STEP > 1 + MAYUSE(s1); MAYUSE(s2); // search in cache first for (int i=0; i<8; ++i) if(dyn->x87cache[i]==st) @@ -727,6 +763,7 @@ int x87_get_cache(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) return ret; #else + (void)dyn; (void)s1; (void)s2; (void)st; return 0; #endif } @@ -736,6 +773,7 @@ int x87_get_st(dynarec_arm_t* dyn, int ninst, int s1, int s2, int a) #if STEP > 1 return dyn->x87reg[x87_get_cache(dyn, ninst, s1, s2, a)]; #else + (void)dyn; (void)ninst; (void)s1; (void)s2; (void)a; return 0; #endif } @@ -744,6 +782,7 @@ int x87_get_st(dynarec_arm_t* dyn, int ninst, int s1, int s2, int a) void x87_refresh(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) { #if STEP > 1 + MAYUSE(s2); x87_stackcount(dyn, ninst, s1); int ret = -1; for (int i=0; (i<8) && (ret==-1); ++i) @@ -763,12 +802,15 @@ void x87_refresh(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) } VLDR64_REG_LSL3(dyn->x87reg[ret], s1, s2); MESSAGE(LOG_DUMP, "\t--------x87 Cache for ST%d\n", st); +#else + (void)dyn; (void)ninst; (void)s1; (void)s2; (void)st; #endif } void x87_forget(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) { #if STEP > 1 + MAYUSE(s2); x87_stackcount(dyn, ninst, s1); int ret = -1; for (int i=0; (i<8) && (ret==-1); ++i) @@ -792,12 +834,16 @@ void x87_forget(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) fpu_free_reg(dyn, dyn->x87reg[ret]); dyn->x87cache[ret] = -1; dyn->x87reg[ret] = -1; +#else + (void)dyn; (void)ninst; (void)s1; (void)s2; (void)st; #endif } void x87_reget_st(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) { + (void)ninst; #if STEP > 1 + MAYUSE(s1); MAYUSE(s2); // search in cache first for (int i=0; i<8; ++i) if(dyn->x87cache[i]==st) { @@ -838,6 +884,8 @@ void x87_reget_st(dynarec_arm_t* dyn, int ninst, int s1, int s2, int st) ANDw_mask(s2, s2, 0, 2); //mask=7 // (emu->top + i)&7 VLDR64_REG_LSL3(dyn->x87reg[ret], s1, s2); MESSAGE(LOG_DUMP, "\t-------x87 Cache for ST%d\n", st); +#else + (void)dyn; (void)s1; (void)s2; (void)st; #endif } @@ -846,6 +894,8 @@ static int round_map[] = {0, 2, 1, 3}; // map x64 -> arm round flag // Set rounding according to cw flags, return reg to restore flags int x87_setround(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) { + MAYUSE(dyn); MAYUSE(ninst); + MAYUSE(s1); MAYUSE(s2); LDRH_U12(s1, xEmu, offsetof(x64emu_t, cw)); UBFXx(s2, s1, 10, 2); // extract round... MOV64x(s1, (uintptr_t)round_map); @@ -860,6 +910,8 @@ int x87_setround(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) // Set rounding according to mxcsr flags, return reg to restore flags int sse_setround(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) { + MAYUSE(dyn); MAYUSE(ninst); + MAYUSE(s1); MAYUSE(s2); LDRH_U12(s1, xEmu, offsetof(x64emu_t, mxcsr)); UBFXx(s2, s1, 13, 2); // extract round... MOV64x(s1, (uintptr_t)round_map); @@ -874,20 +926,27 @@ int sse_setround(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3) // Restore round flag void x87_restoreround(dynarec_arm_t* dyn, int ninst, int s1) { + MAYUSE(dyn); MAYUSE(ninst); + MAYUSE(s1); MSR_fpcr(s1); // put back fpscr } // MMX helpers static void mmx_reset(dynarec_arm_t* dyn, int ninst) { + (void)ninst; #if STEP > 1 + MAYUSE(dyn); for (int i=0; i<8; ++i) dyn->mmxcache[i] = -1; +#else + (void)dyn; #endif } // get neon register for a MMX reg, create the entry if needed int mmx_get_reg(dynarec_arm_t* dyn, int ninst, int s1, int a) { + (void)ninst; (void)s1; #if STEP > 1 if(dyn->mmxcache[a]!=-1) return dyn->mmxcache[a]; @@ -895,24 +954,28 @@ int mmx_get_reg(dynarec_arm_t* dyn, int ninst, int s1, int a) VLDR64_U12(ret, xEmu, offsetof(x64emu_t, mmx87[a])); return ret; #else + (void)dyn; (void)a; return 0; #endif } // get neon register for a MMX reg, but don't try to synch it if it needed to be created int mmx_get_reg_empty(dynarec_arm_t* dyn, int ninst, int s1, int a) { + (void)ninst; (void)s1; #if STEP > 1 if(dyn->mmxcache[a]!=-1) return dyn->mmxcache[a]; int ret = dyn->mmxcache[a] = fpu_get_reg_emm(dyn, a); return ret; #else + (void)dyn; (void)a; return 0; #endif } // purge the MMX cache only(needs 3 scratch registers) void mmx_purgecache(dynarec_arm_t* dyn, int ninst, int s1) { + (void)ninst; (void)s1; #if STEP > 1 int old = -1; for (int i=0; i<8; ++i) @@ -928,16 +991,21 @@ void mmx_purgecache(dynarec_arm_t* dyn, int ninst, int s1) if(old!=-1) { MESSAGE(LOG_DUMP, "\t------ Purge MMX Cache\n"); } +#else + (void)dyn; #endif } #ifdef HAVE_TRACE static void mmx_reflectcache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 for (int i=0; i<8; ++i) if(dyn->mmxcache[i]!=-1) { VLDR64_U12(dyn->mmxcache[i], xEmu, offsetof(x64emu_t, mmx87[i])); } +#else + (void)dyn; #endif } #endif @@ -946,14 +1014,18 @@ static void mmx_reflectcache(dynarec_arm_t* dyn, int ninst, int s1) // SSE / SSE2 helpers static void sse_reset(dynarec_arm_t* dyn, int ninst) { + (void)ninst; #if STEP > 1 for (int i=0; i<16; ++i) dyn->ssecache[i] = -1; +#else + (void)dyn; #endif } // get neon register for a SSE reg, create the entry if needed int sse_get_reg(dynarec_arm_t* dyn, int ninst, int s1, int a) { + (void) ninst; (void)s1; #if STEP > 1 if(dyn->ssecache[a]!=-1) return dyn->ssecache[a]; @@ -961,24 +1033,28 @@ int sse_get_reg(dynarec_arm_t* dyn, int ninst, int s1, int a) VLDR128_U12(ret, xEmu, offsetof(x64emu_t, xmm[a])); return ret; #else + (void)dyn; (void)a; return 0; #endif } // get neon register for a SSE reg, but don't try to synch it if it needed to be created int sse_get_reg_empty(dynarec_arm_t* dyn, int ninst, int s1, int a) { + (void) ninst; (void)s1; #if STEP > 1 if(dyn->ssecache[a]!=-1) return dyn->ssecache[a]; int ret = dyn->ssecache[a] = fpu_get_reg_xmm(dyn, a); return ret; #else + (void)dyn; (void)a; return 0; #endif } // purge the SSE cache for XMM0..XMM7 (to use before function native call) void sse_purge07cache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 int old = -1; for (int i=0; i<8; ++i) @@ -994,12 +1070,15 @@ void sse_purge07cache(dynarec_arm_t* dyn, int ninst, int s1) if(old!=-1) { MESSAGE(LOG_DUMP, "\t------ Purge XMM0..7 Cache\n"); } +#else + (void)dyn; #endif } // purge the SSE cache only static void sse_purgecache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 int old = -1; for (int i=0; i<16; ++i) @@ -1015,22 +1094,28 @@ static void sse_purgecache(dynarec_arm_t* dyn, int ninst, int s1) if(old!=-1) { MESSAGE(LOG_DUMP, "\t------ Purge SSE Cache\n"); } +#else + (void)dyn; #endif } #ifdef HAVE_TRACE static void sse_reflectcache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 for (int i=0; i<16; ++i) if(dyn->ssecache[i]!=-1) { VSTR128_U12(dyn->ssecache[i], xEmu, offsetof(x64emu_t, xmm[i])); } +#else + (void)dyn; #endif } #endif void fpu_pushcache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 // only SSE regs needs to be push back to xEmu int n=0; @@ -1045,11 +1130,14 @@ void fpu_pushcache(dynarec_arm_t* dyn, int ninst, int s1) VSTR128_U12(dyn->ssecache[i], xEmu, offsetof(x64emu_t, xmm[i])); } MESSAGE(LOG_DUMP, "\t------- Push XMM Cache (%d)\n", n); +#else + (void)dyn; #endif } void fpu_popcache(dynarec_arm_t* dyn, int ninst, int s1) { + (void) ninst; (void)s1; #if STEP > 1 // only SSE regs needs to be pop back from xEmu int n=0; @@ -1064,6 +1152,8 @@ void fpu_popcache(dynarec_arm_t* dyn, int ninst, int s1) VLDR128_U12(dyn->ssecache[i], xEmu, offsetof(x64emu_t, xmm[i])); } MESSAGE(LOG_DUMP, "\t------- Pop XMM Cache (%d)\n", n); +#else + (void)dyn; #endif } @@ -1096,6 +1186,8 @@ void fpu_reset(dynarec_arm_t* dyn, int ninst) void emit_pf(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) { + MAYUSE(dyn); MAYUSE(ninst); + MAYUSE(s1); MAYUSE(s3); MAYUSE(s4); // PF: (((emu->x64emu_parity_tab[(res) / 32] >> ((res) % 32)) & 1) == 0) ANDw_mask(s3, s1, 0b011011, 0b000010); // mask=0xE0 LSRw(s3, s3, 5); @@ -1105,4 +1197,4 @@ void emit_pf(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) LSRw_REG(s4, s4, s3); MVNw_REG(s4, s4); BFIw(xFlags, s4, F_PF, 1); -} \ No newline at end of file +} diff --git a/src/dynarec/dynarec_arm64_helper.h b/src/dynarec/dynarec_arm64_helper.h index a86fdca5..854a6457 100755 --- a/src/dynarec/dynarec_arm64_helper.h +++ b/src/dynarec/dynarec_arm64_helper.h @@ -243,115 +243,115 @@ // R0 will not be pushed/popd if ret is -2. Flags are not save/restored #define CALL_S(F, ret) call_c(dyn, ninst, F, x7, ret, 0, 0) -#define MARK if(dyn->insts) {dyn->insts[ninst].mark = (uintptr_t)dyn->arm_size;} +#define MARK if(dyn->insts) {dyn->insts[ninst].mark = dyn->arm_size;} #define GETMARK ((dyn->insts)?dyn->insts[ninst].mark:(dyn->arm_size+4)) -#define MARK2 if(dyn->insts) {dyn->insts[ninst].mark2 = (uintptr_t)dyn->arm_size;} +#define MARK2 if(dyn->insts) {dyn->insts[ninst].mark2 = dyn->arm_size;} #define GETMARK2 ((dyn->insts)?dyn->insts[ninst].mark2:(dyn->arm_size+4)) -#define MARK3 if(dyn->insts) {dyn->insts[ninst].mark3 = (uintptr_t)dyn->arm_size;} +#define MARK3 if(dyn->insts) {dyn->insts[ninst].mark3 = dyn->arm_size;} #define GETMARK3 ((dyn->insts)?dyn->insts[ninst].mark3:(dyn->arm_size+4)) -#define MARKF if(dyn->insts) {dyn->insts[ninst].markf = (uintptr_t)dyn->arm_size;} +#define MARKF if(dyn->insts) {dyn->insts[ninst].markf = dyn->arm_size;} #define GETMARKF ((dyn->insts)?dyn->insts[ninst].markf:(dyn->arm_size+4)) -#define MARKSEG if(dyn->insts) {dyn->insts[ninst].markseg = (uintptr_t)dyn->arm_size;} +#define MARKSEG if(dyn->insts) {dyn->insts[ninst].markseg = dyn->arm_size;} #define GETMARKSEG ((dyn->insts)?dyn->insts[ninst].markseg:(dyn->arm_size+4)) -#define MARKLOCK if(dyn->insts) {dyn->insts[ninst].marklock = (uintptr_t)dyn->arm_size;} +#define MARKLOCK if(dyn->insts) {dyn->insts[ninst].marklock = dyn->arm_size;} #define GETMARKLOCK ((dyn->insts)?dyn->insts[ninst].marklock:(dyn->arm_size+4)) -// Branch to MARK if cond (use j32) +// Branch to MARK if cond (use j64) #define B_MARK(cond) \ - j32 = GETMARK-(dyn->arm_size); \ - Bcond(cond, j32) -// Branch to MARK unconditionnal (use j32) + j64 = GETMARK-(dyn->arm_size); \ + Bcond(cond, j64) +// Branch to MARK unconditionnal (use j64) #define B_MARK_nocond \ - j32 = GETMARK-(dyn->arm_size); \ - B(j32) -// Branch to MARK if reg is 0 (use j32) + j64 = GETMARK-(dyn->arm_size); \ + B(j64) +// Branch to MARK if reg is 0 (use j64) #define CBZxw_MARK(reg) \ - j32 = GETMARK-(dyn->arm_size); \ - CBZxw(reg, j32) -// Branch to MARK if reg is not 0 (use j32) + j64 = GETMARK-(dyn->arm_size); \ + CBZxw(reg, j64) +// Branch to MARK if reg is not 0 (use j64) #define CBNZx_MARK(reg) \ - j32 = GETMARK-(dyn->arm_size); \ - CBNZx(reg, j32) -// Branch to MARK if reg is not 0 (use j32) + j64 = GETMARK-(dyn->arm_size); \ + CBNZx(reg, j64) +// Branch to MARK if reg is not 0 (use j64) #define CBNZw_MARK(reg) \ - j32 = GETMARK-(dyn->arm_size); \ - CBNZw(reg, j32) -// Branch to MARK2 if cond (use j32) + j64 = GETMARK-(dyn->arm_size); \ + CBNZw(reg, j64) +// Branch to MARK2 if cond (use j64) #define B_MARK2(cond) \ - j32 = GETMARK2-(dyn->arm_size); \ - Bcond(cond, j32) -// Branch to MARK2 unconditionnal (use j32) + j64 = GETMARK2-(dyn->arm_size); \ + Bcond(cond, j64) +// Branch to MARK2 unconditionnal (use j64) #define B_MARK2_nocond \ - j32 = GETMARK2-(dyn->arm_size); \ - B(j32) -// Branch to MARK2 if reg is not 0 (use j32) + j64 = GETMARK2-(dyn->arm_size); \ + B(j64) +// Branch to MARK2 if reg is not 0 (use j64) #define CBNZx_MARK2(reg) \ - j32 = GETMARK2-(dyn->arm_size); \ - CBNZx(reg, j32) + j64 = GETMARK2-(dyn->arm_size); \ + CBNZx(reg, j64) // Test bit N of A and branch to MARK2 if set #define TBNZ_MARK2(A, N) \ - j32 = GETMARK2-(dyn->arm_size); \ - TBNZ(A, N, j32) -// Branch to MARK3 if cond (use j32) + j64 = GETMARK2-(dyn->arm_size); \ + TBNZ(A, N, j64) +// Branch to MARK3 if cond (use j64) #define B_MARK3(cond) \ - j32 = GETMARK3-(dyn->arm_size); \ - Bcond(cond, j32) -// Branch to MARK3 unconditionnal (use j32) + j64 = GETMARK3-(dyn->arm_size); \ + Bcond(cond, j64) +// Branch to MARK3 unconditionnal (use j64) #define B_MARK3_nocond \ - j32 = GETMARK3-(dyn->arm_size); \ - B(j32) -// Branch to MARK3 if reg is not 0 (use j32) + j64 = GETMARK3-(dyn->arm_size); \ + B(j64) +// Branch to MARK3 if reg is not 0 (use j64) #define CBNZx_MARK3(reg) \ - j32 = GETMARK3-(dyn->arm_size); \ - CBNZx(reg, j32) + j64 = GETMARK3-(dyn->arm_size); \ + CBNZx(reg, j64) // Test bit N of A and branch to MARK3 if set #define TBNZ_MARK3(A, N) \ - j32 = GETMARK3-(dyn->arm_size); \ - TBNZ(A, N, j32) + j64 = GETMARK3-(dyn->arm_size); \ + TBNZ(A, N, j64) // Test bit N of A and branch to MARK3 if not set #define TBZ_MARK3(A, N) \ - j32 = GETMARK3-(dyn->arm_size); \ - TBZ(A, N, j32) -// Branch to next instruction if cond (use j32) + j64 = GETMARK3-(dyn->arm_size); \ + TBZ(A, N, j64) +// Branch to next instruction if cond (use j64) #define B_NEXT(cond) \ - j32 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ - Bcond(cond, j32) -// Branch to next instruction unconditionnal (use j32) + j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ + Bcond(cond, j64) +// Branch to next instruction unconditionnal (use j64) #define B_NEXT_nocond \ - j32 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0;\ - B(j32) -// Branch to next instruction if reg is 0 (use j32) + j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0;\ + B(j64) +// Branch to next instruction if reg is 0 (use j64) #define CBZw_NEXT(reg) \ - j32 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ - CBZw(reg, j32) -// Branch to next instruction if reg is 0 (use j32) + j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ + CBZw(reg, j64) +// Branch to next instruction if reg is 0 (use j64) #define CBZx_NEXT(reg) \ - j32 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ - CBZx(reg, j32) + j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ + CBZx(reg, j64) // Test bit N of A and branch to next instruction if not set #define TBZ_NEXT(A, N) \ - j32 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ - TBZ(A, N, j32) -// Branch to MARKSEG if cond (use j32) + j64 = (dyn->insts)?(dyn->insts[ninst].epilog-(dyn->arm_size)):0; \ + TBZ(A, N, j64) +// Branch to MARKSEG if cond (use j64) #define B_MARKSEG(cond) \ - j32 = GETMARKSEG-(dyn->arm_size); \ - Bcond(cond, j32) -// Branch to MARKSEG if reg is 0 (use j32) + j64 = GETMARKSEG-(dyn->arm_size); \ + Bcond(cond, j64) +// Branch to MARKSEG if reg is 0 (use j64) #define CBZw_MARKSEG(reg) \ - j32 = GETMARKSEG-(dyn->arm_size); \ - CBZw(reg, j32) -// Branch to MARKSEG if reg is not 0 (use j32) + j64 = GETMARKSEG-(dyn->arm_size); \ + CBZw(reg, j64) +// Branch to MARKSEG if reg is not 0 (use j64) #define CBNZw_MARKSEG(reg) \ - j32 = GETMARKSEG-(dyn->arm_size); \ - CBNZw(reg, j32) -// Branch to MARKLOCK if cond (use j32) + j64 = GETMARKSEG-(dyn->arm_size); \ + CBNZw(reg, j64) +// Branch to MARKLOCK if cond (use j64) #define B_MARKLOCK(cond) \ - j32 = GETMARKLOCK-(dyn->arm_size); \ - Bcond(cond, j32) -// Branch to MARKLOCK if reg is not 0 (use j32) + j64 = GETMARKLOCK-(dyn->arm_size); \ + Bcond(cond, j64) +// Branch to MARKLOCK if reg is not 0 (use j64) #define CBNZx_MARKLOCK(reg) \ - j32 = GETMARKLOCK-(dyn->arm_size); \ - CBNZx(reg, j32) + j64 = GETMARKLOCK-(dyn->arm_size); \ + CBNZx(reg, j64) #define IFX(A) if(dyn->insts && (dyn->insts[ninst].x64.need_flags&(A))) #define IFX_PENDOR0 if(dyn->insts && (dyn->insts[ninst].x64.need_flags&(X_PEND) || !dyn->insts[ninst].x64.need_flags)) @@ -480,8 +480,8 @@ if(((A)!=X_PEND) && dyn->state_flags!=SF_SET) { \ if(dyn->state_flags!=SF_PENDING) { \ LDRw_U12(x3, xEmu, offsetof(x64emu_t, df)); \ - j32 = (GETMARKF)-(dyn->arm_size); \ - CBZw(x3, j32); \ + j64 = (GETMARKF)-(dyn->arm_size); \ + CBZw(x3, j64); \ } \ CALL_(UpdateFlags, -1, 0); \ MARKF; \ @@ -595,16 +595,16 @@ void* arm64_next(x64emu_t* emu, uintptr_t addr); #define dynarec64_F20F STEPNAME(dynarec64_F20F) #define dynarec64_F30F STEPNAME(dynarec64_F30F) -#define geted STEPNAME(geted_) -#define geted32 STEPNAME(geted32_) -#define geted16 STEPNAME(geted16_) -#define jump_to_epilog STEPNAME(jump_to_epilog_) -#define jump_to_next STEPNAME(jump_to_next_) -#define ret_to_epilog STEPNAME(ret_to_epilog_) -#define retn_to_epilog STEPNAME(retn_to_epilog_) -#define iret_to_epilog STEPNAME(iret_to_epilog_) -#define call_c STEPNAME(call_c_) -#define grab_segdata STEPNAME(grab_segdata_) +#define geted STEPNAME(geted) +#define geted32 STEPNAME(geted32) +#define geted16 STEPNAME(geted16) +#define jump_to_epilog STEPNAME(jump_to_epilog) +#define jump_to_next STEPNAME(jump_to_next) +#define ret_to_epilog STEPNAME(ret_to_epilog) +#define retn_to_epilog STEPNAME(retn_to_epilog) +#define iret_to_epilog STEPNAME(iret_to_epilog) +#define call_c STEPNAME(call_c) +#define grab_segdata STEPNAME(grab_segdata) #define emit_cmp8 STEPNAME(emit_cmp8) #define emit_cmp16 STEPNAME(emit_cmp16) #define emit_cmp32 STEPNAME(emit_cmp32) @@ -706,13 +706,13 @@ void* arm64_next(x64emu_t* emu, uintptr_t addr); #endif /* setup r2 to address pointed by */ -uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta); +uintptr_t geted(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta); /* setup r2 to address pointed by */ -uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta); +uintptr_t geted32(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, rex_t rex, int s, int delta); /* setup r2 to address pointed by */ -uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int* fixaddress, int absmax, uint32_t mask, int s); +uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, uint8_t* ed, uint8_t hint, int64_t* fixaddress, int absmax, uint32_t mask, int s); // generic x64 helper @@ -978,4 +978,4 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n , cNE, cEQ, X_SF|X_OF|X_ZF) \ break -#endif //__DYNAREC_ARM64_HELPER_H__ \ No newline at end of file +#endif //__DYNAREC_ARM64_HELPER_H__ diff --git a/src/dynarec/dynarec_arm64_private.h b/src/dynarec/dynarec_arm64_private.h index d1ad28bd..b57a6841 100755 --- a/src/dynarec/dynarec_arm64_private.h +++ b/src/dynarec/dynarec_arm64_private.h @@ -28,7 +28,7 @@ typedef struct dynarec_arm_s { uint32_t isize; // size in byte of x64 instructions included void* block; // memory pointer where next instruction is emited uintptr_t arm_start; // start of the arm code - int arm_size; // size of emitted arm code + size_t arm_size; // size of emitted arm code int state_flags;// actual state for on-demand flags uintptr_t last_ip; // last set IP in RIP (or NULL if unclean state) int8_t x87cache[8];// cache status for the 8 x87 register behind the fpu stack @@ -59,4 +59,4 @@ int is_instructions(dynarec_arm_t *dyn, uintptr_t addr, int n); int Table64(dynarec_arm_t *dyn, uint64_t val); // add a value to etable64 (if needed) and gives back the imm19 to use in LDR_literal -#endif //__DYNAREC_ARM_PRIVATE_H_ \ No newline at end of file +#endif //__DYNAREC_ARM_PRIVATE_H_ diff --git a/src/elfs/elfload_dump.c b/src/elfs/elfload_dump.c index 85d01dcb..0ad72f00 100755 --- a/src/elfs/elfload_dump.c +++ b/src/elfs/elfload_dump.c @@ -253,19 +253,19 @@ void DumpMainHeader(Elf64_Ehdr *header, elfheader_t *h) printf_log(LOG_DUMP, " Section Header table offset = %p\n", (void*)header->e_shoff); printf_log(LOG_DUMP, " Flags = 0x%X\n", header->e_flags); printf_log(LOG_DUMP, " ELF Header size = %d\n", header->e_ehsize); - printf_log(LOG_DUMP, " Program Header Entry num/size = %d(%d)/%d\n", h->numPHEntries, header->e_phnum, header->e_phentsize); - printf_log(LOG_DUMP, " Section Header Entry num/size = %d(%d)/%d\n", h->numSHEntries, header->e_shnum, header->e_shentsize); - printf_log(LOG_DUMP, " Section Header index num = %d(%d)\n", h->SHIdx, header->e_shstrndx); + printf_log(LOG_DUMP, " Program Header Entry num/size = %zu(%d)/%d\n", h->numPHEntries, header->e_phnum, header->e_phentsize); + printf_log(LOG_DUMP, " Section Header Entry num/size = %zu(%d)/%d\n", h->numSHEntries, header->e_shnum, header->e_shentsize); + printf_log(LOG_DUMP, " Section Header index num = %zu(%d)\n", h->SHIdx, header->e_shstrndx); printf_log(LOG_DUMP, "ELF Dump ==========\n"); - printf_log(LOG_DUMP, "ELF Dump PEntries (%d)\n", h->numSHEntries); - for (int i=0; i<h->numPHEntries; ++i) - printf_log(LOG_DUMP, " PHEntry %04d : %s\n", i, DumpPHEntry(h->PHEntries+i)); + printf_log(LOG_DUMP, "ELF Dump PEntries (%zu)\n", h->numPHEntries); + for (size_t i=0; i<h->numPHEntries; ++i) + printf_log(LOG_DUMP, " PHEntry %04zu : %s\n", i, DumpPHEntry(h->PHEntries+i)); printf_log(LOG_DUMP, "ELF Dump PEntries ====\n"); - printf_log(LOG_DUMP, "ELF Dump Sections (%d)\n", h->numSHEntries); - for (int i=0; i<h->numSHEntries; ++i) - printf_log(LOG_DUMP, " Section %04d : %s\n", i, DumpSection(h->SHEntries+i, h->SHStrTab)); + printf_log(LOG_DUMP, "ELF Dump Sections (%zu)\n", h->numSHEntries); + for (size_t i=0; i<h->numSHEntries; ++i) + printf_log(LOG_DUMP, " Section %04zu : %s\n", i, DumpSection(h->SHEntries+i, h->SHStrTab)); printf_log(LOG_DUMP, "ELF Dump Sections ====\n"); } } @@ -274,9 +274,9 @@ void DumpSymTab(elfheader_t *h) { if(box64_log>=LOG_DUMP && h->SymTab) { const char* name = ElfName(h); - printf_log(LOG_DUMP, "ELF Dump SymTab(%d)=\n", h->numSymTab); - for (int i=0; i<h->numSymTab; ++i) - printf_log(LOG_DUMP, " %s:SymTab[%d] = \"%s\", value=%p, size=%ld, info/other=%d/%d index=%d\n", name, + printf_log(LOG_DUMP, "ELF Dump SymTab(%zu)=\n", h->numSymTab); + for (size_t i=0; i<h->numSymTab; ++i) + printf_log(LOG_DUMP, " %s:SymTab[%zu] = \"%s\", value=%p, size=%ld, info/other=%d/%d index=%d\n", name, i, h->StrTab+h->SymTab[i].st_name, (void*)h->SymTab[i].st_value, h->SymTab[i].st_size, h->SymTab[i].st_info, h->SymTab[i].st_other, h->SymTab[i].st_shndx); printf_log(LOG_DUMP, "ELF Dump SymTab=====\n"); @@ -286,9 +286,9 @@ void DumpSymTab(elfheader_t *h) void DumpDynamicSections(elfheader_t *h) { if(box64_log>=LOG_DUMP && h->Dynamic) { - printf_log(LOG_DUMP, "ELF Dump Dynamic(%d)=\n", h->numDynamic); - for (int i=0; i<h->numDynamic; ++i) - printf_log(LOG_DUMP, " Dynamic %04d : %s\n", i, DumpDynamic(h->Dynamic+i)); + printf_log(LOG_DUMP, "ELF Dump Dynamic(%zu)=\n", h->numDynamic); + for (size_t i=0; i<h->numDynamic; ++i) + printf_log(LOG_DUMP, " Dynamic %04zu : %s\n", i, DumpDynamic(h->Dynamic+i)); printf_log(LOG_DUMP, "ELF Dump Dynamic=====\n"); } } @@ -297,9 +297,9 @@ void DumpDynSym(elfheader_t *h) { if(box64_log>=LOG_DUMP && h->DynSym) { const char* name = ElfName(h); - printf_log(LOG_DUMP, "ELF Dump DynSym(%d)=\n", h->numDynSym); - for (int i=0; i<h->numDynSym; ++i) - printf_log(LOG_DUMP, " %s:DynSym[%d] = %s\n", name, i, DumpSym(h, h->DynSym+i)); + printf_log(LOG_DUMP, "ELF Dump DynSym(%zu)=\n", h->numDynSym); + for (size_t i=0; i<h->numDynSym; ++i) + printf_log(LOG_DUMP, " %s:DynSym[%zu] = %s\n", name, i, DumpSym(h, h->DynSym+i)); printf_log(LOG_DUMP, "ELF Dump DynSym=====\n"); } } @@ -308,7 +308,7 @@ void DumpDynamicNeeded(elfheader_t *h) { if(box64_log>=LOG_DUMP && h->DynStrTab) { printf_log(LOG_DUMP, "ELF Dump DT_NEEDED=====\n"); - for (int i=0; i<h->numDynamic; ++i) + for (size_t i=0; i<h->numDynamic; ++i) if(h->Dynamic[i].d_tag==DT_NEEDED) { printf_log(LOG_DUMP, " Needed : %s\n", h->DynStrTab+h->Dynamic[i].d_un.d_val + h->delta); } @@ -320,7 +320,7 @@ void DumpDynamicRPath(elfheader_t *h) { if(box64_log>=LOG_DUMP && h->DynStrTab) { printf_log(LOG_DUMP, "ELF Dump DT_RPATH/DT_RUNPATH=====\n"); - for (int i=0; i<h->numDynamic; ++i) { + for (size_t i=0; i<h->numDynamic; ++i) { if(h->Dynamic[i].d_tag==DT_RPATH) { printf_log(LOG_DUMP, " RPATH : %s\n", h->DynStrTab+h->Dynamic[i].d_un.d_val + h->delta); } diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 4e6a3be9..dd7ab1d1 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -92,7 +92,7 @@ int CalcLoadAddr(elfheader_t* head) head->memsz = 0; head->paddr = head->vaddr = ~(uintptr_t)0; head->align = 1; - for (int i=0; i<head->numPHEntries; ++i) + for (size_t i=0; i<head->numPHEntries; ++i) if(head->PHEntries[i].p_type == PT_LOAD) { if(head->paddr > (uintptr_t)head->PHEntries[i].p_paddr) head->paddr = (uintptr_t)head->PHEntries[i].p_paddr; @@ -107,7 +107,7 @@ int CalcLoadAddr(elfheader_t* head) head->stacksz = 1024*1024; //1M stack size default? head->stackalign = 16; // default align for stack - for (int i=0; i<head->numPHEntries; ++i) { + for (size_t i=0; i<head->numPHEntries; ++i) { if(head->PHEntries[i].p_type == PT_LOAD) { uintptr_t phend = head->PHEntries[i].p_vaddr - head->vaddr + head->PHEntries[i].p_memsz; if(phend > head->memsz) @@ -130,9 +130,9 @@ int CalcLoadAddr(elfheader_t* head) head->tlssize++; } } - printf_log(LOG_DEBUG, "Elf Addr(v/p)=%p/%p Memsize=0x%lx (align=0x%x)\n", (void*)head->vaddr, (void*)head->paddr, head->memsz, head->align); - printf_log(LOG_DEBUG, "Elf Stack Memsize=%lu (align=%u)\n", head->stacksz, head->stackalign); - printf_log(LOG_DEBUG, "Elf TLS Memsize=%u (align=%u)\n", head->tlssize, head->tlsalign); + 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); return 0; } @@ -156,7 +156,7 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) offs = head->vaddr; if(head->vaddr) { head->multiblock_n = 0; // count PHEntrie with LOAD - for (int i=0; i<head->numPHEntries; ++i) + for (size_t i=0; i<head->numPHEntries; ++i) if(head->PHEntries[i].p_type == PT_LOAD && head->PHEntries[i].p_flags) ++head->multiblock_n; head->multiblock_size = (uint64_t*)calloc(head->multiblock_n, sizeof(uint64_t)); @@ -165,11 +165,11 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) // and now, create all individual blocks head->memory = (char*)0xffffffffffffffff; int n = 0; - for (int i=0; i<head->numPHEntries; ++i) + for (size_t i=0; i<head->numPHEntries; ++i) if(head->PHEntries[i].p_type == PT_LOAD && head->PHEntries[i].p_flags) { Elf64_Phdr * e = &head->PHEntries[i]; uintptr_t bstart = e->p_vaddr; - uint32_t bsize = e->p_memsz; + uint64_t bsize = e->p_memsz; uintptr_t balign = e->p_align; if (balign) balign = balign-1; else balign = 1; if(balign<4095) balign = 4095; @@ -206,22 +206,22 @@ 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%x) 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%lx/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%x) 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%lx/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 %p) \"%s\"\n", (void*)head->multiblock_offs[i], p, (void*)head->multiblock_size[i], head->name); + 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); // need to adjust vaddr! - for (int i=0; i<head->numPHEntries; ++i) - if(head->PHEntries[i].p_type == PT_LOAD) { - Elf64_Phdr * e = &head->PHEntries[i]; - if(e->p_vaddr>=head->multiblock_offs[i] && e->p_vaddr<(head->multiblock_offs[i]+head->multiblock_size[i])) { - e->p_vaddr = e->p_vaddr - head->multiblock_offs[i] + (uintptr_t)p; - if(!head->delta) head->delta = (intptr_t)p - (intptr_t)head->multiblock_offs[i]; + for (size_t j=0; j<head->numPHEntries; ++j) + if(head->PHEntries[j].p_type == PT_LOAD) { + Elf64_Phdr * e = &head->PHEntries[j]; + if(e->p_vaddr>=head->multiblock_offs[j] && e->p_vaddr<(head->multiblock_offs[j]+head->multiblock_size[j])) { + e->p_vaddr = e->p_vaddr - head->multiblock_offs[j] + (uintptr_t)p; + if(!head->delta) head->delta = (intptr_t)p - (intptr_t)head->multiblock_offs[j]; } } } @@ -239,11 +239,11 @@ int AllocElfMemory(box64context_t* context, elfheader_t* head, int mainbin) , 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%x) for elf \"%s\"\n", (void*)offs, head->memsz, head->align, head->name); + 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); return 1; } if(offs && (p!=(void*)offs) && (head->e_type!=ET_DYN)) { - printf_log(LOG_NONE, "Error, memory map (@%p 0x%lx/0x%x) for elf \"%s\" allocated @%p\n", (void*)offs, head->memsz, head->align, head->name, p); + 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); return 1; } setProtection((uintptr_t)p, head->memsz, PROT_READ | PROT_WRITE | PROT_EXEC); @@ -279,15 +279,15 @@ void FreeElfMemory(elfheader_t* head) int LoadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) { - for (int i=0; i<head->numPHEntries; ++i) { + for (size_t i=0; i<head->numPHEntries; ++i) { 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, "Loading block #%i @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "Loading block #%zu @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); fseeko64(f, e->p_offset, SEEK_SET); if(e->p_filesz) { if(fread(dest, e->p_filesz, 1, f)!=1) { - printf_log(LOG_NONE, "Fail to read PT_LOAD part #%d (size=%ld)\n", i, e->p_filesz); + printf_log(LOG_NONE, "Fail to read PT_LOAD part #%zu (size=%ld)\n", i, e->p_filesz); return 1; } } @@ -305,11 +305,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 #%i @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "Loading TLS block #%zu @%p (0x%lx/0x%lx)\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 #%d (size=%ld)\n", i, e->p_filesz); + printf_log(LOG_NONE, "Fail to read PT_TLS part #%zu (size=%ld)\n", i, e->p_filesz); return 1; } } @@ -323,13 +323,15 @@ int LoadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) int ReloadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) { - for (int i=0; i<head->numPHEntries; ++i) { + (void)context; + + for (size_t i=0; i<head->numPHEntries; ++i) { 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 #%i @%p (0x%lx/0x%lx)\n", i, dest, e->p_filesz, e->p_memsz); + printf_log(LOG_DEBUG, "Re-loading block #%zu @%p (0x%lx/0x%lx)\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 #%d (offset=%ld, errno=%d/%s)\n", i, e->p_offset, errno, strerror(errno)); return 1;} + 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;} if(e->p_filesz) { ssize_t r = -1; #ifdef DYNAREC @@ -337,7 +339,7 @@ int ReloadElfMemory(FILE* f, box64context_t* context, elfheader_t* head) unprotectDB((uintptr_t)dest, e->p_memsz); #endif if((r=fread(dest, e->p_filesz, 1, f))!=1) { - printf_log(LOG_NONE, "Fail to (re)read PT_LOAD part #%d (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=%ld, return=%ld, feof=%d/ferror=%d/%s)\n", i, dest, e->p_filesz, r, feof(f), ferror(f), strerror(ferror(f))); return 1; } } @@ -458,11 +460,11 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn } printf_log(LOG_DUMP, "Apply %s R_X86_64_COPY @%p with sym=%s, @%p size=%ld (", (bind==STB_LOCAL)?"Local":"Global", p, symname, (void*)offs, sym->st_size); memmove(p, (void*)offs, sym->st_size); - if(LOG_DUMP<=box64_log) { - uint32_t*k = (uint32_t*)p; - for (int i=0; i<((sym->st_size>128)?128:sym->st_size); i+=4, ++k) - printf_log(LOG_DUMP, "%s0x%08X", i?" ":"", *k); - printf_log(LOG_DUMP, "%s)\n", (sym->st_size>128)?" ...":""); + if(box64_log >= LOG_DUMP) { + uint64_t *k = (uint64_t*)p; + for (unsigned j=0; j<((sym->st_size>128u)?128u:sym->st_size); j+=8, ++k) + printf_log(LOG_DUMP, "%s0x%016lX", j?" ":"", *k); + printf_log(LOG_DUMP, "%s)\n", (sym->st_size>128u)?" ...":""); } } else { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_COPY @%p (%p) in %s\n", symname, p, *(void**)p, head->name); @@ -475,7 +477,7 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn case R_X86_64_64: if (!offs) { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); -// return -1; + // return -1; } else { printf_log(LOG_DUMP, "Apply %s R_X86_64_64 @%p with sym=%s (%p -> %p)\n", (bind==STB_LOCAL)?"Local":"Global", p, symname, *(void**)p, (void*)(offs+*(uint64_t*)p)); *p += offs; @@ -496,7 +498,7 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn } else { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_JUMP_SLOT @%p (%p) in %s\n", symname, p, *(void**)p, head->name); } - // return -1; + // return -1; } else { if(p) { printf_log(LOG_DUMP, "Apply %s R_X86_64_JUMP_SLOT @%p with sym=%s (%p -> %p)\n", (bind==STB_LOCAL)?"Local":"Global", p, symname, *(void**)p, (void*)offs); @@ -512,7 +514,7 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn break; #endif default: - printf_log(LOG_INFO, "Warning, don't know of to handle rel #%d %s (%p)\n", i, DumpRelType(ELF64_R_TYPE(rel[i].r_info)), p); + printf_log(LOG_INFO, "Warning, don't know how to handle rel #%d %s (%p)\n", i, DumpRelType(ELF64_R_TYPE(rel[i].r_info)), p); } } return 0; @@ -627,7 +629,7 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int c } else { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_JUMP_SLOT @%p (%p) in %s\n", symname, p, *(void**)p, head->name); } - // return -1; + // return -1; } else { if(p) { printf_log(LOG_DUMP, "Apply %s R_X86_64_JUMP_SLOT @%p with sym=%s (%p -> %p)\n", @@ -646,7 +648,7 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int c case R_X86_64_64: if (!offs) { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); -// return -1; + // return -1; } else { printf_log(LOG_DUMP, "Apply %s R_X86_64_64 @%p with sym=%s addend=0x%lx (%p -> %p)\n", (bind==STB_LOCAL)?"Local":"Global", p, symname, rela[i].r_addend, *(void**)p, (void*)(offs+rela[i].r_addend/*+*(uint64_t*)p*/)); @@ -701,7 +703,7 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int c } else { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_DTPOFF64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); } -// return -1; + // return -1; } else { if(h_tls) offs = sym->st_value; @@ -755,7 +757,7 @@ int RelocateElfPlt(lib_t *maplib, lib_t *local_maplib, elfheader_t* head) if(RelocateElfRELA(maplib, local_maplib, head, cnt, (Elf64_Rela *)(head->jmprel + head->delta))) return -1; } - if(pltResolver==~0) { + if(pltResolver==~0u) { pltResolver = AddBridge(my_context->system, vFE, PltResolver, 0, "PltResolver"); } if(head->pltgot) { @@ -772,7 +774,7 @@ int RelocateElfPlt(lib_t *maplib, lib_t *local_maplib, elfheader_t* head) return 0; } -void CalcStack(elfheader_t* elf, uint32_t* stacksz, int* stackalign) +void CalcStack(elfheader_t* elf, uint64_t* stacksz, size_t* stackalign) { if(*stacksz < elf->stacksz) *stacksz = elf->stacksz; @@ -783,7 +785,7 @@ void CalcStack(elfheader_t* elf, uint32_t* stacksz, int* stackalign) Elf64_Sym* GetFunction(elfheader_t* h, const char* name) { // TODO: create a hash on named to avoid this loop - for (int i=0; i<h->numSymTab; ++i) { + for (size_t i=0; i<h->numSymTab; ++i) { int type = ELF64_ST_TYPE(h->SymTab[i].st_info); if(type==STT_FUNC) { const char * symname = h->StrTab+h->SymTab[i].st_name; @@ -797,9 +799,9 @@ Elf64_Sym* GetFunction(elfheader_t* h, const char* name) Elf64_Sym* GetElfObject(elfheader_t* h, const char* name) { - for (int i=0; i<h->numSymTab; ++i) { + for (size_t i=0; i<h->numSymTab; ++i) { int type = ELF64_ST_TYPE(h->SymTab[i].st_info); - if(/*h->SymTab[i].st_info == 16*/type==STT_OBJECT) { + if(type==STT_OBJECT) { const char * symname = h->StrTab+h->SymTab[i].st_name; if(strcmp(symname, name)==0) { return h->SymTab+i; @@ -819,6 +821,7 @@ uintptr_t GetFunctionAddress(elfheader_t* h, const char* name) uintptr_t GetEntryPoint(lib_t* maplib, elfheader_t* h) { + (void)maplib; uintptr_t ep = h->entrypoint + h->delta; printf_log(LOG_DEBUG, "Entry Point is %p\n", (void*)ep); if(box64_log>=LOG_DUMP) { @@ -829,22 +832,6 @@ uintptr_t GetEntryPoint(lib_t* maplib, elfheader_t* h) sz = lastbyte - ep; DumpBinary((char*)ep, sz); } - /* - // but instead of regular entrypoint, lets grab "main", it will be easier to manage I guess - uintptr_t m = FindSymbol(maplib, "main"); - if(m) { - ep = m; - printf_log(LOG_DEBUG, "Using \"main\" as Entry Point @%p\n", ep); - if(box64_log>=LOG_DUMP) { - printf_log(LOG_DUMP, "(short) Dump of Entry point\n"); - int sz = 64; - uintptr_t lastbyte = GetLastByte(h); - if (ep + sz > lastbyte) - sz = lastbyte - ep; - DumpBinary((char*)ep, sz); - } - } - */ return ep; } @@ -855,8 +842,8 @@ uintptr_t GetLastByte(elfheader_t* h) void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* weaksymbols, kh_mapsymbols_t* localsymbols, elfheader_t* h) { - printf_log(LOG_DUMP, "Will look for Symbol to add in SymTable(%d)\n", h->numSymTab); - for (int i=0; i<h->numSymTab; ++i) { + printf_log(LOG_DUMP, "Will look for Symbol to add in SymTable(%zu)\n", h->numSymTab); + for (size_t i=0; i<h->numSymTab; ++i) { const char * symname = h->StrTab+h->SymTab[i].st_name; int bind = ELF64_ST_BIND(h->SymTab[i].st_info); int type = ELF64_ST_TYPE(h->SymTab[i].st_info); @@ -866,8 +853,8 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea if((bind==10/*STB_GNU_UNIQUE*/ || (bind==STB_GLOBAL && type==STT_FUNC)) && FindGlobalSymbol(maplib, symname)) continue; uintptr_t offs = (type==STT_TLS)?h->SymTab[i].st_value:(h->SymTab[i].st_value + h->delta); - uint32_t sz = h->SymTab[i].st_size; - printf_log(LOG_DUMP, "Adding Symbol(bind=%s) \"%s\" with offset=%p sz=%d\n", (bind==STB_LOCAL)?"LOCAL":((bind==STB_WEAK)?"WEAK":"GLOBAL"), symname, (void*)offs, sz); + uint64_t sz = h->SymTab[i].st_size; + printf_log(LOG_DUMP, "Adding Symbol(bind=%s) \"%s\" with offset=%p sz=%zu\n", (bind==STB_LOCAL)?"LOCAL":((bind==STB_WEAK)?"WEAK":"GLOBAL"), symname, (void*)offs, sz); if(bind==STB_LOCAL) AddSymbol(localsymbols, symname, offs, sz); else // add in local and global map @@ -879,8 +866,8 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea } } - printf_log(LOG_DUMP, "Will look for Symbol to add in DynSym (%d)\n", h->numDynSym); - for (int i=0; i<h->numDynSym; ++i) { + printf_log(LOG_DUMP, "Will look for Symbol to add in DynSym (%zu)\n", h->numDynSym); + for (size_t i=0; i<h->numDynSym; ++i) { const char * symname = h->DynStr+h->DynSym[i].st_name; int bind = ELF64_ST_BIND(h->DynSym[i].st_info); int type = ELF64_ST_TYPE(h->DynSym[i].st_info); @@ -891,8 +878,8 @@ void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* wea if((bind==10/*STB_GNU_UNIQUE*/ || (bind==STB_GLOBAL && type==STT_FUNC)) && FindGlobalSymbol(maplib, symname)) continue; uintptr_t offs = (type==STT_TLS)?h->DynSym[i].st_value:(h->DynSym[i].st_value + h->delta); - uint32_t sz = h->DynSym[i].st_size; - printf_log(LOG_DUMP, "Adding Symbol(bind=%s) \"%s\" with offset=%p sz=%d\n", (bind==STB_LOCAL)?"LOCAL":((bind==STB_WEAK)?"WEAK":"GLOBAL"), symname, (void*)offs, sz); + uint64_t sz = h->DynSym[i].st_size; + printf_log(LOG_DUMP, "Adding Symbol(bind=%s) \"%s\" with offset=%p sz=%zu\n", (bind==STB_LOCAL)?"LOCAL":((bind==STB_WEAK)?"WEAK":"GLOBAL"), symname, (void*)offs, sz); if(bind==STB_LOCAL) AddSymbol(localsymbols, symname, offs, sz); else // add in local and global map @@ -924,7 +911,7 @@ int LoadNeededLibs(elfheader_t* h, lib_t *maplib, needed_libs_t* neededlibs, lib { DumpDynamicRPath(h); // update RPATH first - for (int i=0; i<h->numDynamic; ++i) + for (size_t i=0; i<h->numDynamic; ++i) if(h->Dynamic[i].d_tag==DT_RPATH || h->Dynamic[i].d_tag==DT_RUNPATH) { char *rpathref = h->DynStrTab+h->delta+h->Dynamic[i].d_un.d_val; char* rpath = rpathref; @@ -970,7 +957,7 @@ int LoadNeededLibs(elfheader_t* h, lib_t *maplib, needed_libs_t* neededlibs, lib h->neededlibs = neededlibs; DumpDynamicNeeded(h); - for (int i=0; i<h->numDynamic; ++i) + for (size_t i=0; i<h->numDynamic; ++i) if(h->Dynamic[i].d_tag==DT_NEEDED) { char *needed = h->DynStrTab+h->delta+h->Dynamic[i].d_un.d_val; // TODO: Add LD_LIBRARY_PATH and RPATH handling @@ -987,7 +974,7 @@ int ElfCheckIfUseTCMallocMinimal(elfheader_t* h) { if(!h) return 0; - for (int i=0; i<h->numDynamic; ++i) + for (size_t i=0; i<h->numDynamic; ++i) if(h->Dynamic[i].d_tag==DT_NEEDED) { char *needed = h->DynStrTab+h->delta+h->Dynamic[i].d_un.d_val; if(!strcmp(needed, "libtcmalloc_minimal.so.4")) // tcmalloc needs to be the 1st lib loaded @@ -1020,9 +1007,9 @@ void RunElfInit(elfheader_t* h, x64emu_t *emu) printf_log(LOG_DEBUG, "Done Init for %s\n", ElfName(h)); // and check init array now Elf64_Addr *addr = (Elf64_Addr*)(h->initarray + h->delta); - for (int i=0; i<h->initarray_sz; ++i) { + for (size_t i=0; i<h->initarray_sz; ++i) { if(addr[i]) { - printf_log(LOG_DEBUG, "Calling Init[%d] for %s @%p\n", i, ElfName(h), (void*)addr[i]); + printf_log(LOG_DEBUG, "Calling Init[%zu] for %s @%p\n", i, ElfName(h), (void*)addr[i]); RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 3, context->argc, context->argv, context->envv); } } @@ -1116,18 +1103,18 @@ elfheader_t* FindElfAddress(box64context_t *context, uintptr_t addr) return NULL; } -const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uint32_t* sz) +const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uint64_t* sz) { uintptr_t addr = (uintptr_t)p; uint32_t distance = 0x7fffffff; const char* ret = NULL; uintptr_t s = 0; - uint32_t size = 0; + uint64_t size = 0; if(!h || h->fini_done) return ret; - for (int i=0; i<h->numSymTab && distance!=0; ++i) { + for (size_t i=0; i<h->numSymTab && distance!=0; ++i) { const char * symname = h->StrTab+h->SymTab[i].st_name; uintptr_t offs = h->SymTab[i].st_value + h->delta; @@ -1140,7 +1127,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin } } } - for (int i=0; i<h->numDynSym && distance!=0; ++i) { + for (size_t i=0; i<h->numDynSym && distance!=0; ++i) { const char * symname = h->DynStr+h->DynSym[i].st_name; uintptr_t offs = h->DynSym[i].st_value + h->delta; @@ -1193,6 +1180,7 @@ void* GetTLSPointer(box64context_t* context, elfheader_t* h) #ifdef DYNAREC dynablocklist_t* GetDynablocksFromAddress(box64context_t *context, uintptr_t addr) { + (void)context; // if we are here, the there is not block in standard "space" /*dynablocklist_t* ret = getDBFromAddress(addr); if(ret) { @@ -1284,7 +1272,7 @@ EXPORT int my_dl_iterate_phdr(x64emu_t *emu, void* F, void *data) { void ResetSpecialCaseMainElf(elfheader_t* h) { Elf64_Sym *sym = NULL; - for (int i=0; i<h->numDynSym; ++i) { + for (size_t i=0; i<h->numDynSym; ++i) { if(h->DynSym[i].st_info == 17) { sym = h->DynSym+i; const char * symname = h->DynStr+sym->st_name; @@ -1324,7 +1312,7 @@ void CreateMemorymapFile(box64context_t* context, int fd) st.st_ino = 0; } - for (int i=0; i<h->numPHEntries; ++i) { + for (size_t i=0; i<h->numPHEntries; ++i) { if (h->PHEntries[i].p_memsz == 0) continue; sprintf(buff, "%016lx-%016lx %c%c%c%c %016lx %02x:%02x %ld %s\n", (uintptr_t)h->PHEntries[i].p_vaddr + h->delta, diff --git a/src/elfs/elfloader_private.h b/src/elfs/elfloader_private.h index a02fcca3..fa488845 100755 --- a/src/elfs/elfloader_private.h +++ b/src/elfs/elfloader_private.h @@ -13,23 +13,23 @@ typedef struct needed_libs_s needed_libs_t; struct elfheader_s { char* name; char* path; // Resolved path to file - int numPHEntries; + size_t numPHEntries; Elf64_Phdr *PHEntries; - int numSHEntries; + size_t numSHEntries; Elf64_Shdr *SHEntries; - int SHIdx; - int numSST; + size_t SHIdx; + size_t numSST; char* SHStrTab; char* StrTab; Elf64_Sym* SymTab; - int numSymTab; + size_t numSymTab; char* DynStr; Elf64_Sym* DynSym; - int numDynSym; + size_t numDynSym; Elf64_Dyn* Dynamic; - int numDynamic; + size_t numDynamic; char* DynStrTab; - int szDynStrTab; + size_t szDynStrTab; int e_type; intptr_t delta; // should be 0 @@ -37,19 +37,19 @@ struct elfheader_s { uintptr_t entrypoint; uintptr_t initentry; uintptr_t initarray; - int initarray_sz; + size_t initarray_sz; uintptr_t finientry; uintptr_t finiarray; - int finiarray_sz; + size_t finiarray_sz; uintptr_t rel; - int relsz; + size_t relsz; int relent; uintptr_t rela; - int relasz; + size_t relasz; int relaent; uintptr_t jmprel; - int pltsz; + size_t pltsz; int pltent; uint64_t pltrel; uintptr_t gotplt; @@ -60,18 +60,18 @@ struct elfheader_s { uintptr_t plt; uintptr_t plt_end; uintptr_t text; - int textsz; + size_t textsz; uintptr_t paddr; uintptr_t vaddr; - int align; + size_t align; uint64_t memsz; uint64_t stacksz; - int stackalign; - uint32_t tlssize; - int tlsalign; + size_t stackalign; + uint64_t tlssize; + size_t tlsalign; - int32_t tlsbase; // the base of the tlsdata in the global tlsdata (always negative) + int64_t tlsbase; // the base of the tlsdata in the global tlsdata (always negative) int init_done; int fini_done; @@ -133,4 +133,4 @@ struct elfheader_s { elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec); -#endif //__ELFLOADER_PRIVATE_H_ \ No newline at end of file +#endif //__ELFLOADER_PRIVATE_H_ diff --git a/src/elfs/elfparser.c b/src/elfs/elfparser.c index dcca49b3..7d5600ea 100755 --- a/src/elfs/elfparser.c +++ b/src/elfs/elfparser.c @@ -43,7 +43,7 @@ int FindSection(Elf64_Shdr *s, int n, char* SHStrTab, const char* name) return 0; } -void LoadNamedSection(FILE *f, Elf64_Shdr *s, int size, char* SHStrTab, const char* name, const char* clearname, uint32_t type, void** what, int* num) +void LoadNamedSection(FILE *f, Elf64_Shdr *s, int size, char* SHStrTab, const char* name, const char* clearname, uint32_t type, void** what, size_t* num) { int n = FindSection(s, size, SHStrTab, name); printf_log(LOG_DEBUG, "Loading %s (idx = %d)\n", clearname, n); @@ -141,7 +141,7 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) h->numSHEntries = section.sh_size; } // now read all section headers - printf_log(LOG_DEBUG, "Read %d Section header\n", h->numSHEntries); + printf_log(LOG_DEBUG, "Read %zu Section header\n", h->numSHEntries); h->SHEntries = (Elf64_Shdr*)calloc(h->numSHEntries, sizeof(Elf64_Shdr)); fseeko64(f, header.e_shoff ,SEEK_SET); if(fread(h->SHEntries, sizeof(Elf64_Shdr), h->numSHEntries, f)!=h->numSHEntries) { @@ -157,7 +157,7 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) } } - printf_log(LOG_DEBUG, "Read %d Program header\n", h->numPHEntries); + printf_log(LOG_DEBUG, "Read %zu Program header\n", h->numPHEntries); h->PHEntries = (Elf64_Phdr*)calloc(h->numPHEntries, sizeof(Elf64_Phdr)); fseeko64(f, header.e_phoff ,SEEK_SET); if(fread(h->PHEntries, sizeof(Elf64_Phdr), h->numPHEntries, f)!=h->numPHEntries) { @@ -172,12 +172,12 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) h->SHIdx = h->SHEntries[0].sh_link; } if(h->SHIdx > h->numSHEntries) { - printf_log(LOG_INFO, "Incoherent Section String Table Index : %d / %d\n", h->SHIdx, h->numSHEntries); + printf_log(LOG_INFO, "Incoherent Section String Table Index : %zu / %zu\n", h->SHIdx, h->numSHEntries); FreeElfHeader(&h); return NULL; } // load Section table - printf_log(LOG_DEBUG, "Loading Sections Table String (idx = %d)\n", h->SHIdx); + printf_log(LOG_DEBUG, "Loading Sections Table String (idx = %zu)\n", h->SHIdx); if(LoadSH(f, h->SHEntries+h->SHIdx, (void*)&h->SHStrTab, ".shstrtab", SHT_STRTAB)) { FreeElfHeader(&h); return NULL; @@ -193,7 +193,7 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) // grab DT_REL & DT_RELA stuffs // also grab the DT_STRTAB string table { - for (int i=0; i<h->numDynamic; ++i) { + for (size_t i=0; i<h->numDynamic; ++i) { if(h->Dynamic[i].d_tag == DT_REL) h->rel = h->Dynamic[i].d_un.d_ptr; else if(h->Dynamic[i].d_tag == DT_RELSZ) @@ -221,19 +221,19 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) } if(h->rel) { if(h->relent != sizeof(Elf64_Rel)) { - printf_log(LOG_NONE, "Rel Table Entry size invalid (0x%x should be 0x%lx)\n", h->relent, sizeof(Elf64_Rel)); + printf_log(LOG_NONE, "Rel Table Entry size invalid (0x%x should be 0x%zx)\n", h->relent, sizeof(Elf64_Rel)); FreeElfHeader(&h); return NULL; } - printf_log(LOG_DEBUG, "Rel Table @%p (0x%x/0x%x)\n", (void*)h->rel, h->relsz, h->relent); + printf_log(LOG_DEBUG, "Rel Table @%p (0x%zx/0x%x)\n", (void*)h->rel, h->relsz, h->relent); } if(h->rela) { if(h->relaent != sizeof(Elf64_Rela)) { - printf_log(LOG_NONE, "RelA Table Entry size invalid (0x%x should be 0x%lx)\n", h->relaent, sizeof(Elf64_Rela)); + printf_log(LOG_NONE, "RelA Table Entry size invalid (0x%x should be 0x%zx)\n", h->relaent, sizeof(Elf64_Rela)); FreeElfHeader(&h); return NULL; } - printf_log(LOG_DEBUG, "RelA Table @%p (0x%x/0x%x)\n", (void*)h->rela, h->relasz, h->relaent); + printf_log(LOG_DEBUG, "RelA Table @%p (0x%zx/0x%x)\n", (void*)h->rela, h->relasz, h->relaent); } if(h->jmprel) { if(h->pltrel == DT_REL) { @@ -241,16 +241,16 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) } else if(h->pltrel == DT_RELA) { h->pltent = sizeof(Elf64_Rela); } else { - printf_log(LOG_NONE, "PLT Table type is unknown (size = 0x%x, type=%ld)\n", h->pltsz, h->pltrel); + printf_log(LOG_NONE, "PLT Table type is unknown (size = 0x%zx, type=%ld)\n", h->pltsz, h->pltrel); FreeElfHeader(&h); return NULL; } if((h->pltsz / h->pltent)*h->pltent != h->pltsz) { - printf_log(LOG_NONE, "PLT Table Entry size invalid (0x%x, ent=0x%x, type=%ld)\n", h->pltsz, h->pltent, h->pltrel); + printf_log(LOG_NONE, "PLT Table Entry size invalid (0x%zx, ent=0x%x, type=%ld)\n", h->pltsz, h->pltent, h->pltrel); FreeElfHeader(&h); return NULL; } - printf_log(LOG_DEBUG, "PLT Table @%p (type=%ld 0x%x/0x%0x)\n", (void*)h->jmprel, h->pltrel, h->pltsz, h->pltent); + printf_log(LOG_DEBUG, "PLT Table @%p (type=%ld 0x%zx/0x%0x)\n", (void*)h->jmprel, h->pltrel, h->pltsz, h->pltent); } if(h->DynStrTab && h->szDynStrTab) { //DumpDynamicNeeded(h); cannot dump now, it's not loaded yet @@ -286,7 +286,7 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) if(ii) { h->initarray_sz = h->SHEntries[ii].sh_size / sizeof(Elf64_Addr); h->initarray = (uintptr_t)(h->SHEntries[ii].sh_addr); - printf_log(LOG_DEBUG, "The .init_array is at address %p, and have %d elements\n", (void*)h->initarray, h->initarray_sz); + printf_log(LOG_DEBUG, "The .init_array is at address %p, and have %zu elements\n", (void*)h->initarray, h->initarray_sz); } // look for .fini entry point ii = FindSection(h->SHEntries, h->numSHEntries, h->SHStrTab, ".fini"); @@ -299,14 +299,14 @@ elfheader_t* ParseElfHeader(FILE* f, const char* name, int exec) if(ii) { h->finiarray_sz = h->SHEntries[ii].sh_size / sizeof(Elf64_Addr); h->finiarray = (uintptr_t)(h->SHEntries[ii].sh_addr); - printf_log(LOG_DEBUG, "The .fini_array is at address %p, and have %d elements\n", (void*)h->finiarray, h->finiarray_sz); + printf_log(LOG_DEBUG, "The .fini_array is at address %p, and have %zu elements\n", (void*)h->finiarray, h->finiarray_sz); } // grab .text for main code ii = FindSection(h->SHEntries, h->numSHEntries, h->SHStrTab, ".text"); if(ii) { h->text = (uintptr_t)(h->SHEntries[ii].sh_addr); h->textsz = h->SHEntries[ii].sh_size; - printf_log(LOG_DEBUG, "The .text is at address %p, and is %d big\n", (void*)h->text, h->textsz); + printf_log(LOG_DEBUG, "The .text is at address %p, and is %zu big\n", (void*)h->text, h->textsz); } LoadNamedSection(f, h->SHEntries, h->numSHEntries, h->SHStrTab, ".dynstr", "DynSym Strings", SHT_STRTAB, (void**)&h->DynStr, NULL); diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c index c1f3946c..75ce18fd 100755 --- a/src/emu/x64emu.c +++ b/src/emu/x64emu.c @@ -109,6 +109,7 @@ EXPORTDYN void SetupX64Emu(x64emu_t *emu) { printf_log(LOG_DEBUG, "Setup X86_64 Emu\n"); + (void)emu; // Not doing much here... } #ifdef HAVE_TRACE @@ -130,6 +131,8 @@ void SetTraceEmu(uintptr_t start, uintptr_t end) void AddCleanup(x64emu_t *emu, void *p) { + (void)emu; + if(my_context->clean_sz == my_context->clean_cap) { my_context->clean_cap += 4; my_context->cleanups = (cleanup_t*)realloc(my_context->cleanups, sizeof(cleanup_t)*my_context->clean_cap); @@ -141,6 +144,8 @@ void AddCleanup(x64emu_t *emu, void *p) void AddCleanup1Arg(x64emu_t *emu, void *p, void* a) { + (void)emu; + if(my_context->clean_sz == my_context->clean_cap) { my_context->clean_cap += 4; my_context->cleanups = (cleanup_t*)realloc(my_context->cleanups, sizeof(cleanup_t)*my_context->clean_cap); @@ -473,7 +478,9 @@ void EmuCall(x64emu_t* emu, uintptr_t addr) uint64_t ReadTSC(x64emu_t* emu) { - //TODO: implement hardware counter read? + (void)emu; + + //TODO: implement hardware counter read? (only available in kernel space?) // Read the TimeStamp Counter as 64bits. // this is supposed to be the number of instructions executed since last reset // fall back to gettime... diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c index 21d7d10b..36f7a7fa 100755 --- a/src/emu/x64int3.c +++ b/src/emu/x64int3.c @@ -92,7 +92,7 @@ void x64Int3(x64emu_t* emu) char *tmp; int post = 0; int perr = 0; - uint32_t *pu32 = NULL; + uint64_t *pu64 = NULL; const char *s = NULL; s = GetNativeName((void*)addr); if(addr==(uintptr_t)PltResolver) { @@ -160,23 +160,23 @@ void x64Int3(x64emu_t* emu) w(emu, addr); // some function never come back, so unlock the mutex first! pthread_mutex_lock(&emu->context->mutex_trace); if(post) - switch(post) { - case 1: snprintf(buff2, 63, " [%d sec %d nsec]", pu32?pu32[0]:-1, pu32?pu32[1]:-1); + switch(post) { // Only ever 2 for now... + case 1: snprintf(buff2, 63, " [%llu sec %llu nsec]", pu64?pu64[0]:~0ull, pu64?pu64[1]:~0ull); break; case 2: snprintf(buff2, 63, "(%s)", R_RAX?((char*)R_RAX):"nil"); break; - case 3: snprintf(buff2, 63, "(%s)", pu32?((char*)pu32):"nil"); + case 3: snprintf(buff2, 63, "(%s)", pu64?((char*)pu64):"nil"); break; case 4: snprintf(buff2, 63, " (%f)", ST0.d); break; case 5: { - uint32_t* p = (uint32_t*)R_RAX; + uint32_t* p = (uint32_t*)R_RAX; // uint64_t? (case never used) if(p) - snprintf(buff2, 63, " size=%dx%d, pitch=%d, pixels=%p", p[2], p[3], p[4], p+5); + snprintf(buff2, 63, " size=%ux%u, pitch=%u, pixels=%p", p[2], p[3], p[4], p+5); else snprintf(buff2, 63, "NULL Surface"); - } - break; + } + break; } if(perr==1 && ((int)R_EAX)<0) snprintf(buff3, 63, " (errno=%d:\"%s\")", errno, strerror(errno)); @@ -199,4 +199,4 @@ void x64Int3(x64emu_t* emu) int GetTID() { return syscall(SYS_gettid); -} \ No newline at end of file +} diff --git a/src/emu/x64primop.c b/src/emu/x64primop.c index 4c443f46..83bcd046 100755 --- a/src/emu/x64primop.c +++ b/src/emu/x64primop.c @@ -1400,7 +1400,7 @@ void idiv64(x64emu_t *emu, uint64_t s) } quot = dvd/(int64_t)s; mod = dvd%(int64_t)s; - if (llabs(quot) > 0x7fffffffffffffffL) { + if ((quot > 0x7fffffffffffffffLL) || (quot < -0x7fffffffffffffffLL)) { INTR_RAISE_DIV0(emu); return; } diff --git a/src/emu/x64primop.h b/src/emu/x64primop.h index e42c7062..ae2f9a02 100755 --- a/src/emu/x64primop.h +++ b/src/emu/x64primop.h @@ -235,21 +235,25 @@ static inline uint64_t neg64(x64emu_t *emu, uint64_t s) static inline uint8_t not8(x64emu_t *emu, uint8_t s) { + (void)emu; // No flags affected return ~s; } static inline uint16_t not16(x64emu_t *emu, uint16_t s) { + (void)emu; // No flags affected return ~s; } static inline uint32_t not32(x64emu_t *emu, uint32_t s) { + (void)emu; // No flags affected return ~s; } static inline uint64_t not64(x64emu_t *emu, uint64_t s) { + (void)emu; // No flags affected return ~s; } diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c index 3e8bdbff..ae4dbe63 100644 --- a/src/emu/x64run64.c +++ b/src/emu/x64run64.c @@ -26,9 +26,9 @@ int Run64(x64emu_t *emu, rex_t rex) { uint8_t opcode; uint8_t nextop; - uint8_t tmp8u; - int16_t tmp16s; - uint16_t tmp16u; + uint8_t tmp8u; (void)tmp8u; + int16_t tmp16s; (void)tmp16s; + uint16_t tmp16u; (void)tmp16u; int32_t tmp32s; uint32_t tmp32u; uint64_t tmp64u; @@ -318,4 +318,4 @@ int Run64(x64emu_t *emu, rex_t rex) return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64run670f.c b/src/emu/x64run670f.c index 749dfde8..1a504ac3 100644 --- a/src/emu/x64run670f.c +++ b/src/emu/x64run670f.c @@ -27,16 +27,17 @@ int Run670F(x64emu_t *emu, rex_t rex, int rep) { + (void)rep; uint8_t opcode; uint8_t nextop; - uint8_t tmp8u; - int8_t tmp8s; - int32_t tmp32s, tmp32s2; - uint32_t tmp32u, tmp32u2; - uint64_t tmp64u, tmp64u2; - reg64_t *oped, *opgd; - sse_regs_t *opex, *opgx, eax1; - mmx87_regs_t *opem, *opgm, eam1; + uint8_t tmp8u; (void)tmp8u; + int8_t tmp8s; (void)tmp8s; + int32_t tmp32s, tmp32s2; (void)tmp32s; (void)tmp32s2; + uint32_t tmp32u, tmp32u2; (void)tmp32u; (void)tmp32u2; + uint64_t tmp64u, tmp64u2; (void)tmp64u; (void)tmp64u2; + reg64_t *oped, *opgd; (void)oped; (void)opgd; + sse_regs_t *opex, *opgx, eax1; (void)eax1; + mmx87_regs_t *opem, *opgm, eam1; (void)opem; (void)opgm; (void)eam1; opcode = F8; @@ -65,4 +66,4 @@ int Run670F(x64emu_t *emu, rex_t rex, int rep) return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64run6766.c b/src/emu/x64run6766.c index 256a2671..2702012c 100644 --- a/src/emu/x64run6766.c +++ b/src/emu/x64run6766.c @@ -27,16 +27,18 @@ int Run6766(x64emu_t *emu, rex_t rex, int rep) { + // Hmmmm.... + (void)rep; uint8_t opcode; - uint8_t nextop; - int8_t tmp8s; - uint8_t tmp8u, tmp8u2; - int16_t tmp16s; - uint16_t tmp16u, tmp16u2; - int32_t tmp32s; - int64_t tmp64s; - uint64_t tmp64u, tmp64u2, tmp64u3; - reg64_t *oped, *opgd; + uint8_t nextop; (void)nextop; + int8_t tmp8s; (void)tmp8s; + uint8_t tmp8u, tmp8u2; (void)tmp8u; (void)tmp8u2; + int16_t tmp16s; (void)tmp16s; + uint16_t tmp16u, tmp16u2; (void)tmp16u; (void)tmp16u2; + int32_t tmp32s; (void)tmp32s; + int64_t tmp64s; (void)tmp64s; + uint64_t tmp64u, tmp64u2, tmp64u3; (void)tmp64u; (void)tmp64u2; (void)tmp64u3; + reg64_t *oped, *opgd; (void)oped; (void)opgd; opcode = F8; @@ -47,7 +49,7 @@ int Run6766(x64emu_t *emu, rex_t rex, int rep) rep = opcode-0xF1; opcode = F8; } - // REX prefix before the F0 are ignored + // REX prefix before the 66 are ignored rex.rex = 0; while(opcode>=0x40 && opcode<=0x4f) { rex.rex = opcode; @@ -56,11 +58,11 @@ int Run6766(x64emu_t *emu, rex_t rex, int rep) switch(opcode) { - case 0x0F: /* more opcdes */ + case 0x0F: /* more opcodes */ return Run67660F(emu, rex); default: return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64run67660f.c b/src/emu/x64run67660f.c index e5a9d1f8..6be0b044 100644 --- a/src/emu/x64run67660f.c +++ b/src/emu/x64run67660f.c @@ -26,22 +26,22 @@ int Run67660F(x64emu_t *emu, rex_t rex) { uint8_t opcode; uint8_t nextop; - uint8_t tmp8u; - int8_t tmp8s; - int16_t tmp16s; - uint16_t tmp16u; - int32_t tmp32s; - uint32_t tmp32u; - uint64_t tmp64u; - reg64_t *oped, *opgd; - sse_regs_t *opex, *opgx, eax1, *opex2; - mmx87_regs_t *opem, *opgm; + int8_t tmp8s; (void)tmp8s; + uint8_t tmp8u; (void)tmp8u; + int16_t tmp16s; (void)tmp16s; + uint16_t tmp16u; (void)tmp16u; + int32_t tmp32s; (void)tmp32s; + uint32_t tmp32u; (void)tmp32u; + int64_t tmp64s; (void)tmp64s; + uint64_t tmp64u; (void)tmp64u; + reg64_t *oped, *opgd; (void)oped; (void)opgd; + sse_regs_t *opex, *opgx; opcode = F8; switch(opcode) { - case 0x6F: /* MOVDQA Gx,Ex */ + case 0x6F: /* MOVDQA Gx,Ex */ nextop = F8; GETEX32(0); GETGX; @@ -49,7 +49,7 @@ int Run67660F(x64emu_t *emu, rex_t rex) GX->q[1] = EX->q[1]; break; - case 0x76: /* PCMPEQD Gx,Ex */ + case 0x76: /* PCMPEQD Gx,Ex */ nextop = F8; GETEX32(0); GETGX; @@ -61,4 +61,4 @@ int Run67660F(x64emu_t *emu, rex_t rex) return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c index c6a7ac88..4eeddd06 100755 --- a/src/emu/x64run_private.c +++ b/src/emu/x64run_private.c @@ -30,6 +30,8 @@ int32_t EXPORT my___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * *), int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end)) { + (void)argc; (void)ubp_av; (void)fini; (void)rtld_fini; (void)stack_end; + // let's cheat and set all args... if(init) { PushExit(emu); @@ -944,7 +946,7 @@ uintptr_t GetSegmentBaseEmu(x64emu_t* emu, int seg) const char* getAddrFunctionName(uintptr_t addr) { static char ret[1000]; - uint32_t sz = 0; + uint64_t sz = 0; uintptr_t start = 0; const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, addr), (void*)addr, &start, &sz); if(symbname && addr>=start && (addr<(start+sz) || !sz)) { @@ -959,7 +961,7 @@ const char* getAddrFunctionName(uintptr_t addr) void printFunctionAddr(uintptr_t nextaddr, const char* text) { - uint32_t sz = 0; + uint64_t sz = 0; uintptr_t start = 0; const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, nextaddr), (void*)nextaddr, &start, &sz); if(symbname && nextaddr>=start && (nextaddr<(start+sz) || !sz)) { @@ -991,6 +993,7 @@ void PrintTrace(x64emu_t* emu, uintptr_t ip, int dynarec) my_context->trace_dynarec = dynarec; } #else + (void)dynarec; if(my_context->trace_tid != tid) { printf_log(LOG_NONE, "Thread %04d|\n", tid); my_context->trace_tid = tid; @@ -1178,6 +1181,8 @@ reg64_t* GetEb32O(x64emu_t *emu, rex_t rex, uint8_t v, uint8_t delta, uintptr_t reg64_t* GetEw16(x64emu_t *emu, rex_t rex, uint8_t v) { + (void)rex; + uint8_t m = v&0xC7; // filter Ed if(m>=0xC0) { return &emu->regs[(m&0x07)]; @@ -1205,6 +1210,8 @@ reg64_t* GetEw16(x64emu_t *emu, rex_t rex, uint8_t v) reg64_t* GetEw16off(x64emu_t *emu, rex_t rex, uint8_t v, uintptr_t offset) { + (void)rex; + uint32_t m = v&0xC7; // filter Ed if(m>=0xC0) { return &emu->regs[(m&0x07)]; @@ -1279,6 +1286,8 @@ reg64_t* GetGb(x64emu_t *emu, rex_t rex, uint8_t v) mmx87_regs_t* GetGm(x64emu_t *emu, rex_t rex, uint8_t v) { + (void)rex; + uint8_t m = (v&0x38)>>3; return &emu->mmx87[m&7]; } diff --git a/src/emu/x64run_private.h b/src/emu/x64run_private.h index e30edbec..525771f2 100755 --- a/src/emu/x64run_private.h +++ b/src/emu/x64run_private.h @@ -123,12 +123,6 @@ int RunDF(x64emu_t *emu, rex_t rex); int RunF0(x64emu_t *emu, rex_t rex); int RunF20F(x64emu_t *emu, rex_t rex); int RunF30F(x64emu_t *emu, rex_t rex); -//void Run66D9(x64emu_t *emu); // x87 -//void Run6766(x64emu_t *emu); -//void RunGS(x64emu_t *emu); -//void RunFS(x64emu_t *emu); -//void RunFS66(x64emu_t *emu, uintptr_t tlsdata); -//void RunLock66(x64emu_t *emu); void x64Syscall(x64emu_t *emu); void x64Int3(x64emu_t* emu); @@ -146,4 +140,4 @@ const char* GetNativeName(void* p); void PrintTrace(x64emu_t* emu, uintptr_t ip, int dynarec); #endif -#endif //__X86RUN_PRIVATE_H_ \ No newline at end of file +#endif //__X86RUN_PRIVATE_H_ diff --git a/src/emu/x64rundf.c b/src/emu/x64rundf.c index 613c90f8..7abf665a 100644 --- a/src/emu/x64rundf.c +++ b/src/emu/x64rundf.c @@ -162,7 +162,7 @@ int RunDF(x64emu_t *emu, rex_t rex) break; case 7: /* FISTP i64 */ GETED(0); - if(STll(0).ref==ST(0).q) + if(STll(0).ref==ST(0).sq) ED->sq[0] = STll(0).ll; else { if(isgreater(ST0.d, (double)(int64_t)0x7fffffffffffffffLL) || isless(ST0.d, -(double)(int64_t)0x7fffffffffffffffLL) || !isfinite(ST0.d)) @@ -177,4 +177,4 @@ int RunDF(x64emu_t *emu, rex_t rex) } } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64runf0.c b/src/emu/x64runf0.c index 883b35ac..41b51362 100644 --- a/src/emu/x64runf0.c +++ b/src/emu/x64runf0.c @@ -31,7 +31,7 @@ int RunF0(x64emu_t *emu, rex_t rex) uint8_t opcode; uint8_t nextop; uint8_t tmp8u; - int32_t tmp32s; + int32_t tmp32s; (void)tmp32s; uint32_t tmp32u, tmp32u2; int64_t tmp64s; uint64_t tmp64u, tmp64u2; @@ -700,4 +700,4 @@ int RunF0(x64emu_t *emu, rex_t rex) return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c index e4d167a0..681a5583 100755 --- a/src/emu/x64syscall.c +++ b/src/emu/x64syscall.c @@ -57,7 +57,7 @@ int fcntl(int fd, int cmd, ... /* arg */ ); // Syscall table for x86_64 can be found typedef struct scwrap_s { - int x64s; + uint32_t x64s; // 32 bits? int nats; int nbpars; } scwrap_t; @@ -135,7 +135,7 @@ struct mmap_arg_struct { void EXPORT x64Syscall(x64emu_t *emu) { RESET_FLAGS(emu); - uint32_t s = R_EAX; + uint32_t s = R_EAX; // EAX? (syscalls only go up to 547 anyways) printf_log(LOG_DEBUG, "%p: Calling syscall 0x%02X (%d) %p %p %p %p %p %p", (void*)R_RIP, s, s, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_R10, (void*)R_R8, (void*)R_R9); // check wrapper first int cnt = sizeof(syscallwrap) / sizeof(scwrap_t); diff --git a/src/emu/x64tls.c b/src/emu/x64tls.c index 2396eee6..783a1b2f 100755 --- a/src/emu/x64tls.c +++ b/src/emu/x64tls.c @@ -123,7 +123,7 @@ uint32_t my_modify_ldt(x64emu_t* emu, int op, thread_area_t* td, int size) pthread_setspecific(my_context->segtls[idx].key, (void*)my_context->segtls[idx].base); */ - ResetSegmentsCache(thread_get_emu()); + ResetSegmentsCache(emu); return 0; } @@ -148,11 +148,11 @@ static tlsdatasize_t* setupTLSData(box64context_t* context) uintptr_t dtp = (uintptr_t)ptr+context->tlssize+POS_TLS; memcpy((void*)(tlsptr+sizeof(void*)), &dtp, sizeof(void*)); if(dtsize) { - for (size_t i=0; i<context->elfsize; ++i) { + for (int i=0; i<context->elfsize; ++i) { // set pointer dtp = (uintptr_t)ptr + (context->tlssize + GetTLSBase(context->elfs[i])); - memcpy((void*)((uintptr_t)ptr+context->tlssize+POS_TLS+i*16), &dtp, sizeof(void*)); - memcpy((void*)((uintptr_t)ptr+context->tlssize+POS_TLS+i*16+8), &i, sizeof(void*)); // index + *(uint64_t*)((uintptr_t)ptr+context->tlssize+POS_TLS+i*16) = dtp; + *(uint64_t*)((uintptr_t)ptr+context->tlssize+POS_TLS+i*16+8) = i; // index } } memcpy((void*)((uintptr_t)ptr+context->tlssize+0x10), &context->vsyscall, sizeof(void*)); // address of vsyscall diff --git a/src/emu/x87emu_private.h b/src/emu/x87emu_private.h index f188187a..fc71b6d1 100755 --- a/src/emu/x87emu_private.h +++ b/src/emu/x87emu_private.h @@ -14,10 +14,6 @@ typedef struct x64emu_s x64emu_t; #define LN2 0.69314718055994531 #define LG2 0.3010299956639812 -//void Run66D9(x64emu_t *emu); -//void Run66DD(x64emu_t *emu); -//void RunDF(x64emu_t *emu); - #define ST0 emu->mmx87[emu->top] #define ST1 emu->mmx87[(emu->top+1)&7] #define ST(a) emu->mmx87[(emu->top+(a))&7] @@ -58,8 +54,8 @@ static inline void fpu_do_free(x64emu_t* emu, int i) { emu->p_regs[(emu->top+i)&7].tag = 0b11; // empty // check if all empty - for(int i=0; i<8; ++i) - if(emu->p_regs[i].tag != 0b11) + for(int j=0; j<8; ++j) + if(emu->p_regs[j].tag != 0b11) return; emu->fpu_stack = 0; } diff --git a/src/include/box64context.h b/src/include/box64context.h index 1b215378..d5e8b82d 100755 --- a/src/include/box64context.h +++ b/src/include/box64context.h @@ -82,8 +82,8 @@ typedef struct box64context_s { char* fullpath; char* box64path; // path of current box64 executable - uint32_t stacksz; - int stackalign; + uint64_t stacksz; + size_t stackalign; void* stack; // alocated stack elfheader_t **elfs; // elf headers and memory @@ -152,7 +152,7 @@ typedef struct box64context_s { pthread_key_t tlskey; // then tls key to have actual tlsdata void* tlsdata; // the initial global tlsdata - int32_t tlssize; // wanted size of tlsdata + int64_t tlssize; // wanted size of tlsdata base_segment_t segtls[3]; // only handling 0/1/2 descriptors uintptr_t *auxval_start; diff --git a/src/include/custommem.h b/src/include/custommem.h index 1b86d251..14a8248c 100644 --- a/src/include/custommem.h +++ b/src/include/custommem.h @@ -20,11 +20,11 @@ void customFree(void* p); typedef struct dynablock_s dynablock_t; typedef struct dynablocklist_s dynablocklist_t; // custom protection flag to mark Page that are Write protected for Dynarec purpose -uintptr_t AllocDynarecMap(dynablock_t* db, int size); -void FreeDynarecMap(dynablock_t* db, uintptr_t addr, uint32_t size); +uintptr_t AllocDynarecMap(dynablock_t* db, size_t size); +void FreeDynarecMap(dynablock_t* db, uintptr_t addr, size_t size); -void addDBFromAddressRange(uintptr_t addr, uintptr_t size); -void cleanDBFromAddressRange(uintptr_t addr, uintptr_t size, int destroy); +void addDBFromAddressRange(uintptr_t addr, size_t size); +void cleanDBFromAddressRange(uintptr_t addr, size_t size, int destroy); dynablocklist_t* getDB(uintptr_t idx); void addJumpTableIfDefault64(void* addr, void* jmp); @@ -38,14 +38,14 @@ uintptr_t getJumpTableAddress64(uintptr_t addr); #define PROT_ALLOC 0x40 #define PROT_CUSTOM (PROT_DYNAREC|PROT_ALLOC) -void updateProtection(uintptr_t addr, uintptr_t size, uint32_t prot); -void setProtection(uintptr_t addr, uintptr_t size, uint32_t prot); -void freeProtection(uintptr_t addr, uintptr_t size); +void updateProtection(uintptr_t addr, size_t size, uint32_t prot); +void setProtection(uintptr_t addr, size_t size, uint32_t prot); +void freeProtection(uintptr_t addr, size_t size); uint32_t getProtection(uintptr_t addr); #ifdef DYNAREC -void protectDB(uintptr_t addr, uintptr_t size); -void protectDBnolock(uintptr_t addr, uintptr_t size); -void unprotectDB(uintptr_t addr, uintptr_t size); +void protectDB(uintptr_t addr, size_t size); +void protectDBnolock(uintptr_t addr, size_t size); +void unprotectDB(uintptr_t addr, size_t size); void lockDB(); void unlockDB(); #endif @@ -60,4 +60,4 @@ void relockCustommemMutex(int locks); void init_custommem_helper(box64context_t* ctx); void fini_custommem_helper(box64context_t* ctx); -#endif //__CUSTOM_MEM__H_ \ No newline at end of file +#endif //__CUSTOM_MEM__H_ diff --git a/src/include/debug.h b/src/include/debug.h index b1ac8146..ddf1d8b7 100755 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -11,7 +11,6 @@ extern int box64_pagesize; extern int box64_dynarec_dump; extern int box64_dynarec_trace; extern int box64_dynarec_forced; -extern int box64_dynarec_largest; extern uintptr_t box64_nodynarec_start, box64_nodynarec_end; #endif extern int dlsym_error; // log dlsym error diff --git a/src/include/elfloader.h b/src/include/elfloader.h index a46d9b05..aef5ae35 100755 --- a/src/include/elfloader.h +++ b/src/include/elfloader.h @@ -26,7 +26,7 @@ int LoadElfMemory(FILE* f, box64context_t* context, elfheader_t* head); int ReloadElfMemory(FILE* f, box64context_t* context, elfheader_t* head); int RelocateElf(lib_t *maplib, lib_t* local_maplib, elfheader_t* head); int RelocateElfPlt(lib_t *maplib, lib_t* local_maplib, elfheader_t* head); -void CalcStack(elfheader_t* h, uint32_t* stacksz, int* stackalign); +void CalcStack(elfheader_t* h, uint64_t* stacksz, size_t* stackalign); uintptr_t GetEntryPoint(lib_t* maplib, elfheader_t* h); uintptr_t GetLastByte(elfheader_t* h); void AddSymbols(lib_t *maplib, kh_mapsymbols_t* mapsymbols, kh_mapsymbols_t* weaksymbols, kh_mapsymbols_t* localsymbols, elfheader_t* h); @@ -41,7 +41,7 @@ void* GetElfDelta(elfheader_t* h); uint32_t GetBaseSize(elfheader_t* h); int IsAddressInElfSpace(elfheader_t* h, uintptr_t addr); elfheader_t* FindElfAddress(box64context_t *context, uintptr_t addr); -const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uint32_t* sz); +const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uint64_t* sz); int32_t GetTLSBase(elfheader_t* h); uint32_t GetTLSSize(elfheader_t* h); void* GetTLSPointer(box64context_t* context, elfheader_t* h); @@ -55,5 +55,4 @@ void CreateMemorymapFile(box64context_t* context, int fd); int ElfCheckIfUseTCMallocMinimal(elfheader_t* h); // return 1 if tcmalloc is used - #endif //__ELF_LOADER_H_ diff --git a/src/include/librarian.h b/src/include/librarian.h index 6e69349b..37eda132 100755 --- a/src/include/librarian.h +++ b/src/include/librarian.h @@ -37,13 +37,13 @@ int GetNoWeakSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, u elfheader_t* GetGlobalSymbolElf(lib_t *maplib, const char* name); int IsGlobalNoWeakSymbolInNative(lib_t *maplib, const char* name); -void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz); // replace if already there +void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint64_t sz); // replace if already there uintptr_t FindSymbol(kh_mapsymbols_t *mapsymbols, const char* name); -void AddWeakSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz); // don't add if already there +void AddWeakSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint64_t sz); // don't add if already there int GetSymbolStartEnd(kh_mapsymbols_t* mapsymbols, const char* name, uintptr_t* start, uintptr_t* end); -const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* offs, uint32_t* sz); +const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* offs, uint64_t* sz); -const char* FindSymbolName(lib_t *maplib, void* p, void** start, uint32_t* sz, const char** libname, void** base); +const char* FindSymbolName(lib_t *maplib, void* p, void** start, uint64_t* sz, const char** libname, void** base); void AddOffsetSymbol(lib_t *maplib, void* offs, const char* name); const char* GetNameOffset(lib_t *maplib, void* offs); diff --git a/src/include/wrappedlibs.h b/src/include/wrappedlibs.h index d8cf3a64..41e27765 100755 --- a/src/include/wrappedlibs.h +++ b/src/include/wrappedlibs.h @@ -15,7 +15,6 @@ typedef struct wrappedlib_s { wrappedlib_fini_t fini; wrappedlib_get_t get; wrappedlib_get_t getnoweak; - wrappedlib_get_t getlocal; } wrappedlib_t; -#endif //__WRAPPEDLIBS_H__ \ No newline at end of file +#endif //__WRAPPEDLIBS_H__ diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c index 9afdd395..9eb191fd 100755 --- a/src/librarian/librarian.c +++ b/src/librarian/librarian.c @@ -539,7 +539,7 @@ int GetNoWeakSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, u } -void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz) +void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint64_t sz) { int ret; khint_t k = kh_put(mapsymbols, mapsymbols, name, &ret); @@ -553,7 +553,7 @@ uintptr_t FindSymbol(kh_mapsymbols_t *mapsymbols, const char* name) return 0; return kh_val(mapsymbols, k).offs; } -void AddWeakSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz) +void AddWeakSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint64_t sz) { int ret; khint_t k = kh_put(mapsymbols, mapsymbols, name, &ret); @@ -573,7 +573,7 @@ int GetSymbolStartEnd(kh_mapsymbols_t* mapsymbols, const char* name, uintptr_t* return 1; } -const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* start, uint32_t* sz) +const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* start, uint64_t* sz) { uintptr_t addr = (uintptr_t)p; onesymbol_t *one; @@ -587,12 +587,12 @@ const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* start return NULL; } -const char* FindSymbolName(lib_t *maplib, void* p, void** start, uint32_t* sz, const char** libname, void** base) +const char* FindSymbolName(lib_t *maplib, void* p, void** start, uint64_t* sz, const char** libname, void** base) { // first, search in self... const char* ret = NULL; uintptr_t offs = 0; - uint32_t size = 0; + uint64_t size = 0; elfheader_t* h = FindElfAddress(my_context, (uintptr_t)p); if(h) { ret = FindNearestSymbolName(h, p, &offs, &size); @@ -609,6 +609,7 @@ const char* FindSymbolName(lib_t *maplib, void* p, void** start, uint32_t* sz, c return ret; } // TODO: find if cyclic references exists (should also fix MapLibAddMapLib) + (void)maplib; /* for (int i = 0; i < maplib->libsz; ++i) { // if (maplib == maplib->libraries[i]->maplib) continue; const char *nameInLib = FindSymbolName(maplib->libraries[i]->maplib, p, start, sz, libname, base); diff --git a/src/librarian/librarian_private.h b/src/librarian/librarian_private.h index 881f527f..d76157c7 100755 --- a/src/librarian/librarian_private.h +++ b/src/librarian/librarian_private.h @@ -9,7 +9,7 @@ typedef struct box64context_s box64context_t; typedef struct onesymbol_s { uintptr_t offs; - uint32_t sz; + uint64_t sz; // need to track type of symbol? // need to track origin? } onesymbol_t; diff --git a/src/librarian/library.c b/src/librarian/library.c index e5ab8a2f..29ca0f3e 100755 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -46,9 +46,9 @@ typedef struct bridged_s { KHASH_MAP_INIT_STR(bridgemap, bridged_t) -KHASH_MAP_IMPL_STR(datamap, uint32_t) KHASH_MAP_IMPL_STR(symbolmap, wrapper_t) KHASH_MAP_IMPL_STR(symbol2map, symbol2_t) +KHASH_MAP_IMPL_STR(datamap, uint64_t) char* Path2Name(const char* path) { @@ -129,6 +129,7 @@ int EmuLib_GetLocal(library_t* lib, const char* name, uintptr_t *offs, uintptr_t int NativeLib_GetLocal(library_t* lib, const char* name, uintptr_t *offs, uintptr_t *sz) { + (void)lib; (void)name; (void)offs; (void)sz; return 0; } @@ -150,9 +151,9 @@ static void initNativeLib(library_t *lib, box64context_t* context) { lib->getlocal = NativeLib_GetLocal; lib->type = 0; // Call librarian to load all dependant elf - for(int i=0; i<lib->priv.w.needed; ++i) { - if(AddNeededLib(context->maplib, &lib->needed, lib, 0, lib->priv.w.neededlibs[i], context, thread_get_emu())) { - printf_log(LOG_NONE, "Error: loading needed libs in elf %s\n", lib->priv.w.neededlibs[i]); + for(int j=0; j<lib->priv.w.needed; ++j) { + if(AddNeededLib(context->maplib, &lib->needed, lib, 0, lib->priv.w.neededlibs[j], context, thread_get_emu())) { + printf_log(LOG_NONE, "Error: loading needed libs in elf %s\n", lib->priv.w.neededlibs[j]); return; } } @@ -280,6 +281,8 @@ library_t *NewLibrary(const char* path, box64context_t* context) } int AddSymbolsLibrary(lib_t *maplib, library_t* lib, x64emu_t* emu) { + (void)emu; + lib->active = 1; if(lib->type==1) { elfheader_t *elf_header = lib->context->elfs[lib->priv.n.elf_index]; @@ -533,7 +536,7 @@ int GetElfIndex(library_t* lib) return lib->priv.n.elf_index; } -int getSymbolInMaps(library_t*lib, const char* name, int noweak, uintptr_t *addr, uint32_t *size) +int getSymbolInMaps(library_t *lib, const char* name, int noweak, uintptr_t *addr, uintptr_t *size) { if(!lib->active) return 0; diff --git a/src/librarian/library_private.h b/src/librarian/library_private.h index 6169959e..7e8aa4d4 100755 --- a/src/librarian/library_private.h +++ b/src/librarian/library_private.h @@ -23,7 +23,7 @@ typedef struct symbol2_s { KHASH_MAP_DECLARE_STR(symbolmap, wrapper_t) KHASH_MAP_DECLARE_STR(symbol2map, symbol2_t) -KHASH_MAP_DECLARE_STR(datamap, uint32_t) +KHASH_MAP_DECLARE_STR(datamap, uint64_t) #ifndef MAX_PATH @@ -62,7 +62,7 @@ typedef struct library_s { union { wlib_t w; nlib_t n; - } priv; // private lib data + } priv; // private lib data box64context_t *context; // parent context kh_bridgemap_t *bridgemap; kh_symbolmap_t *symbolmap; @@ -93,10 +93,10 @@ typedef struct map_onesymbol2_s { } map_onesymbol2_t; typedef struct map_onedata_s { const char* name; - uint32_t sz; + uint32_t sz; // TODO: convert to size_t int weak; } map_onedata_t; -int getSymbolInMaps(library_t*lib, const char* name, int noweak, uintptr_t *addr, uint32_t *size); // Add bridges to functions +int getSymbolInMaps(library_t *lib, const char* name, int noweak, uintptr_t *addr, uintptr_t *size); // Add bridges to functions #endif //__LIBRARY_PRIVATE_H_ diff --git a/src/libtools/auxval.c b/src/libtools/auxval.c index a038f2dd..82c6fd35 100755 --- a/src/libtools/auxval.c +++ b/src/libtools/auxval.c @@ -23,6 +23,8 @@ static uintptr_t* auxval_start = NULL; int init_auxval(int argc, const char **argv, const char **env) { + (void)argc; (void)argv; + // auxval vector is after envs... while(*env) env++; @@ -56,4 +58,4 @@ unsigned long real_getauxval(unsigned long type) // p+=2; // } // return 0; -//} \ No newline at end of file +//} diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 5c66522e..badb81c4 100755 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -449,6 +449,8 @@ void my_sigactionhandler_oldcode(int32_t sig, siginfo_t* info, void * ucntx, int if(db) { frame = (uintptr_t*)p->uc_mcontext.regs[10+_SP]; } +#else + (void)ucntx; (void)cur_db; #endif // stack tracking x64_stack_t *new_ss = my_context->onstack[sig]?(x64_stack_t*)pthread_getspecific(sigstack_key):NULL; @@ -554,7 +556,7 @@ void my_sigactionhandler_oldcode(int32_t sig, siginfo_t* info, void * ucntx, int sigcontext->uc_mcontext.gregs[X64_TRAPNO] = (info->si_code == SEGV_ACCERR)?13:14; } else if(info->si_code==SEGV_ACCERR && !(prot&PROT_WRITE)) { sigcontext->uc_mcontext.gregs[X64_ERR] = 0x0002; // write flag issue - if(abs((intptr_t)info->si_addr-(intptr_t)sigcontext->uc_mcontext.gregs[X64_RSP])<16) + if(labs((intptr_t)info->si_addr-(intptr_t)sigcontext->uc_mcontext.gregs[X64_RSP])<16) sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 12; // stack overflow probably else sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 14; // PAGE_FAULT diff --git a/src/libtools/threads.c b/src/libtools/threads.c index 0cd08a1b..b2ab3b5d 100755 --- a/src/libtools/threads.c +++ b/src/libtools/threads.c @@ -245,6 +245,7 @@ pthread_attr_t* getAlignedAttr(pthread_attr_t* m) { return m; } void freeAlignedAttr(void* attr) { + (void)attr; } #else typedef struct aligned_attr_s { @@ -313,6 +314,7 @@ EXPORT int my_pthread_attr_setstack(x64emu_t* emu, void* attr, void* stackaddr, EXPORT int my_pthread_attr_setstacksize(x64emu_t* emu, void* attr, size_t stacksize) { + (void)emu; //aarch64 have an PTHREAD_STACK_MIN of 131072 instead of 16384 on x86_64! if(stacksize<PTHREAD_STACK_MIN) stacksize = PTHREAD_STACK_MIN; @@ -322,70 +324,86 @@ EXPORT int my_pthread_attr_setstacksize(x64emu_t* emu, void* attr, size_t stacks #ifndef NOALIGN EXPORT int my_pthread_attr_getdetachstate(x64emu_t* emu, pthread_attr_t* attr, int *state) { + (void)emu; return pthread_attr_getdetachstate(getAlignedAttr(attr), state); } EXPORT int my_pthread_attr_getguardsize(x64emu_t* emu, pthread_attr_t* attr, size_t* size) { + (void)emu; return pthread_attr_getguardsize(getAlignedAttr(attr), size); } EXPORT int my_pthread_attr_getinheritsched(x64emu_t* emu, pthread_attr_t* attr, int* sched) { + (void)emu; return pthread_attr_getinheritsched(getAlignedAttr(attr), sched); } EXPORT int my_pthread_attr_getschedparam(x64emu_t* emu, pthread_attr_t* attr, void* param) { + (void)emu; return pthread_attr_getschedparam(getAlignedAttr(attr), param); } EXPORT int my_pthread_attr_getschedpolicy(x64emu_t* emu, pthread_attr_t* attr, int* policy) { + (void)emu; return pthread_attr_getschedpolicy(getAlignedAttr(attr), policy); } EXPORT int my_pthread_attr_getscope(x64emu_t* emu, pthread_attr_t* attr, int* scope) { + (void)emu; return pthread_attr_getscope(getAlignedAttr(attr), scope); } EXPORT int my_pthread_attr_getstackaddr(x64emu_t* emu, pthread_attr_t* attr, void* addr) { + (void)emu; size_t size; return pthread_attr_getstack(getAlignedAttr(attr), addr, &size); //return pthread_attr_getstackaddr(getAlignedAttr(attr), addr); } EXPORT int my_pthread_attr_getstacksize(x64emu_t* emu, pthread_attr_t* attr, size_t* size) { + (void)emu; void* addr; return pthread_attr_getstack(getAlignedAttr(attr), &addr, size); //return pthread_attr_getstacksize(getAlignedAttr(attr), size); } EXPORT int my_pthread_attr_init(x64emu_t* emu, pthread_attr_t* attr) { + (void)emu; return pthread_attr_init(getAlignedAttrWithInit(attr, 0)); } EXPORT int my_pthread_attr_setaffinity_np(x64emu_t* emu, pthread_attr_t* attr, size_t cpusize, void* cpuset) { + (void)emu; return pthread_attr_setaffinity_np(getAlignedAttr(attr), cpusize, cpuset); } EXPORT int my_pthread_attr_setdetachstate(x64emu_t* emu, pthread_attr_t* attr, int state) { + (void)emu; return pthread_attr_setdetachstate(getAlignedAttr(attr), state); } EXPORT int my_pthread_attr_setguardsize(x64emu_t* emu, pthread_attr_t* attr, size_t size) { + (void)emu; return pthread_attr_setguardsize(getAlignedAttr(attr), size); } EXPORT int my_pthread_attr_setinheritsched(x64emu_t* emu, pthread_attr_t* attr, int sched) { + (void)emu; return pthread_attr_setinheritsched(getAlignedAttr(attr), sched); } EXPORT int my_pthread_attr_setschedparam(x64emu_t* emu, pthread_attr_t* attr, void* param) { + (void)emu; return pthread_attr_setschedparam(getAlignedAttr(attr), param); } EXPORT int my_pthread_attr_setschedpolicy(x64emu_t* emu, pthread_attr_t* attr, int policy) { + (void)emu; return pthread_attr_setschedpolicy(getAlignedAttr(attr), policy); } EXPORT int my_pthread_attr_setscope(x64emu_t* emu, pthread_attr_t* attr, int scope) { + (void)emu; return pthread_attr_setscope(getAlignedAttr(attr), scope); } EXPORT int my_pthread_attr_setstackaddr(x64emu_t* emu, pthread_attr_t* attr, void* addr) @@ -495,6 +513,7 @@ EXPORT void my___pthread_register_cancel(void* E, void* B) EXPORT void my___pthread_unregister_cancel(x64emu_t* emu, x64_unwind_buff_t* buff) { + (void)emu; __pthread_unwind_buf_t * pbuff = GetCancelThread(buff); __pthread_unregister_cancel(pbuff); @@ -504,6 +523,7 @@ EXPORT void my___pthread_unregister_cancel(x64emu_t* emu, x64_unwind_buff_t* buf EXPORT void my___pthread_unwind_next(x64emu_t* emu, x64_unwind_buff_t* buff) { + (void)emu; __pthread_unwind_buf_t pbuff = *GetCancelThread(buff); DelCancelThread(buff); // function is noreturn, putting stuff on the stack to have it auto-free (is that correct?) @@ -610,6 +630,7 @@ static void my_once_callback() int EXPORT my_pthread_once(x64emu_t* emu, void* once, void* cb) { + (void)emu; my_once_callback_fct = (uintptr_t)cb; return pthread_once(once, my_once_callback); } @@ -617,6 +638,7 @@ EXPORT int my___pthread_once(x64emu_t* emu, void* once, void* cb) __attribute__( EXPORT int my_pthread_key_create(x64emu_t* emu, void* key, void* dtor) { + (void)emu; return pthread_key_create(key, findkey_destructorFct(dtor)); } EXPORT int my___pthread_key_create(x64emu_t* emu, void* key, void* dtor) __attribute__((alias("my_pthread_key_create"))); @@ -626,43 +648,42 @@ pthread_mutex_t* getAlignedMutex(pthread_mutex_t* m); EXPORT int my_pthread_cond_timedwait(x64emu_t* emu, pthread_cond_t* cond, void* mutex, void* abstime) { + (void)emu; return pthread_cond_timedwait(cond, getAlignedMutex((pthread_mutex_t*)mutex), (const struct timespec*)abstime); } EXPORT int my_pthread_cond_wait(x64emu_t* emu, pthread_cond_t* cond, void* mutex) { + (void)emu; return pthread_cond_wait(cond, getAlignedMutex((pthread_mutex_t*)mutex)); } -//EXPORT int my_pthread_attr_setscope(x64emu_t* emu, void* at*tr, int scope) -//{ -// if(scope!=PTHREAD_SCOPE_SYSTEM) printf_log(LOG_INFO, "Warning, scope of call to pthread_attr_setscope(...) changed from %d to PTHREAD_SCOPE_SYSTEM\n", scope); -// return pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM); -// //The scope is either PTHREAD_SCOPE_SYSTEM or PTHREAD_SCOPE_PROCESS -// // but PTHREAD_SCOPE_PROCESS doesn't seem supported on ARM linux, and PTHREAD_SCOPE_SYSTEM is default -//} - EXPORT void my__pthread_cleanup_push_defer(x64emu_t* emu, void* buffer, void* routine, void* arg) { + (void)emu; _pthread_cleanup_push_defer(buffer, findcleanup_routineFct(routine), arg); } EXPORT void my__pthread_cleanup_push(x64emu_t* emu, void* buffer, void* routine, void* arg) { + (void)emu; _pthread_cleanup_push(buffer, findcleanup_routineFct(routine), arg); } EXPORT void my__pthread_cleanup_pop_restore(x64emu_t* emu, void* buffer, int exec) { + (void)emu; _pthread_cleanup_pop_restore(buffer, exec); } EXPORT void my__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec) { + (void)emu; _pthread_cleanup_pop(buffer, exec); } //EXPORT int my_pthread_getaffinity_np(x64emu_t* emu, pthread_t thread, int cpusetsize, void* cpuset) //{ +// (void)emu; // int ret = pthread_getaffinity_np(thread, cpusetsize, cpuset); // if(ret<0) { // printf_log(LOG_INFO, "Warning, pthread_getaffinity_np(%p, %d, %p) errored, with errno=%d\n", (void*)thread, cpusetsize, cpuset, errno); @@ -673,6 +694,7 @@ EXPORT void my__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec) //EXPORT int my_pthread_setaffinity_np(x64emu_t* emu, pthread_t thread, int cpusetsize, void* cpuset) //{ +// (void)emu; // int ret = pthread_setaffinity_np(thread, cpusetsize, cpuset); // if(ret<0) { // printf_log(LOG_INFO, "Warning, pthread_setaffinity_np(%p, %d, %p) errored, with errno=%d\n", (void*)thread, cpusetsize, cpuset, errno); @@ -683,7 +705,7 @@ EXPORT void my__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec) //EXPORT int my_pthread_attr_setaffinity_np(x64emu_t* emu, void* attr, uint32_t cpusetsize, void* cpuset) //{ -// +// (void)emu; // int ret = pthread_attr_setaffinity_np(attr, cpusetsize, cpuset); // if(ret<0) { // printf_log(LOG_INFO, "Warning, pthread_attr_setaffinity_np(%p, %d, %p) errored, with errno=%d\n", attr, cpusetsize, cpuset, errno); @@ -694,14 +716,16 @@ EXPORT void my__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec) EXPORT int my_pthread_kill(x64emu_t* emu, void* thread, int sig) { - // check for old "is everything ok?" - if(thread==NULL && sig==0) - return pthread_kill(pthread_self(), 0); - return pthread_kill((pthread_t)thread, sig); + (void)emu; + // check for old "is everything ok?" + if(thread==NULL && sig==0) + return pthread_kill(pthread_self(), 0); + return pthread_kill((pthread_t)thread, sig); } //EXPORT void my_pthread_exit(x64emu_t* emu, void* retval) //{ +// (void)emu; // pthread_exit(retval); //} diff --git a/src/main.c b/src/main.c index e6401c24..e50b43c8 100755 --- a/src/main.c +++ b/src/main.c @@ -33,7 +33,6 @@ int box64_pagesize; int box64_dynarec = 1; int box64_dynarec_dump = 0; int box64_dynarec_forced = 0; -int box64_dynarec_largest = 0; uintptr_t box64_nodynarec_start = 0; uintptr_t box64_nodynarec_end = 0; #else //DYNAREC @@ -519,28 +518,28 @@ void LoadEnvVars(box64context_t *context) } EXPORTDYN -void setupTraceInit(box64context_t* context) +void setupTraceInit() { #ifdef HAVE_TRACE char* p = getenv("BOX64_TRACE_INIT"); if(p) { setbuf(stdout, NULL); - uintptr_t trace_start=0, trace_end=0; + uintptr_t s_trace_start=0, s_trace_end=0; if (strcmp(p, "1")==0) SetTraceEmu(0, 0); else if (strchr(p,'-')) { - if(sscanf(p, "%ld-%ld", &trace_start, &trace_end)!=2) { - if(sscanf(p, "0x%lX-0x%lX", &trace_start, &trace_end)!=2) - sscanf(p, "%lx-%lx", &trace_start, &trace_end); + if(sscanf(p, "%ld-%ld", &s_trace_start, &s_trace_end)!=2) { + if(sscanf(p, "0x%lX-0x%lX", &s_trace_start, &s_trace_end)!=2) + sscanf(p, "%lx-%lx", &s_trace_start, &s_trace_end); } - if(trace_start || trace_end) - SetTraceEmu(trace_start, trace_end); + if(s_trace_start || s_trace_end) + SetTraceEmu(s_trace_start, s_trace_end); } else { - if (GetSymbolStartEnd(GetMapSymbol(my_context->maplib), p, &trace_start, &trace_end)) { - SetTraceEmu(trace_start, trace_end); - printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)trace_start, (void*)trace_end); + if (GetSymbolStartEnd(GetMapSymbol(my_context->maplib), p, &s_trace_start, &s_trace_end)) { + SetTraceEmu(s_trace_start, s_trace_end); + printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)s_trace_start, (void*)s_trace_end); } else { - printf_log(LOG_NONE, "Warning, symbol to Traced (\"%s\") not found, disabling trace\n", p); + printf_log(LOG_NONE, "Warning, symbol to trace (\"%s\") not found, disabling trace\n", p); SetTraceEmu(0, 100); // disabling trace, mostly } } @@ -554,37 +553,37 @@ void setupTraceInit(box64context_t* context) } EXPORTDYN -void setupTrace(box64context_t* context) +void setupTrace() { #ifdef HAVE_TRACE char* p = getenv("BOX64_TRACE"); if(p) { setbuf(stdout, NULL); - uintptr_t trace_start=0, trace_end=0; + uintptr_t s_trace_start=0, s_trace_end=0; if (strcmp(p, "1")==0) SetTraceEmu(0, 0); else if (strchr(p,'-')) { - if(sscanf(p, "%ld-%ld", &trace_start, &trace_end)!=2) { - if(sscanf(p, "0x%lX-0x%lX", &trace_start, &trace_end)!=2) - sscanf(p, "%lx-%lx", &trace_start, &trace_end); + if(sscanf(p, "%ld-%ld", &s_trace_start, &s_trace_end)!=2) { + if(sscanf(p, "0x%lX-0x%lX", &s_trace_start, &s_trace_end)!=2) + sscanf(p, "%lx-%lx", &s_trace_start, &s_trace_end); } - if(trace_start || trace_end) { - SetTraceEmu(trace_start, trace_end); - if(!trace_start && trace_end==1) { + if(s_trace_start || s_trace_end) { + SetTraceEmu(s_trace_start, s_trace_end); + if(!s_trace_start && s_trace_end==1) { printf_log(LOG_INFO, "TRACE enabled but inactive\n"); } else { - printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)trace_start, (void*)trace_end); + printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)s_trace_start, (void*)s_trace_end); } } } else { - if (GetGlobalSymbolStartEnd(my_context->maplib, p, &trace_start, &trace_end)) { - SetTraceEmu(trace_start, trace_end); - printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)trace_start, (void*)trace_end); - } else if(GetLocalSymbolStartEnd(my_context->maplib, p, &trace_start, &trace_end, NULL)) { - SetTraceEmu(trace_start, trace_end); - printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)trace_start, (void*)trace_end); + if (GetGlobalSymbolStartEnd(my_context->maplib, p, &s_trace_start, &s_trace_end)) { + SetTraceEmu(s_trace_start, s_trace_end); + printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)s_trace_start, (void*)s_trace_end); + } else if(GetLocalSymbolStartEnd(my_context->maplib, p, &s_trace_start, &s_trace_end, NULL)) { + SetTraceEmu(s_trace_start, s_trace_end); + printf_log(LOG_INFO, "TRACE on %s only (%p-%p)\n", p, (void*)s_trace_start, (void*)s_trace_end); } else { - printf_log(LOG_NONE, "Warning, symbol to Traced (\"%s\") not found, trying to set trace later\n", p); + printf_log(LOG_NONE, "Warning, symbol to trace (\"%s\") not found, trying to set trace later\n", p); SetTraceEmu(0, 1); // disabling trace, mostly trace_func = strdup(p); } @@ -966,7 +965,7 @@ int main(int argc, const char **argv, const char **env) { thread_set_emu(emu); - setupTraceInit(my_context); + setupTraceInit(); // export symbols AddSymbols(my_context->maplib, GetMapSymbol(my_context->maplib), GetWeakSymbol(my_context->maplib), GetLocalSymbol(my_context->maplib), elf_header); if(wine_preloaded) { @@ -1012,7 +1011,7 @@ int main(int argc, const char **argv, const char **env) { // do some special case check, _IO_2_1_stderr_ and friends, that are setup by libc, but it's already done here, so need to do a copy ResetSpecialCaseMainElf(elf_header); // init... - setupTrace(my_context); + setupTrace(); // get entrypoint my_context->ep = GetEntryPoint(my_context->maplib, elf_header); #if defined(RPI) || defined(RK3399) || defined(RK3326) diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c index 7c330128..cfc778ae 100755 --- a/src/tools/box64stack.c +++ b/src/tools/box64stack.c @@ -20,14 +20,14 @@ int CalcStackSize(box64context_t *context) for (int i=0; i<context->elfsize; ++i) CalcStack(context->elfs[i], &context->stacksz, &context->stackalign); -// if (posix_memalign((void**)&context->stack, context->stackalign, context->stacksz)) { + //if (posix_memalign((void**)&context->stack, context->stackalign, context->stacksz)) { context->stack = mmap(NULL, context->stacksz, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0); if (context->stack==(void*)-1) { - printf_log(LOG_NONE, "Cannot allocate aligned memory (0x%x/0x%x) for stack\n", context->stacksz, context->stackalign); + printf_log(LOG_NONE, "Cannot allocate aligned memory (0x%lx/0x%zx) for stack\n", context->stacksz, context->stackalign); return 1; } //memset(context->stack, 0, context->stacksz); - printf_log(LOG_DEBUG, "Stack is @%p size=0x%x align=0x%x\n", context->stack, context->stacksz, context->stackalign); + printf_log(LOG_DEBUG, "Stack is @%p size=0x%lx align=0x%zx\n", context->stack, context->stacksz, context->stackalign); return 0; } diff --git a/src/tools/bridge.c b/src/tools/bridge.c index 3a3e6768..fb349ccf 100755 --- a/src/tools/bridge.c +++ b/src/tools/bridge.c @@ -149,6 +149,8 @@ uintptr_t AddCheckBridge(bridge_t* bridge, wrapper_t w, void* fnc, int N, const uintptr_t AddAutomaticBridge(x64emu_t* emu, bridge_t* bridge, wrapper_t w, void* fnc, int N) { + (void)emu; + if(!fnc) return 0; uintptr_t ret = CheckBridged(bridge, fnc); diff --git a/src/tools/callback.c b/src/tools/callback.c index 8c46139e..1f7250a6 100755 --- a/src/tools/callback.c +++ b/src/tools/callback.c @@ -16,6 +16,8 @@ EXPORTDYN uint64_t RunFunction(box64context_t *context, uintptr_t fnc, int nargs, ...) { + (void)context; + x64emu_t *emu = thread_get_emu(); if(nargs>6) diff --git a/src/tools/fileutils.c b/src/tools/fileutils.c index 870bbd1b..18b8dc4d 100755 --- a/src/tools/fileutils.c +++ b/src/tools/fileutils.c @@ -46,7 +46,7 @@ char* ResolveFile(const char* filename, path_collection_t* paths) for (int i=0; i<paths->size; ++i) { if(paths->paths[i][0]!='/') { // not an absolute path... - getcwd(p, sizeof(p)); + if(!getcwd(p, sizeof(p))) return NULL; if(p[strlen(p)-1]!='/') strcat(p, "/"); strcat(p, paths->paths[i]); diff --git a/src/wrapped/generated/wrappedbz2types.h b/src/wrapped/generated/wrappedbz2types.h index 7ea64a63..ec0f499a 100644 --- a/src/wrapped/generated/wrappedbz2types.h +++ b/src/wrapped/generated/wrappedbz2types.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedbz2TYPES_H_ #define __wrappedbz2TYPES_H_ diff --git a/src/wrapped/generated/wrappedcryptotypes.h b/src/wrapped/generated/wrappedcryptotypes.h index 30d8180f..3e37a464 100644 --- a/src/wrapped/generated/wrappedcryptotypes.h +++ b/src/wrapped/generated/wrappedcryptotypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedcryptoTYPES_H_ #define __wrappedcryptoTYPES_H_ diff --git a/src/wrapped/generated/wrappedcurltypes.h b/src/wrapped/generated/wrappedcurltypes.h index 5f0cccfd..95fae23c 100644 --- a/src/wrapped/generated/wrappedcurltypes.h +++ b/src/wrapped/generated/wrappedcurltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedcurlTYPES_H_ #define __wrappedcurlTYPES_H_ diff --git a/src/wrapped/generated/wrappeddbustypes.h b/src/wrapped/generated/wrappeddbustypes.h index ea6dd689..f7468c89 100644 --- a/src/wrapped/generated/wrappeddbustypes.h +++ b/src/wrapped/generated/wrappeddbustypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappeddbusTYPES_H_ #define __wrappeddbusTYPES_H_ diff --git a/src/wrapped/generated/wrappedfontconfigtypes.h b/src/wrapped/generated/wrappedfontconfigtypes.h index 46e77c3f..580e5974 100644 --- a/src/wrapped/generated/wrappedfontconfigtypes.h +++ b/src/wrapped/generated/wrappedfontconfigtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedfontconfigTYPES_H_ #define __wrappedfontconfigTYPES_H_ diff --git a/src/wrapped/generated/wrappedfreetypetypes.h b/src/wrapped/generated/wrappedfreetypetypes.h index 9378eb8f..034f108b 100644 --- a/src/wrapped/generated/wrappedfreetypetypes.h +++ b/src/wrapped/generated/wrappedfreetypetypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedfreetypeTYPES_H_ #define __wrappedfreetypeTYPES_H_ diff --git a/src/wrapped/generated/wrappedgnutlstypes.h b/src/wrapped/generated/wrappedgnutlstypes.h index d465739c..62fe8d58 100644 --- a/src/wrapped/generated/wrappedgnutlstypes.h +++ b/src/wrapped/generated/wrappedgnutlstypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedgnutlsTYPES_H_ #define __wrappedgnutlsTYPES_H_ diff --git a/src/wrapped/generated/wrappedldlinuxtypes.h b/src/wrapped/generated/wrappedldlinuxtypes.h index 4a7a4158..45bb4eba 100644 --- a/src/wrapped/generated/wrappedldlinuxtypes.h +++ b/src/wrapped/generated/wrappedldlinuxtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedldlinuxTYPES_H_ #define __wrappedldlinuxTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibasoundtypes.h b/src/wrapped/generated/wrappedlibasoundtypes.h index ab06d481..a82a4d58 100644 --- a/src/wrapped/generated/wrappedlibasoundtypes.h +++ b/src/wrapped/generated/wrappedlibasoundtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibasoundTYPES_H_ #define __wrappedlibasoundTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h index d252e38a..894b8e08 100644 --- a/src/wrapped/generated/wrappedlibctypes.h +++ b/src/wrapped/generated/wrappedlibctypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibcTYPES_H_ #define __wrappedlibcTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibdltypes.h b/src/wrapped/generated/wrappedlibdltypes.h index 9a903f6d..a30c1185 100644 --- a/src/wrapped/generated/wrappedlibdltypes.h +++ b/src/wrapped/generated/wrappedlibdltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibdlTYPES_H_ #define __wrappedlibdlTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibgltypes.h b/src/wrapped/generated/wrappedlibgltypes.h index 463bced6..5295a21b 100644 --- a/src/wrapped/generated/wrappedlibgltypes.h +++ b/src/wrapped/generated/wrappedlibgltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibglTYPES_H_ #define __wrappedlibglTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibglutypes.h b/src/wrapped/generated/wrappedlibglutypes.h index c3f295fa..eecbceff 100644 --- a/src/wrapped/generated/wrappedlibglutypes.h +++ b/src/wrapped/generated/wrappedlibglutypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibgluTYPES_H_ #define __wrappedlibgluTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibpthreadtypes.h b/src/wrapped/generated/wrappedlibpthreadtypes.h index 87d38988..107e43eb 100644 --- a/src/wrapped/generated/wrappedlibpthreadtypes.h +++ b/src/wrapped/generated/wrappedlibpthreadtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibpthreadTYPES_H_ #define __wrappedlibpthreadTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibrttypes.h b/src/wrapped/generated/wrappedlibrttypes.h index f3c61b10..2b3bd15e 100644 --- a/src/wrapped/generated/wrappedlibrttypes.h +++ b/src/wrapped/generated/wrappedlibrttypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibrtTYPES_H_ #define __wrappedlibrtTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibsmtypes.h b/src/wrapped/generated/wrappedlibsmtypes.h index 27f9c636..26e2a700 100644 --- a/src/wrapped/generated/wrappedlibsmtypes.h +++ b/src/wrapped/generated/wrappedlibsmtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibsmTYPES_H_ #define __wrappedlibsmTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibssltypes.h b/src/wrapped/generated/wrappedlibssltypes.h index a56ea812..b8c176e1 100644 --- a/src/wrapped/generated/wrappedlibssltypes.h +++ b/src/wrapped/generated/wrappedlibssltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibsslTYPES_H_ #define __wrappedlibsslTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibx11types.h b/src/wrapped/generated/wrappedlibx11types.h index 0810f2a3..e9a2e3e5 100644 --- a/src/wrapped/generated/wrappedlibx11types.h +++ b/src/wrapped/generated/wrappedlibx11types.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibx11TYPES_H_ #define __wrappedlibx11TYPES_H_ diff --git a/src/wrapped/generated/wrappedlibxexttypes.h b/src/wrapped/generated/wrappedlibxexttypes.h index cb48dac5..e813ec93 100644 --- a/src/wrapped/generated/wrappedlibxexttypes.h +++ b/src/wrapped/generated/wrappedlibxexttypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibxextTYPES_H_ #define __wrappedlibxextTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibxtsttypes.h b/src/wrapped/generated/wrappedlibxtsttypes.h index f13097ea..c4e2ed70 100644 --- a/src/wrapped/generated/wrappedlibxtsttypes.h +++ b/src/wrapped/generated/wrappedlibxtsttypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibxtstTYPES_H_ #define __wrappedlibxtstTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibxttypes.h b/src/wrapped/generated/wrappedlibxttypes.h index 8d49e866..dbc64d50 100644 --- a/src/wrapped/generated/wrappedlibxttypes.h +++ b/src/wrapped/generated/wrappedlibxttypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibxtTYPES_H_ #define __wrappedlibxtTYPES_H_ diff --git a/src/wrapped/generated/wrappedlibztypes.h b/src/wrapped/generated/wrappedlibztypes.h index b2201a7d..a4aaf3c8 100644 --- a/src/wrapped/generated/wrappedlibztypes.h +++ b/src/wrapped/generated/wrappedlibztypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedlibzTYPES_H_ #define __wrappedlibzTYPES_H_ diff --git a/src/wrapped/generated/wrappedopenaltypes.h b/src/wrapped/generated/wrappedopenaltypes.h index 6889c3ba..d63b7311 100644 --- a/src/wrapped/generated/wrappedopenaltypes.h +++ b/src/wrapped/generated/wrappedopenaltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedopenalTYPES_H_ #define __wrappedopenalTYPES_H_ diff --git a/src/wrapped/generated/wrappedpangotypes.h b/src/wrapped/generated/wrappedpangotypes.h index 7e535062..ee78f918 100644 --- a/src/wrapped/generated/wrappedpangotypes.h +++ b/src/wrapped/generated/wrappedpangotypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedpangoTYPES_H_ #define __wrappedpangoTYPES_H_ diff --git a/src/wrapped/generated/wrappedpulsetypes.h b/src/wrapped/generated/wrappedpulsetypes.h index 2fc994fd..43292d65 100644 --- a/src/wrapped/generated/wrappedpulsetypes.h +++ b/src/wrapped/generated/wrappedpulsetypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedpulseTYPES_H_ #define __wrappedpulseTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl1imagetypes.h b/src/wrapped/generated/wrappedsdl1imagetypes.h index 89c5e486..1b7e989b 100644 --- a/src/wrapped/generated/wrappedsdl1imagetypes.h +++ b/src/wrapped/generated/wrappedsdl1imagetypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl1imageTYPES_H_ #define __wrappedsdl1imageTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl1mixertypes.h b/src/wrapped/generated/wrappedsdl1mixertypes.h index 26106a46..5d4c5819 100644 --- a/src/wrapped/generated/wrappedsdl1mixertypes.h +++ b/src/wrapped/generated/wrappedsdl1mixertypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl1mixerTYPES_H_ #define __wrappedsdl1mixerTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl1ttftypes.h b/src/wrapped/generated/wrappedsdl1ttftypes.h index b61ad3e7..058a8b12 100644 --- a/src/wrapped/generated/wrappedsdl1ttftypes.h +++ b/src/wrapped/generated/wrappedsdl1ttftypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl1ttfTYPES_H_ #define __wrappedsdl1ttfTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl1types.h b/src/wrapped/generated/wrappedsdl1types.h index b510c583..f4b819d2 100644 --- a/src/wrapped/generated/wrappedsdl1types.h +++ b/src/wrapped/generated/wrappedsdl1types.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl1TYPES_H_ #define __wrappedsdl1TYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl2imagetypes.h b/src/wrapped/generated/wrappedsdl2imagetypes.h index 57120cbe..dde655f7 100644 --- a/src/wrapped/generated/wrappedsdl2imagetypes.h +++ b/src/wrapped/generated/wrappedsdl2imagetypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl2imageTYPES_H_ #define __wrappedsdl2imageTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl2mixertypes.h b/src/wrapped/generated/wrappedsdl2mixertypes.h index 7bc662db..45585588 100644 --- a/src/wrapped/generated/wrappedsdl2mixertypes.h +++ b/src/wrapped/generated/wrappedsdl2mixertypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl2mixerTYPES_H_ #define __wrappedsdl2mixerTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl2ttftypes.h b/src/wrapped/generated/wrappedsdl2ttftypes.h index fe3c4815..81c411cd 100644 --- a/src/wrapped/generated/wrappedsdl2ttftypes.h +++ b/src/wrapped/generated/wrappedsdl2ttftypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl2ttfTYPES_H_ #define __wrappedsdl2ttfTYPES_H_ diff --git a/src/wrapped/generated/wrappedsdl2types.h b/src/wrapped/generated/wrappedsdl2types.h index 3c8bb639..d59b86a1 100644 --- a/src/wrapped/generated/wrappedsdl2types.h +++ b/src/wrapped/generated/wrappedsdl2types.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsdl2TYPES_H_ #define __wrappedsdl2TYPES_H_ diff --git a/src/wrapped/generated/wrappedsmpeg2types.h b/src/wrapped/generated/wrappedsmpeg2types.h index 8fe02baf..0b1b13ed 100644 --- a/src/wrapped/generated/wrappedsmpeg2types.h +++ b/src/wrapped/generated/wrappedsmpeg2types.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsmpeg2TYPES_H_ #define __wrappedsmpeg2TYPES_H_ diff --git a/src/wrapped/generated/wrappedsmpegtypes.h b/src/wrapped/generated/wrappedsmpegtypes.h index 658adb1e..fa6f397b 100644 --- a/src/wrapped/generated/wrappedsmpegtypes.h +++ b/src/wrapped/generated/wrappedsmpegtypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedsmpegTYPES_H_ #define __wrappedsmpegTYPES_H_ diff --git a/src/wrapped/generated/wrappedutiltypes.h b/src/wrapped/generated/wrappedutiltypes.h index 33e5ddec..050f59ec 100644 --- a/src/wrapped/generated/wrappedutiltypes.h +++ b/src/wrapped/generated/wrappedutiltypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedutilTYPES_H_ #define __wrappedutilTYPES_H_ diff --git a/src/wrapped/generated/wrappedvorbisfiletypes.h b/src/wrapped/generated/wrappedvorbisfiletypes.h index c135492f..f430cab5 100644 --- a/src/wrapped/generated/wrappedvorbisfiletypes.h +++ b/src/wrapped/generated/wrappedvorbisfiletypes.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __wrappedvorbisfileTYPES_H_ #define __wrappedvorbisfileTYPES_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index b6a0083a..0b90c863 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #include <stdio.h> #include <stdlib.h> @@ -1236,7 +1236,7 @@ typedef double (*KFKp_t)(double, void*); #endif void vFE(x64emu_t *emu, uintptr_t fcn) { vFE_t fn = (vFE_t)fcn; fn(emu); } -void vFv(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); } +void vFv(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); (void)emu; } void vFi(x64emu_t *emu, uintptr_t fcn) { vFi_t fn = (vFi_t)fcn; fn((int64_t)R_RDI); } void vFu(x64emu_t *emu, uintptr_t fcn) { vFu_t fn = (vFu_t)fcn; fn((uint64_t)R_RDI); } void vFf(x64emu_t *emu, uintptr_t fcn) { vFf_t fn = (vFf_t)fcn; fn(emu->xmm[0].f[0]); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index d17274b4..b15e3e17 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -1,5 +1,5 @@ /******************************************************************* - * File automatically generated by rebuild_wrappers.py (v1.3.0.10) * + * File automatically generated by rebuild_wrappers.py (v1.3.0.11) * *******************************************************************/ #ifndef __WRAPPER_H_ #define __WRAPPER_H_ diff --git a/src/wrapped/wrappedbz2.c b/src/wrapped/wrappedbz2.c index 0f4b76b8..686d845f 100755 --- a/src/wrapped/wrappedbz2.c +++ b/src/wrapped/wrappedbz2.c @@ -54,6 +54,7 @@ void* getBz2My(library_t* lib) void freeBz2My(void* lib) { + (void)lib; //bz2_my_t *my = (bz2_my_t *)lib; } @@ -159,6 +160,7 @@ typedef struct { EXPORT int my_BZ2_bzCompressInit(x64emu_t* emu, my_bz_stream_t* strm, int blocksize, int verbosity, int work) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -169,6 +171,7 @@ EXPORT int my_BZ2_bzCompressInit(x64emu_t* emu, my_bz_stream_t* strm, int blocks EXPORT int my_BZ2_bzCompress(x64emu_t* emu, my_bz_stream_t* strm, int action) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -179,6 +182,7 @@ EXPORT int my_BZ2_bzCompress(x64emu_t* emu, my_bz_stream_t* strm, int action) EXPORT int my_BZ2_bzCompressEnd(x64emu_t* emu, my_bz_stream_t* strm) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -189,6 +193,7 @@ EXPORT int my_BZ2_bzCompressEnd(x64emu_t* emu, my_bz_stream_t* strm) EXPORT int my_BZ2_bzDecompressInit(x64emu_t* emu, my_bz_stream_t* strm, int verbosity, int small) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -199,6 +204,7 @@ EXPORT int my_BZ2_bzDecompressInit(x64emu_t* emu, my_bz_stream_t* strm, int verb EXPORT int my_BZ2_bzDecompress(x64emu_t* emu, my_bz_stream_t* strm) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -209,6 +215,7 @@ EXPORT int my_BZ2_bzDecompress(x64emu_t* emu, my_bz_stream_t* strm) EXPORT int my_BZ2_bzDecompressEnd(x64emu_t* emu, my_bz_stream_t* strm) { + (void)emu; library_t * lib = GetLibInternal(bz2Name); bz2_my_t *my = (bz2_my_t*)lib->priv.w.p2; WRAP_BZ(strm); @@ -227,4 +234,3 @@ EXPORT int my_BZ2_bzDecompressEnd(x64emu_t* emu, my_bz_stream_t* strm) my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedcrypto.c b/src/wrapped/wrappedcrypto.c index 1cfcf62f..aad3ec7a 100755 --- a/src/wrapped/wrappedcrypto.c +++ b/src/wrapped/wrappedcrypto.c @@ -69,6 +69,7 @@ void* getCryptoMy(library_t* lib) void freeCryptoMy(void* lib) { + (void)lib; //crypto_my_t *my = (crypto_my_t *)lib; } @@ -228,106 +229,106 @@ static void* find_passphrase_Fct(void* fct) EXPORT int32_t my_ENGINE_ctrl(x64emu_t* emu, void* e, int32_t cmd, int32_t i, void* p, void* f) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->ENGINE_ctrl(e, cmd, i, p, find_ENGINE_ctrl_cb_Fct(f)); } EXPORT int32_t my_ENGINE_ctrl_cmd(x64emu_t* emu, void* e, void* cmd, long i, void* p, void* f, int optional) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->ENGINE_ctrl_cmd(e, cmd, i, p, find_ENGINE_ctrl_cb_Fct(f), optional); } EXPORT void my_CRYPTO_set_id_callback(x64emu_t* emu, void* cb) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->CRYPTO_set_id_callback(find_id_func_Fct(cb)); } EXPORT void my_CRYPTO_set_locking_callback(x64emu_t* emu, void* cb) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->CRYPTO_set_locking_callback(find_lock_func_Fct(cb)); } EXPORT void my_PEM_read_bio_DSAPrivateKey(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_DSAPrivateKey(bp, x, find_passphrase_Fct(cb), u); } EXPORT void my_PEM_read_bio_DSA_PUBKEY(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_DSA_PUBKEY(bp, x, find_passphrase_Fct(cb), u); } EXPORT void my_PEM_read_bio_RSAPrivateKey(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_RSAPrivateKey(bp, x, find_passphrase_Fct(cb), u); } EXPORT void my_PEM_read_bio_RSA_PUBKEY(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_RSA_PUBKEY(bp, x, find_passphrase_Fct(cb), u); } EXPORT void my_PEM_read_bio_ECPrivateKey(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_ECPrivateKey(bp, x, find_passphrase_Fct(cb), u); } EXPORT void my_PEM_read_bio_EC_PUBKEY(x64emu_t* emu, void* bp, void* x, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->PEM_read_bio_EC_PUBKEY(bp, x, find_passphrase_Fct(cb), u); } EXPORT int my_PEM_write_bio_DSAPrivateKey(x64emu_t* emu, void* bp, void* x, void* e, void* str, int len, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->PEM_write_bio_DSAPrivateKey(bp, x, e, str, len, find_passphrase_Fct(cb), u); } EXPORT int my_PEM_write_bio_RSAPrivateKey(x64emu_t* emu, void* bp, void* x, void* e, void* str, int len, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->PEM_write_bio_RSAPrivateKey(bp, x, e, str, len, find_passphrase_Fct(cb), u); } EXPORT int my_PEM_write_bio_ECPrivateKey(x64emu_t* emu, void* bp, void* x, void* e, void* str, int len, void* cb, void* u) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->PEM_write_bio_ECPrivateKey(bp, x, e, str, len, find_passphrase_Fct(cb), u); } EXPORT void* my_sk_new(x64emu_t* emu, void* f) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - return my->sk_new(find_cmp_fnc_Fct(f)); } EXPORT void my_sk_pop_free(x64emu_t* emu, void* st, void* f) { + (void)emu; crypto_my_t *my = (crypto_my_t*)my_lib->priv.w.p2; - my->sk_pop_free(st, find_free_fnc_Fct(f)); } diff --git a/src/wrapped/wrappedcurl.c b/src/wrapped/wrappedcurl.c index 9bb7867d..e7955c1b 100755 --- a/src/wrapped/wrappedcurl.c +++ b/src/wrapped/wrappedcurl.c @@ -48,8 +48,8 @@ void* getCurlMy(library_t* lib) void freeCurlMy(void* lib) { + (void)lib; // curl_my_t *my = (curl_my_t *)lib; - } #undef SUPER @@ -489,6 +489,7 @@ static void* find_progress_Fct(void* fct) EXPORT uint32_t my_curl_easy_setopt(x64emu_t* emu, void* handle, uint32_t option, void* param) { + (void)emu; curl_my_t *my = (curl_my_t*)my_lib->priv.w.p2; switch(option) { @@ -559,4 +560,3 @@ EXPORT uint32_t my_curl_easy_setopt(x64emu_t* emu, void* handle, uint32_t option my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappeddbus.c b/src/wrapped/wrappeddbus.c index 3db5a8da..643d15a9 100755 --- a/src/wrapped/wrappeddbus.c +++ b/src/wrapped/wrappeddbus.c @@ -68,6 +68,7 @@ static void* getDBusMy(library_t* lib) static void freeDBusMy(void* lib) { + (void)lib; //dbus_my_t *my = (dbus_my_t *)lib; } @@ -398,6 +399,7 @@ static void* finddbus_internal_padFct(void* fct) EXPORT void my_dbus_timeout_set_data(x64emu_t* emu, void* e, void* p, void* f) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my->dbus_timeout_set_data(e, p, find_DBusFreeFunction_Fct(f)); } @@ -405,6 +407,7 @@ EXPORT void my_dbus_timeout_set_data(x64emu_t* emu, void* e, void* p, void* f) EXPORT int32_t my_dbus_connection_set_timeout_functions(x64emu_t* emu, void* c, void* a, void* r, void* t, void* d, void* f) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_connection_set_timeout_functions(c, @@ -416,18 +419,21 @@ EXPORT int32_t my_dbus_connection_set_timeout_functions(x64emu_t* emu, void* c, EXPORT int my_dbus_connection_add_filter(x64emu_t* emu, void* connection, void* fnc, void* data, void* fr) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_connection_add_filter(connection, find_DBusHandleMessageFunction_Fct(fnc), data, find_DBusFreeFunction_Fct(fr)); } EXPORT void my_dbus_connection_remove_filter(x64emu_t* emu, void* connection, void* fnc, void* data) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my->dbus_connection_remove_filter(connection, find_DBusHandleMessageFunction_Fct(fnc), data); } EXPORT int my_dbus_message_get_args_valist(x64emu_t* emu, void* message, void* e, int arg, x64_va_list_t b) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; CONVERT_VALIST(b); return my->dbus_message_get_args_valist(message, e, arg, VARARGS); @@ -435,6 +441,7 @@ EXPORT int my_dbus_message_get_args_valist(x64emu_t* emu, void* message, void* e /*EXPORT int my_dbus_message_get_args(x64emu_t* emu, void* message, void* e, int arg, uint64_t* V) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_message_get_args_valist(message, e, arg, V); @@ -442,6 +449,7 @@ EXPORT int my_dbus_message_get_args_valist(x64emu_t* emu, void* message, void* e EXPORT int my_dbus_message_set_data(x64emu_t* emu, void* message, int32_t slot, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_message_set_data(message, slot, data, find_DBusFreeFunction_Fct(free_func)); @@ -449,6 +457,7 @@ EXPORT int my_dbus_message_set_data(x64emu_t* emu, void* message, int32_t slot, EXPORT int my_dbus_pending_call_set_notify(x64emu_t* emu, void* pending, void* func, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_pending_call_set_notify(pending, findDBusPendingCallNotifyFunctionFct(func), data, find_DBusFreeFunction_Fct(free_func)); @@ -456,6 +465,7 @@ EXPORT int my_dbus_pending_call_set_notify(x64emu_t* emu, void* pending, void* f EXPORT int my_dbus_pending_call_set_data(x64emu_t* emu, void* pending, int32_t slot, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_pending_call_set_data(pending, slot, data, find_DBusFreeFunction_Fct(free_func)); @@ -463,6 +473,7 @@ EXPORT int my_dbus_pending_call_set_data(x64emu_t* emu, void* pending, int32_t s EXPORT void my_dbus_watch_set_data(x64emu_t* emu, void* watch, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my->dbus_watch_set_data(watch, data, find_DBusFreeFunction_Fct(free_func)); @@ -470,6 +481,7 @@ EXPORT void my_dbus_watch_set_data(x64emu_t* emu, void* watch, void* data, void* EXPORT void my_dbus_connection_set_dispatch_status_function(x64emu_t* emu, void* connection, void* dispatch, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my->dbus_connection_set_dispatch_status_function(connection, findDBusDispatchStatusFunctionFct(dispatch), data, find_DBusFreeFunction_Fct(free_func)); @@ -477,6 +489,7 @@ EXPORT void my_dbus_connection_set_dispatch_status_function(x64emu_t* emu, void* EXPORT int my_dbus_connection_set_watch_functions(x64emu_t* emu, void* connection, void* add, void* remove, void* toggled, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_connection_set_watch_functions(connection, findDBusAddWatchFunctionFct(add), findDBusRemoveWatchFunctionFct(remove), findDBusWatchToggledFunctionFct(toggled), data, find_DBusFreeFunction_Fct(free_func)); @@ -494,6 +507,7 @@ typedef struct my_DBusObjectPathVTable_s EXPORT int my_dbus_connection_try_register_object_path(x64emu_t* emu, void* connection, void* path, my_DBusObjectPathVTable_t* vtable, void* data, void* error) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my_DBusObjectPathVTable_t vt = {0}; @@ -511,6 +525,7 @@ EXPORT int my_dbus_connection_try_register_object_path(x64emu_t* emu, void* conn EXPORT int my_dbus_connection_set_data(x64emu_t* emu, void* connection, int slot, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; return my->dbus_connection_set_data(connection, slot, data, find_DBusFreeFunction_Fct(free_func)); @@ -518,6 +533,7 @@ EXPORT int my_dbus_connection_set_data(x64emu_t* emu, void* connection, int slot EXPORT void my_dbus_connection_set_wakeup_main_function(x64emu_t* emu, void* connection, void* wakeup, void* data, void* free_func) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my->dbus_connection_set_wakeup_main_function(connection, find_DBusWakeupMainFunction_Fct(wakeup), data, find_DBusFreeFunction_Fct(free_func)); @@ -525,6 +541,7 @@ EXPORT void my_dbus_connection_set_wakeup_main_function(x64emu_t* emu, void* con EXPORT int my_dbus_connection_try_register_fallback(x64emu_t* emu, void* connection, void* path, my_DBusObjectPathVTable_t* vtable, void* data, void* error) { + (void)emu; dbus_my_t *my = (dbus_my_t*)my_lib->priv.w.p2; my_DBusObjectPathVTable_t vt = {0}; @@ -552,4 +569,3 @@ EXPORT int my_dbus_connection_try_register_fallback(x64emu_t* emu, void* connect my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedfontconfig.c b/src/wrapped/wrappedfontconfig.c index 007d1bd5..5481fef7 100755 --- a/src/wrapped/wrappedfontconfig.c +++ b/src/wrapped/wrappedfontconfig.c @@ -34,6 +34,7 @@ void* getFontconfigMy(library_t* lib) { fontconfig_my_t* my = (fontconfig_my_t*)calloc(1, sizeof(fontconfig_my_t)); #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + (void)lib; // So many wrapping here SUPER() #undef GO return my; @@ -42,6 +43,7 @@ void* getFontconfigMy(library_t* lib) void freeFontconfigMy(void* lib) { + (void)lib; //fontconfig_my_t *my = (fontconfig_my_t *)lib; } @@ -53,4 +55,3 @@ void freeFontconfigMy(void* lib) free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedfreetype.c b/src/wrapped/wrappedfreetype.c index 25a25e47..f830e10b 100755 --- a/src/wrapped/wrappedfreetype.c +++ b/src/wrapped/wrappedfreetype.c @@ -83,6 +83,7 @@ void* getFreeTypeMy(library_t* lib) void freeFreeTypeMy(void* lib) { + (void)lib; //freetype_my_t *my = (freetype_my_t *)lib; } @@ -133,6 +134,7 @@ static void my_FT_Stream_CloseFunc(FT_StreamRec_t* stream) EXPORT int my_FT_Open_Face(x64emu_t* emu, void* library, FT_Open_Args_t* args, long face_index, void* aface) { + (void)emu; library_t* lib = GetLibInternal(freetypeName); freetype_my_t* my = (freetype_my_t*)lib->priv.w.p2; @@ -155,6 +157,7 @@ EXPORT int my_FT_Open_Face(x64emu_t* emu, void* library, FT_Open_Args_t* args, l EXPORT int my_FTC_Manager_New(x64emu_t* emu, void* l, uint32_t max_faces, uint32_t max_sizes, uintptr_t max_bytes, void* req, void* data, void* aman) { + (void)emu; library_t* lib = GetLibInternal(freetypeName); freetype_my_t* my = (freetype_my_t*)lib->priv.w.p2; diff --git a/src/wrapped/wrappedgnutls.c b/src/wrapped/wrappedgnutls.c index 287a1005..5ee86f8a 100755 --- a/src/wrapped/wrappedgnutls.c +++ b/src/wrapped/wrappedgnutls.c @@ -50,6 +50,7 @@ void* getGnutlsMy(library_t* lib) void freeGnutlsMy(void* lib) { + (void)lib; //gnutls_my_t *my = (gnutls_my_t *)lib; } @@ -114,21 +115,21 @@ static void* find_pullpush_Fct(void* fct) EXPORT void my_gnutls_global_set_log_function(x64emu_t* emu, void* f) { + (void)emu; gnutls_my_t *my = (gnutls_my_t*)my_lib->priv.w.p2; - my->gnutls_global_set_log_function(find_gnutls_log_Fct(f)); } EXPORT void my_gnutls_transport_set_pull_function(x64emu_t* emu, void* session, void* f) { + (void)emu; gnutls_my_t *my = (gnutls_my_t*)my_lib->priv.w.p2; - my->gnutls_transport_set_pull_function(session, find_pullpush_Fct(f)); } EXPORT void my_gnutls_transport_set_push_function(x64emu_t* emu, void* session, void* f) { + (void)emu; gnutls_my_t *my = (gnutls_my_t*)my_lib->priv.w.p2; - my->gnutls_transport_set_push_function(session, find_pullpush_Fct(f)); } @@ -142,4 +143,3 @@ EXPORT void my_gnutls_transport_set_push_function(x64emu_t* emu, void* session, free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlib_init.h b/src/wrapped/wrappedlib_init.h index 3f946286..a3a2049c 100755 --- a/src/wrapped/wrappedlib_init.h +++ b/src/wrapped/wrappedlib_init.h @@ -84,7 +84,9 @@ static const map_onedata_t MAPNAME(mydatamap)[] = { int FUNC(_init)(library_t* lib, box64context_t* box64) { -// Init first + (void)box64; + + // Init first free(lib->path); lib->path=NULL; #ifdef PRE_INIT PRE_INIT @@ -169,7 +171,7 @@ int FUNC(_init)(library_t* lib, box64context_t* box64) #ifdef CUSTOM_INIT CUSTOM_INIT #endif - + return 0; } @@ -192,10 +194,10 @@ int FUNC(_fini)(library_t* lib) return 1; } -int FUNC(_get)(library_t* lib, const char* name, uintptr_t *offs, uint32_t *sz) +int FUNC(_get)(library_t* lib, const char* name, uintptr_t *offs, uintptr_t *sz) { uintptr_t addr = 0; - uint32_t size = 0; + uintptr_t size = 0; #ifdef CUSTOM_FAIL void* symbol = NULL; #endif @@ -215,10 +217,10 @@ int FUNC(_get)(library_t* lib, const char* name, uintptr_t *offs, uint32_t *sz) return 1; } -int FUNC(_getnoweak)(library_t* lib, const char* name, uintptr_t *offs, uint32_t *sz) +int FUNC(_getnoweak)(library_t* lib, const char* name, uintptr_t *offs, uintptr_t *sz) { uintptr_t addr = 0; - uint32_t size = 0; + uintptr_t size = 0; #ifdef CUSTOM_FAIL void* symbol = NULL; #endif diff --git a/src/wrapped/wrappedlibasound.c b/src/wrapped/wrappedlibasound.c index acb5f3de..13885062 100755 --- a/src/wrapped/wrappedlibasound.c +++ b/src/wrapped/wrappedlibasound.c @@ -30,6 +30,7 @@ typedef int (*iFpppp_t) (void*, void*, void*, void*); EXPORT uintptr_t my_snd_lib_error = 0; static void default_error_handler(const char *file, int line, const char *function, int err, const char *fmt, va_list ap) { + (void)file; (void)line; (void)function; (void)err; vprintf(fmt, ap); } @@ -53,13 +54,14 @@ void* getAsoundMy(library_t* lib) #undef GO // setup custom error handler my_snd_lib_error = AddCheckBridge(my_context->system, vFpipipV, default_error_handler, 0, "ASoundCustomErrorHandler"); - //all done + // all done return my; } #undef SUPER void freeAsoundMy(void* lib) { + (void)lib; // asound_my_t *my = (asound_my_t *)lib; my_snd_lib_error = 0; // no removing of bridge } @@ -111,6 +113,7 @@ EXPORT int my_snd_async_add_pcm_handler(x64emu_t *emu, void *handler, void* pcm, static void* current_error_handler = NULL; static void dummy_error_handler(const char *file, int line, const char *function, int err, const char *fmt, ...) { + (void)function; (void)err; va_list ap; fprintf(ftrace, "Warning: this is a dummy snd_lib error handler\n"); @@ -123,6 +126,7 @@ static void dummy_error_handler(const char *file, int line, const char *function static void empty_error_handler(const char *file, int line, const char *function, int err, const char *fmt, ...) { + (void)file; (void)line; (void)function; (void)err; (void)fmt; // do nothing } @@ -133,7 +137,7 @@ EXPORT int my_snd_lib_error_set_handler(x64emu_t* emu, void* handler) void *error_handler; uint8_t *code = (uint8_t *)handler; if (code) { - if (code && ((code[0] == 0xC3) || ((code[0] == 0xF3) && (code[1] == 0xC3)))) { + if ((code[0] == 0xC3) || ((code[0] == 0xF3) && (code[1] == 0xC3))) { error_handler = &empty_error_handler; } else { error_handler = &dummy_error_handler; @@ -175,4 +179,3 @@ EXPORT void* my_snd_dlsym(x64emu_t* emu, void* handle, void* name, void* version free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 09b52edd..881d57ce 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -110,6 +110,7 @@ void* getLIBCMy(library_t* lib) void freeLIBCMy(void* lib) { + (void)lib; // empty for now } @@ -339,6 +340,7 @@ int32_t my___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * * EXPORT void my___libc_init_first(x64emu_t* emu, int argc, char* arg0, char** b) { // do nothing specific for now + (void)emu; (void)argc; (void)arg0; (void)b; return; } uintptr_t my_syscall(x64emu_t *emu); // implemented in x64syscall.c @@ -354,11 +356,13 @@ void EXPORT my___stack_chk_fail(x64emu_t* emu) } void EXPORT my___gmon_start__(x64emu_t *emu) { + (void)emu; printf_log(LOG_DEBUG, "__gmon_start__ called (dummy call)\n"); } -int EXPORT my___cxa_atexit(x64emu_t* emu, void* p, void* a, void* d) +int EXPORT my___cxa_atexit(x64emu_t* emu, void* p, void* a, void* dso_handle) { + (void)dso_handle; AddCleanup1Arg(emu, p, a); return 0; } @@ -516,13 +520,13 @@ int of_unconvert(int a) } #undef SUPER -EXPORT void* my__ZGTtnaX (size_t a) { printf("warning _ZGTtnaX called\n"); return NULL; } -EXPORT void my__ZGTtdlPv (void* a) { printf("warning _ZGTtdlPv called\n"); } -EXPORT uint8_t my__ITM_RU1(const uint8_t * a) { printf("warning _ITM_RU1 called\n"); return 0; } -EXPORT uint32_t my__ITM_RU4(const uint32_t * a) { printf("warning _ITM_RU4 called\n"); return 0; } -EXPORT uint64_t my__ITM_RU8(const uint64_t * a) { printf("warning _ITM_RU8 called\n"); return 0; } -EXPORT void my__ITM_memcpyRtWn(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n"); } -EXPORT void my__ITM_memcpyRnWt(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n"); } +EXPORT void* my__ZGTtnaX (size_t a) { (void)a; printf("warning _ZGTtnaX called\n"); return NULL; } +EXPORT void my__ZGTtdlPv (void* a) { (void)a; printf("warning _ZGTtdlPv called\n"); } +EXPORT uint8_t my__ITM_RU1(const uint8_t * a) { (void)a; printf("warning _ITM_RU1 called\n"); return 0; } +EXPORT uint32_t my__ITM_RU4(const uint32_t * a) { (void)a; printf("warning _ITM_RU4 called\n"); return 0; } +EXPORT uint64_t my__ITM_RU8(const uint64_t * a) { (void)a; printf("warning _ITM_RU8 called\n"); return 0; } +EXPORT void my__ITM_memcpyRtWn(void * a, const void * b, size_t c) { (void)a; (void)b; (void)c; printf("warning _ITM_memcpyRtWn called\n"); } +EXPORT void my__ITM_memcpyRnWt(void * a, const void * b, size_t c) { (void)a; (void)b; (void)c; printf("warning _ITM_memcpyRnWt called\n"); } EXPORT void my_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val); EXPORT void my__longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my_longjmp"))); @@ -540,18 +544,21 @@ EXPORT int my_printf(x64emu_t *emu, void* fmt, void* b) { } EXPORT int my___printf_chk(x64emu_t *emu, int chk, void* fmt, void* b) { + (void)chk; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2); PREPARE_VALIST; return vprintf((const char*)fmt, VARARGS); } EXPORT int my_vprintf(x64emu_t *emu, void* fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); return vprintf(fmt, VARARGS); } EXPORT int my___vprintf_chk(x64emu_t *emu, void* fmt, x64_va_list_t b) __attribute__((alias("my_vprintf"))); EXPORT int my_vfprintf(x64emu_t *emu, void* F, void* fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); return vfprintf(F, fmt, VARARGS); } @@ -564,6 +571,7 @@ EXPORT int my_fprintf(x64emu_t *emu, void* F, void* fmt, void* b) { return vfprintf(F, fmt, VARARGS); } EXPORT int my___fprintf_chk(x64emu_t *emu, void* F, int flag, void* fmt, void* b) { + (void)flag; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; return vfprintf(F, fmt, VARARGS); @@ -646,6 +654,7 @@ EXPORT int my_snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint64_t EXPORT int my___snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint64_t * b) __attribute__((alias("my_snprintf"))); EXPORT int my___snprintf_chk(x64emu_t* emu, void* buff, size_t s, int flags, size_t maxlen, void * fmt, uint64_t * b) { + (void)flags; (void)maxlen; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 5); PREPARE_VALIST; int r = vsnprintf(buff, s, fmt, VARARGS); @@ -658,6 +667,7 @@ EXPORT int my_sprintf(x64emu_t* emu, void* buff, void * fmt, void * b) { return vsprintf(buff, (const char*)fmt, VARARGS); } EXPORT int my___sprintf_chk(x64emu_t* emu, void* buff, int flag, size_t l, void * fmt, void * b) { + (void)flag; (void)l; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 4); PREPARE_VALIST; return vsprintf(buff, (const char*)fmt, VARARGS); @@ -678,31 +688,29 @@ EXPORT int my___asprintf(x64emu_t* emu, void** buff, void * fmt, void * b, va_li #endif EXPORT int my_vasprintf(x64emu_t* emu, char** buff, void* fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); - return vasprintf(buff, fmt, VARARGS); } EXPORT int my_vsprintf(x64emu_t* emu, void* buff, void * fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); - return vsprintf(buff, fmt, VARARGS); } EXPORT int my___vsprintf_chk(x64emu_t* emu, void* buff, void * fmt, x64_va_list_t b) __attribute__((alias("my_vsprintf"))); EXPORT int my_vfscanf(x64emu_t* emu, void* stream, void* fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); - return vfscanf(stream, fmt, VARARGS); } - - EXPORT int my_vsscanf(x64emu_t* emu, void* stream, void* fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); - return vsscanf(stream, fmt, VARARGS); } @@ -738,6 +746,7 @@ EXPORT int my___isoc99_sscanf(x64emu_t* emu, void* stream, void* fmt, uint64_t* } EXPORT int my_vsnprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); int r = vsnprintf(buff, s, fmt, VARARGS); return r; @@ -763,6 +772,7 @@ EXPORT int my_vasprintf(x64emu_t* emu, void* strp, void* fmt, void* b, va_list V #endif EXPORT int my___vasprintf_chk(x64emu_t* emu, void* buff, int flags, void* fmt, x64_va_list_t b) { + (void)emu; (void)flags; CONVERT_VALIST(b); int r = vasprintf(buff, fmt, VARARGS); return r; @@ -781,6 +791,7 @@ EXPORT int my___asprintf_chk(x64emu_t* emu, void* result_ptr, int flags, void* f } #endif EXPORT int my_vswprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b); int r = vswprintf(buff, s, fmt, VARARGS); return r; @@ -828,6 +839,7 @@ EXPORT void my_syslog(x64emu_t* emu, int priority, const char* fmt, uint64_t* b) } EXPORT void my___syslog_chk(x64emu_t* emu, int priority, int flags, const char* fmt, uint64_t* b) { + (void)flags; myStackAlign(emu, fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; return vsyslog(priority, fmt, VARARGS); @@ -835,6 +847,8 @@ EXPORT void my___syslog_chk(x64emu_t* emu, int priority, int flags, const char* EXPORT int my___swprintf_chk(x64emu_t* emu, void* s, size_t n, int32_t flag, size_t slen, void* fmt, uint64_t* b) { + (void)flag; + (void)slen; myStackAlignW(emu, (const char*)fmt, b, emu->scratch, R_EAX, 5); PREPARE_VALIST; return vswprintf(s, n, (const wchar_t*)fmt, VARARGS); @@ -856,15 +870,17 @@ EXPORT void my__ITM_addUserCommitAction(x64emu_t* emu, void* cb, uint32_t b, voi my->_ITM_addUserCommitAction(libc1ArgCallback, b, cbemu); // should keep track of cbemu to remove at some point... #else + (void)emu; (void)cb; (void)b; (void)c; printf("warning _ITM_addUserCommitAction called\n"); #endif } -EXPORT void my__ITM_registerTMCloneTable(x64emu_t* emu, void* p, uint32_t s) {} -EXPORT void my__ITM_deregisterTMCloneTable(x64emu_t* emu, void* p) {} +EXPORT void my__ITM_registerTMCloneTable(x64emu_t* emu, void* p, uint32_t s) { (void)emu; (void)p; (void)s; } +EXPORT void my__ITM_deregisterTMCloneTable(x64emu_t* emu, void* p) { (void)emu; (void)p; } EXPORT int my___fxstat(x64emu_t *emu, int vers, int fd, void* buf) { + (void)emu; (void)vers; struct stat64 st; int r = fstat64(fd, &st); UnalignStat64(&st, buf); @@ -873,6 +889,7 @@ EXPORT int my___fxstat(x64emu_t *emu, int vers, int fd, void* buf) EXPORT int my___fxstat64(x64emu_t *emu, int vers, int fd, void* buf) { + (void)emu; (void)vers; struct stat64 st; int r = fstat64(fd, &st); //int r = syscall(__NR_stat64, fd, &st); @@ -882,6 +899,7 @@ EXPORT int my___fxstat64(x64emu_t *emu, int vers, int fd, void* buf) EXPORT int my___xstat(x64emu_t* emu, int v, void* path, void* buf) { + (void)emu; (void)v; struct stat64 st; int r = stat64((const char*)path, &st); UnalignStat64(&st, buf); @@ -890,6 +908,7 @@ EXPORT int my___xstat(x64emu_t* emu, int v, void* path, void* buf) EXPORT int my___xstat64(x64emu_t* emu, int v, void* path, void* buf) { + (void)emu; (void)v; struct stat64 st; int r = stat64((const char*)path, &st); UnalignStat64(&st, buf); @@ -898,6 +917,7 @@ EXPORT int my___xstat64(x64emu_t* emu, int v, void* path, void* buf) EXPORT int my___lxstat(x64emu_t* emu, int v, void* name, void* buf) { + (void)emu; (void)v; struct stat64 st; int r = lstat64((const char*)name, &st); UnalignStat64(&st, buf); @@ -906,6 +926,7 @@ EXPORT int my___lxstat(x64emu_t* emu, int v, void* name, void* buf) EXPORT int my___lxstat64(x64emu_t* emu, int v, void* name, void* buf) { + (void)emu; (void)v; struct stat64 st; int r = lstat64((const char*)name, &st); UnalignStat64(&st, buf); @@ -914,6 +935,7 @@ EXPORT int my___lxstat64(x64emu_t* emu, int v, void* name, void* buf) EXPORT int my___fxstatat(x64emu_t* emu, int v, int d, void* path, void* buf, int flags) { + (void)emu; (void)v; struct stat64 st; int r = fstatat64(d, path, &st, flags); UnalignStat64(&st, buf); @@ -922,6 +944,7 @@ EXPORT int my___fxstatat(x64emu_t* emu, int v, int d, void* path, void* buf, int EXPORT int my___fxstatat64(x64emu_t* emu, int v, int d, void* path, void* buf, int flags) { + (void)emu; (void)v; struct stat64 st; int r = fstatat64(d, path, &st, flags); UnalignStat64(&st, buf); @@ -979,20 +1002,24 @@ EXPORT void my_qsort_r(x64emu_t* emu, void* base, size_t nmemb, size_t size, voi } EXPORT void* my_bsearch(x64emu_t* emu, void* key, void* base, size_t nmemb, size_t size, void* fnc) { + (void)emu; return bsearch(key, base, nmemb, size, findcompareFct(fnc)); } EXPORT void* my_lsearch(x64emu_t* emu, void* key, void* base, size_t* nmemb, size_t size, void* fnc) { + (void)emu; return lsearch(key, base, nmemb, size, findcompareFct(fnc)); } EXPORT void* my_lfind(x64emu_t* emu, void* key, void* base, size_t* nmemb, size_t size, void* fnc) { + (void)emu; return lfind(key, base, nmemb, size, findcompareFct(fnc)); } EXPORT void* my_fts_open(x64emu_t* emu, void* path, int options, void* c) { + (void)emu; return fts_open(path, options, findcompareFct(c)); } #if 0 @@ -1247,13 +1274,13 @@ EXPORT int32_t my_open(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mo } EXPORT int32_t my___open(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mode) __attribute__((alias("my_open"))); -#ifdef DYNAREC +//#ifdef DYNAREC //static int hasDBFromAddress(uintptr_t addr) //{ // int idx = (addr>>DYNAMAP_SHIFT); // return getDB(idx)?1:0; //} -#endif +//#endif //EXPORT int32_t my_read(int fd, void* buf, uint32_t count) //{ @@ -1440,24 +1467,28 @@ EXPORT int32_t my_epoll_wait(x64emu_t* emu, int32_t epfd, void* events, int32_t #endif EXPORT int32_t my_glob64(x64emu_t *emu, void* pat, int32_t flags, void* errfnc, void* pglob) { + (void)emu; return glob64(pat, flags, findgloberrFct(errfnc), pglob); } EXPORT int32_t my_glob(x64emu_t *emu, void* pat, int32_t flags, void* errfnc, void* pglob) __attribute__((alias("my_glob64"))); EXPORT int my_scandir64(x64emu_t *emu, void* dir, void* namelist, void* sel, void* comp) { + (void)emu; return scandir64(dir, namelist, findfilter64Fct(sel), findcompare64Fct(comp)); } EXPORT int my_scandir(x64emu_t *emu, void* dir, void* namelist, void* sel, void* comp) __attribute__((alias("my_scandir64"))); EXPORT int my_ftw64(x64emu_t* emu, void* filename, void* func, int descriptors) { + (void)emu; return ftw64(filename, findftw64Fct(func), descriptors); } EXPORT int my_ftw(x64emu_t* emu, void* filename, void* func, int descriptors) __attribute__((alias("my_ftw64"))); EXPORT int32_t my_nftw64(x64emu_t* emu, void* pathname, void* B, int32_t nopenfd, int32_t flags) { + (void)emu; return nftw64(pathname, findnftw64Fct(B), nopenfd, flags); } @@ -1604,12 +1635,14 @@ EXPORT void my__Jv_RegisterClasses() {} EXPORT int32_t my___cxa_thread_atexit_impl(x64emu_t* emu, void* dtor, void* obj, void* dso) { + (void)emu; printf_log(LOG_INFO, "Warning, call to __cxa_thread_atexit_impl(%p, %p, %p) ignored\n", dtor, obj, dso); return 0; } EXPORT int32_t my___register_atfork(x64emu_t *emu, void* prepare, void* parent, void* child, void* handle) { + (void)emu; // this is partly incorrect, because the emulated funcionts should be executed by actual fork and not by my_atfork... if(my_context->atfork_sz==my_context->atfork_cap) { my_context->atfork_cap += 4; @@ -1642,6 +1675,7 @@ EXPORT int32_t my___poll_chk(void* a, uint32_t b, int c, int l) #endif EXPORT int32_t my_fcntl64(x64emu_t* emu, int32_t a, int32_t b, void* c) { + (void)emu; if(b==F_SETFL) c = (void*)(uintptr_t)of_convert((intptr_t)c); #if 0 @@ -1663,6 +1697,7 @@ EXPORT int32_t my_fcntl64(x64emu_t* emu, int32_t a, int32_t b, void* c) EXPORT int32_t my_fcntl(x64emu_t* emu, int32_t a, int32_t b, void* c) { + (void)emu; if(b==F_SETFL && (intptr_t)c==0xFFFFF7FF) { // special case for ~O_NONBLOCK... int flags = fcntl(a, F_GETFL); @@ -1790,9 +1825,11 @@ void stSetup(box64context_t* context) EXPORT void my___register_frame_info(void* a, void* b) { // nothing + (void)a; (void)b; } EXPORT void* my___deregister_frame_info(void* a) { + (void)a; return NULL; } @@ -1854,6 +1891,7 @@ EXPORT int32_t my_setjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p EXPORT void my___explicit_bzero_chk(x64emu_t* emu, void* dst, uint32_t len, uint32_t dstlen) { + (void)emu; (void)dstlen; memset(dst, 0, len); } @@ -1868,6 +1906,7 @@ EXPORT void* my_realpath(x64emu_t* emu, void* path, void* resolved_path) EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, int64_t offset) { + (void)emu; if(prot&PROT_WRITE) prot|=PROT_READ; // PROT_READ is implicit with PROT_WRITE on i386 if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "mmap64(%p, %lu, 0x%x, 0x%x, %d, %ld) =>", addr, length, prot, flags, fd, offset);} @@ -1905,6 +1944,7 @@ EXPORT void* my_mmap(x64emu_t* emu, void *addr, unsigned long length, int prot, EXPORT void* my_mremap(x64emu_t* emu, void* old_addr, size_t old_size, size_t new_size, int flags, void* new_addr) { + (void)emu; dynarec_log(LOG_DEBUG, "mremap(%p, %lu, %lu, %d, %p)=>", old_addr, old_size, new_size, flags, new_addr); void* ret = mremap(old_addr, old_size, new_size, flags, new_addr); dynarec_log(LOG_DEBUG, "%p\n", ret); @@ -1954,6 +1994,7 @@ EXPORT void* my_mremap(x64emu_t* emu, void* old_addr, size_t old_size, size_t ne EXPORT int my_munmap(x64emu_t* emu, void* addr, unsigned long length) { + (void)emu; dynarec_log(LOG_DEBUG, "munmap(%p, %lu)\n", addr, length); #ifdef DYNAREC if(box64_dynarec) { @@ -1968,9 +2009,10 @@ EXPORT int my_munmap(x64emu_t* emu, void* addr, unsigned long length) EXPORT int my_mprotect(x64emu_t* emu, void *addr, unsigned long len, int prot) { + (void)emu; dynarec_log(LOG_DEBUG, "mprotect(%p, %lu, 0x%x)\n", addr, len, prot); if(prot&PROT_WRITE) - prot|=PROT_READ; // PROT_READ is implicit with PROT_WRITE on i386 + prot|=PROT_READ; // PROT_READ is implicit with PROT_WRITE on x86_64 int ret = mprotect(addr, len, prot); #ifdef DYNAREC if(box64_dynarec) { @@ -2214,11 +2256,12 @@ EXPORT int my_backtrace(x64emu_t* emu, void** buffer, int size) EXPORT char** my_backtrace_symbols(x64emu_t* emu, uintptr_t* buffer, int size) { + (void)emu; char** ret = (char**)calloc(1, size*sizeof(char*) + size*100); // capping each strings to 100 chars char* s = (char*)(ret+size*sizeof(char*)); for (int i=0; i<size; ++i) { uintptr_t start = 0; - uint32_t sz = 0; + uint64_t sz = 0; const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, buffer[i]), (void*)buffer[i], &start, &sz); if(symbname && buffer[i]>=start && (buffer[i]<(start+sz) || !sz)) snprintf(s, 100, "%s+%ld [%p]\n", symbname, buffer[i] - start, (void*)buffer[i]); @@ -2231,10 +2274,11 @@ EXPORT char** my_backtrace_symbols(x64emu_t* emu, uintptr_t* buffer, int size) EXPORT void my_backtrace_symbols_fd(x64emu_t* emu, uintptr_t* buffer, int size, int fd) { + (void)emu; char s[100]; for (int i=0; i<size; ++i) { uintptr_t start = 0; - uint32_t sz = 0; + uint64_t sz = 0; const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, buffer[i]), (void*)buffer[i], &start, &sz); if(symbname && buffer[i]>=start && (buffer[i]<(start+sz) || !sz)) snprintf(s, 100, "%s+%ld [%p]\n", symbname, buffer[i] - start, (void*)buffer[i]); diff --git a/src/wrapped/wrappedlibdl.c b/src/wrapped/wrappedlibdl.c index 91732a61..0d9aa8cb 100755 --- a/src/wrapped/wrappedlibdl.c +++ b/src/wrapped/wrappedlibdl.c @@ -185,6 +185,7 @@ int my_dlsym_lib(library_t* lib, const char* rsymbol, uintptr_t *start, uintptr_ } void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) { + (void)emu; dlprivate_t *dl = emu->context->dlprivate; uintptr_t start = 0, end = 0; char* rsymbol = (char*)symbol; @@ -228,7 +229,8 @@ void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) } size_t nlib = (size_t)handle; --nlib; - if(nlib<0 || nlib>=dl->lib_sz) { + // size_t is unsigned + if(nlib>=dl->lib_sz) { if(!dl->last_error) dl->last_error = malloc(129); snprintf(dl->last_error, 129, "Bad handle %p)\n", handle); @@ -295,6 +297,7 @@ void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) } int my_dlclose(x64emu_t* emu, void *handle) { + (void)emu; if(dlsym_error || box64_log>=LOG_DEBUG) { printf_log(LOG_NONE, "Call to dlclose(%p)\n", handle); } @@ -302,7 +305,8 @@ int my_dlclose(x64emu_t* emu, void *handle) CLEARERR size_t nlib = (size_t)handle; --nlib; - if(nlib<0 || nlib>=dl->lib_sz) { + // size_t is unsigned + if(nlib>=dl->lib_sz) { if(!dl->last_error) dl->last_error = malloc(129); snprintf(dl->last_error, 129, "Bad handle %p)\n", handle); @@ -368,6 +372,7 @@ typedef struct link_map_s { int my_dlinfo(x64emu_t* emu, void* handle, int request, void* info) { + (void)emu; if(dlsym_error || box64_log>=LOG_DEBUG) { printf_log(LOG_NONE, "Call to dlinfo(%p, %d, %p)\n", handle, request, info); } @@ -375,7 +380,8 @@ int my_dlinfo(x64emu_t* emu, void* handle, int request, void* info) CLEARERR size_t nlib = (size_t)handle; --nlib; - if(nlib<0 || nlib>=dl->lib_sz) { + // size_t is unsigned + if(nlib>=dl->lib_sz) { if(!dl->last_error) dl->last_error = malloc(129); snprintf(dl->last_error, 129, "Bad handle %p)\n", handle); diff --git a/src/wrapped/wrappedlibglu.c b/src/wrapped/wrappedlibglu.c index be9a6023..afab9a21 100755 --- a/src/wrapped/wrappedlibglu.c +++ b/src/wrapped/wrappedlibglu.c @@ -45,6 +45,7 @@ void* getGLUMy(library_t* lib) void freeGLUMy(void* lib) { + (void)lib; //libglu_my_t *my = (libglu_my_t *)lib; } #undef SUPER @@ -136,11 +137,13 @@ static void* findglu_callback5Fct(void* fct) #define GLU_TESS_COMBINE_DATA 100111 void EXPORT my_gluQuadricCallback(x64emu_t* emu, void* a, int32_t b, void* cb) { + (void)emu; libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2; my->gluQuadricCallback(a, b, findglu_callbackFct(cb)); } void EXPORT my_gluTessCallback(x64emu_t* emu, void* a, int32_t b, void* cb) { + (void)emu; libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2; if(b==GLU_TESS_COMBINE) my->gluTessCallback(a, b, findglu_callback4Fct(cb)); @@ -151,6 +154,7 @@ void EXPORT my_gluTessCallback(x64emu_t* emu, void* a, int32_t b, void* cb) } void EXPORT my_gluNurbsCallback(x64emu_t* emu, void* a, int32_t b, void* cb) { + (void)emu; libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2; my->gluNurbsCallback(a, b, findglu_callbackFct(cb)); } diff --git a/src/wrapped/wrappedlibpthread.c b/src/wrapped/wrappedlibpthread.c index d9b81d5b..d29218ed 100755 --- a/src/wrapped/wrappedlibpthread.c +++ b/src/wrapped/wrappedlibpthread.c @@ -61,6 +61,7 @@ const char* libpthreadName = "libpthread.so.0"; EXPORT int32_t my_pthread_atfork(x64emu_t *emu, void* prepare, void* parent, void* child) { + (void)emu; // this is partly incorrect, because the emulated functions should be executed by actual fork and not by my_atfork... if(my_context->atfork_sz==my_context->atfork_cap) { my_context->atfork_cap += 4; @@ -82,4 +83,3 @@ EXPORT void my___pthread_initialize() } #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibrt.c b/src/wrapped/wrappedlibrt.c index a6877c58..29fa375c 100755 --- a/src/wrapped/wrappedlibrt.c +++ b/src/wrapped/wrappedlibrt.c @@ -62,6 +62,7 @@ static void* findsigev_notifyFct(void* fct) EXPORT int my_timer_create(x64emu_t* emu, uint32_t clockid, void* sevp, timer_t* timerid) { + (void)emu; struct sigevent sevent; memcpy(&sevent, sevp, sizeof(sevent)); diff --git a/src/wrapped/wrappedlibsm.c b/src/wrapped/wrappedlibsm.c index 75f08e98..06891111 100755 --- a/src/wrapped/wrappedlibsm.c +++ b/src/wrapped/wrappedlibsm.c @@ -49,6 +49,7 @@ void* getSMMy(library_t* lib) void freeSMMy(void* lib) { + (void)lib; //libsm_my_t *my = (libsm_my_t *)lib; } @@ -105,6 +106,7 @@ static void my_save_complete(void* smcConn, void* clientData) EXPORT void* my_SmcOpenConnection(x64emu_t* emu, void* networkIdsList, void* context, int major, int minor, unsigned long mask, my_SmcCallbacks_t* cb, void* previousId, void* clientIdRet, int errorLength, void* errorRet) { + (void)emu; libsm_my_t* my = (libsm_my_t*)GetLibInternal(libsmName)->priv.w.p2; my_SmcCallbacks_t nat = {0}; #define GO(A, B) if(mask&A) {my_##B##_fct = (uintptr_t)cb->B.callback; nat.B.callback = my_##B; nat.B.client_data=cb->B.client_data;} @@ -152,15 +154,15 @@ static void* findRequestFct(void* fct) EXPORT int my_SmcInteractRequest(x64emu_t* emu, void* smcConn, int f, void* cb, void* data) { + (void)emu; libsm_my_t* my = (libsm_my_t*)GetLibInternal(libsmName)->priv.w.p2; - return my->SmcInteractRequest(smcConn, f, findRequestFct(cb), data); } EXPORT int my_SmcRequestSaveYourselfPhase2(x64emu_t* emu, void* smcConn, void* cb, void* data) { + (void)emu; libsm_my_t* my = (libsm_my_t*)GetLibInternal(libsmName)->priv.w.p2; - return my->SmcRequestSaveYourselfPhase2(smcConn, findRequestFct(cb), data); } @@ -172,4 +174,3 @@ EXPORT int my_SmcRequestSaveYourselfPhase2(x64emu_t* emu, void* smcConn, void* c free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibssl.c b/src/wrapped/wrappedlibssl.c index 8bb38d76..9d3c9b5d 100755 --- a/src/wrapped/wrappedlibssl.c +++ b/src/wrapped/wrappedlibssl.c @@ -59,6 +59,7 @@ void* getSllMy(library_t* lib) void freeSllMy(void* lib) { + (void)lib; //libssl_my_t *my = (libssl_my_t *)lib; } @@ -267,57 +268,57 @@ static void* find_proto_select_Fct(void* fct) EXPORT void my_SSL_CTX_set_default_passwd_cb(x64emu_t* emu, void* ctx, void* cb) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_CTX_set_default_passwd_cb(ctx, find_pem_passwd_cb_Fct(cb)); } EXPORT long my_SSL_CTX_callback_ctrl(x64emu_t* emu, void* ctx, int cmd, void* f) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - return my->SSL_CTX_callback_ctrl(ctx, cmd, find_anonymous_Fct(f)); } EXPORT long my_SSL_callback_ctrl(x64emu_t* emu, void* ctx, int cmd, void* f) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - return my->SSL_callback_ctrl(ctx, cmd, find_anonymous_Fct(f)); } EXPORT void my_SSL_CTX_set_verify(x64emu_t* emu, void* ctx, int mode, void* f) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_CTX_set_verify(ctx, mode, find_verify_Fct(f)); } EXPORT void my_SSL_set_verify(x64emu_t* emu, void* ctx, int mode, void* f) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_set_verify(ctx, mode, find_verify_Fct(f)); } EXPORT void my_SSL_get_ex_new_index(x64emu_t* emu, long argl, void* argp, void* new_func, void* dup_func, void* free_func) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_get_ex_new_index(argl, argp, find_ex_new_Fct(new_func), find_ex_dup_Fct(dup_func), find_ex_free_Fct(free_func)); } EXPORT void my_SSL_set_psk_client_callback(x64emu_t* emu, void* ctx, void* cb) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_set_psk_client_callback(ctx, find_client_cb_Fct(cb)); } EXPORT void my_SSL_CTX_set_next_proto_select_cb(x64emu_t* emu, void* ctx, void* cb, void* arg) { + (void)emu; libssl_my_t* my = (libssl_my_t*)my_lib->priv.w.p2; - my->SSL_CTX_set_next_proto_select_cb(ctx, find_proto_select_Fct(cb), arg); } diff --git a/src/wrapped/wrappedlibvorbis.c b/src/wrapped/wrappedlibvorbis.c index ebe7ac68..c433be2b 100755 --- a/src/wrapped/wrappedlibvorbis.c +++ b/src/wrapped/wrappedlibvorbis.c @@ -29,12 +29,14 @@ void* getVorbisMy(library_t* lib) { vorbis_my_t* my = (vorbis_my_t*)calloc(1, sizeof(vorbis_my_t)); #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + (void)lib; // So many wrapped functions here too #undef GO return my; } void freeVorbisMy(void* lib) { + (void)lib; //vorbis_my_t *my = (vorbis_my_t *)lib; } @@ -48,4 +50,3 @@ void freeVorbisMy(void* lib) lib->context->vorbis = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibx11.c b/src/wrapped/wrappedlibx11.c index 1c6ca8f3..e0a8d43f 100755 --- a/src/wrapped/wrappedlibx11.c +++ b/src/wrapped/wrappedlibx11.c @@ -155,6 +155,7 @@ void* getX11My(library_t* lib) void freeX11My(void* lib) { + (void)lib; // x11_my_t *my = (x11_my_t *)lib; } #undef SUPER @@ -617,6 +618,7 @@ void BridgeImageFunc(x64emu_t *emu, XImage *img) void UnbridgeImageFunc(x64emu_t *emu, XImage *img) { + (void)emu; #define GO(A, W) \ fnc = GetNativeFnc((uintptr_t)img->f.A); \ if(fnc) \ diff --git a/src/wrapped/wrappedlibxext.c b/src/wrapped/wrappedlibxext.c index ab73af17..63182f2f 100755 --- a/src/wrapped/wrappedlibxext.c +++ b/src/wrapped/wrappedlibxext.c @@ -71,6 +71,7 @@ void* getXextMy(library_t* lib) void freeXextMy(void* lib) { + (void)lib; //xext_my_t *my = (xext_my_t *)lib; } @@ -155,6 +156,7 @@ EXPORT int32_t my_XShmGetImage(x64emu_t* emu, void* disp, void* drawable, void* EXPORT void* my_XSetExtensionErrorHandler(x64emu_t* emu, void* handler) { + (void)emu; xext_my_t *my = (xext_my_t*)my_lib->priv.w.p2; return reverse_exterrorhandleFct(my->XSetExtensionErrorHandler(find_exterrorhandle_Fct(handler))); } @@ -268,4 +270,3 @@ EXPORT int32_t my_XextAddDisplay(x64emu_t* emu, void* extinfo, void* dpy, void* my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibxt.c b/src/wrapped/wrappedlibxt.c index 8b74258c..a0802a31 100755 --- a/src/wrapped/wrappedlibxt.c +++ b/src/wrapped/wrappedlibxt.c @@ -44,6 +44,7 @@ void* getXtMy(library_t* lib) void freeXtMy(void* lib) { + (void)lib; //libxt_my_t *my = (libxt_my_t *)lib; } @@ -82,6 +83,7 @@ static void* findEventFct(void* fct) EXPORT void my_XtAddEventHandler(x64emu_t* emu, void* w, uint32_t mask, int32_t maskable, void* cb, void* data) { + (void)emu; void* fct = findEventFct(cb); library_t* lib = GetLibInternal(libxtName); libxt_my_t* my = (libxt_my_t*)lib->priv.w.p2; @@ -101,4 +103,3 @@ EXPORT void my_XtAddEventHandler(x64emu_t* emu, void* w, uint32_t mask, int32_t free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibxtst.c b/src/wrapped/wrappedlibxtst.c index 4fae5d30..3c1ed488 100755 --- a/src/wrapped/wrappedlibxtst.c +++ b/src/wrapped/wrappedlibxtst.c @@ -45,6 +45,7 @@ void* getXtstMy(library_t* lib) void freeXtstMy(void* lib) { + (void)lib; //libxtst_my_t *my = (libxtst_my_t *)lib; } @@ -80,6 +81,7 @@ static void* find_XRecordInterceptProc_Fct(void* fct) EXPORT int my_XRecordEnableContextAsync(x64emu_t* emu, void* display, void* context, void* cb, void* closure) { + (void)emu; library_t* lib = GetLibInternal(libxtstName); libxtst_my_t* my = (libxtst_my_t*)lib->priv.w.p2; return my->XRecordEnableContextAsync(display, context, find_XRecordInterceptProc_Fct(cb), closure); @@ -87,6 +89,7 @@ EXPORT int my_XRecordEnableContextAsync(x64emu_t* emu, void* display, void* cont EXPORT int my_XRecordEnableContext(x64emu_t* emu, void* display, void* context, void* cb, void* closure) { + (void)emu; library_t* lib = GetLibInternal(libxtstName); libxtst_my_t* my = (libxtst_my_t*)lib->priv.w.p2; return my->XRecordEnableContext(display, context, find_XRecordInterceptProc_Fct(cb), closure); @@ -104,4 +107,3 @@ EXPORT int my_XRecordEnableContext(x64emu_t* emu, void* display, void* context, free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedlibz.c b/src/wrapped/wrappedlibz.c index 9a1cd6f3..81756501 100755 --- a/src/wrapped/wrappedlibz.c +++ b/src/wrapped/wrappedlibz.c @@ -40,6 +40,7 @@ void* getZMy(library_t* lib) void freeZMy(void* lib) { + (void)lib; //libz_my_t *my = (libz_my_t *)lib; } @@ -115,6 +116,7 @@ typedef struct z_stream_s { static void wrapper_stream_z(x64emu_t* emu, void* str) { + (void)emu; z_stream *stream = (z_stream*)str; stream->zalloc = find_alloc_Fct(stream->zalloc); stream->zfree = find_free_Fct(stream->zfree); diff --git a/src/wrapped/wrappedlzma.c b/src/wrapped/wrappedlzma.c index 8bfb5707..72be8f66 100755 --- a/src/wrapped/wrappedlzma.c +++ b/src/wrapped/wrappedlzma.c @@ -36,6 +36,7 @@ void* getLzmaMy(library_t* lib) { lzma_my_t* my = (lzma_my_t*)calloc(1, sizeof(lzma_my_t)); #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + (void)lib; // So many wrapped functions here SUPER() #undef GO return my; @@ -44,6 +45,7 @@ void* getLzmaMy(library_t* lib) void freeLzmaMy(void* lib) { + (void)lib; //lzma_my_t *my = (lzma_my_t *)lib; } @@ -57,4 +59,3 @@ void freeLzmaMy(void* lib) my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedopenal.c b/src/wrapped/wrappedopenal.c index 27b1af20..6aa73f2f 100755 --- a/src/wrapped/wrappedopenal.c +++ b/src/wrapped/wrappedopenal.c @@ -46,6 +46,7 @@ void* getOpenALMy(library_t* lib) void freeOpenALMy(void* lib) { + (void)lib; //openal_my_t *my = (openal_my_t *)lib; } #define SUPER() \ @@ -214,13 +215,14 @@ EXPORT void* my_alcGetProcAddress(x64emu_t* emu, void* device, void* name) EXPORT void my_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb) { + (void)emu; openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2; my->alRequestFoldbackStart(mode, count, length, mem, find_Request_Fct(cb)); } EXPORT void my_alRequestFoldbackStop(x64emu_t* emu) { + (void)emu; openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2; my->alRequestFoldbackStop(); } - diff --git a/src/wrapped/wrappedpango.c b/src/wrapped/wrappedpango.c index c966d366..0e6569c9 100755 --- a/src/wrapped/wrappedpango.c +++ b/src/wrapped/wrappedpango.c @@ -45,6 +45,7 @@ void* getPangoMy(library_t* lib) void freePangoMy(void* lib) { + (void)lib; //pango_my_t *my = (pango_my_t *)lib; } @@ -112,8 +113,8 @@ static void* find_PangoAttrClass_Fct(my_PangoAttrClass_t* klass) EXPORT void my_pango_attribute_init(x64emu_t* emu, void* attr, my_PangoAttrClass_t* klass) { + (void)emu; pango_my_t* my = (pango_my_t*)my_lib->priv.w.p2; - my->pango_attribute_init(attr, find_PangoAttrClass_Fct(klass)); } diff --git a/src/wrapped/wrappedpulse.c b/src/wrapped/wrappedpulse.c index 81fb38c7..f0c9a14a 100755 --- a/src/wrapped/wrappedpulse.c +++ b/src/wrapped/wrappedpulse.c @@ -159,8 +159,8 @@ void* getPulseMy(library_t* lib) void freePulseMy(void* lib) { + (void)lib; //pulse_my_t *my = (pulse_my_t *)lib; - } // TODO: change that static for a map ptr2ptr? @@ -1508,4 +1508,3 @@ EXPORT void my_pa_log_level_meta(x64emu_t* emu, int level, void* file, int line, free(lib->priv.w.p2); #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedsdl1.c b/src/wrapped/wrappedsdl1.c index 8c1070ff..34d41708 100755 --- a/src/wrapped/wrappedsdl1.c +++ b/src/wrapped/wrappedsdl1.c @@ -80,6 +80,7 @@ void* getSDL1My(library_t* lib) void freeSDL1My(void* lib) { + (void)lib; //sdl1_my_t *my = (sdl1_my_t *)lib; } diff --git a/src/wrapped/wrappedsdl1mixer.c b/src/wrapped/wrappedsdl1mixer.c index b7933ecb..760f0f05 100755 --- a/src/wrapped/wrappedsdl1mixer.c +++ b/src/wrapped/wrappedsdl1mixer.c @@ -182,6 +182,7 @@ static void* find_MusicFinished_Fct(void* fct) static void freeSDL1MixerMy(library_t* lib) { + (void)lib; //sdl1mixer_my_t *my = lib->priv.w.p2; } @@ -261,4 +262,3 @@ const char* sdl1mixerName = "libSDL_mixer-1.2.so.0"; ((box64context_t*)(lib->context))->sdl1mixerlib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c index 0c021103..5771d27c 100755 --- a/src/wrapped/wrappedsdl2.c +++ b/src/wrapped/wrappedsdl2.c @@ -99,7 +99,8 @@ void* getSDL2My(library_t* lib) void freeSDL2My(void* lib) { - /*sdl2_my_t *my = (sdl2_my_t *)lib;*/ + (void)lib; + //sdl2_my_t *my = (sdl2_my_t *)lib; } #undef SUPER @@ -550,6 +551,7 @@ EXPORT void my2_SDL_LogSetOutputFunction(x64emu_t* emu, void* f, void* arg) EXPORT int my2_SDL_vsnprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, x64_va_list_t b) { + (void)emu; CONVERT_VALIST(b) int r = vsnprintf(buff, s, fmt, VARARGS); return r; @@ -840,13 +842,14 @@ EXPORT int64_t my2_SDL_IsJoystickHIDAPI(x64emu_t* emu, uint64_t a, uint64_t b) void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* device, void* name); EXPORT void* my2_SDL_Vulkan_GetVkGetInstanceProcAddr(x64emu_t* emu) { -// sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2; + (void)emu; + //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2; -// if(!emu->context->vkprocaddress) -// emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr(); + //if(!emu->context->vkprocaddress) + // emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr(); -// if(emu->context->vkprocaddress) -// return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0); + //if(emu->context->vkprocaddress) + // return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0); return NULL; } diff --git a/src/wrapped/wrappedsdl2mixer.c b/src/wrapped/wrappedsdl2mixer.c index e8901c5f..df4fc67f 100755 --- a/src/wrapped/wrappedsdl2mixer.c +++ b/src/wrapped/wrappedsdl2mixer.c @@ -57,7 +57,8 @@ static void* getSDL2MixerMy(library_t* lib) static void freeSDL2MixerMy(library_t* lib) { -// sdl2mixer_my_t *my = lib->priv.w.p2; + (void)lib; + //sdl2mixer_my_t *my = lib->priv.w.p2; } #undef SUPER @@ -281,4 +282,3 @@ const char* sdl2mixerName = "libSDL2_mixer-2.0.so.0"; ((box64context_t*)(lib->context))->sdl2mixerlib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedsdl2net.c b/src/wrapped/wrappedsdl2net.c index dcb3f7a8..ead8d048 100755 --- a/src/wrapped/wrappedsdl2net.c +++ b/src/wrapped/wrappedsdl2net.c @@ -23,6 +23,7 @@ static void* getSDL2NetMy(library_t* lib) { sdl2net_my_t* my = (sdl2net_my_t*)calloc(1, sizeof(sdl2net_my_t)); #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + (void)lib; // So many wrapped functions here #undef GO return my; } @@ -43,4 +44,3 @@ const char* sdl2netName = "libSDL2_net-2.0.so.0"; my_lib = NULL; #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedsmpeg.c b/src/wrapped/wrappedsmpeg.c index 47700059..0df09581 100755 --- a/src/wrapped/wrappedsmpeg.c +++ b/src/wrapped/wrappedsmpeg.c @@ -44,6 +44,7 @@ static void* getSMPEGMy(library_t* lib) static void freeSMPEGMy(void* lib) { + (void)lib; //smpeg_my_t *my = (smpeg_my_t *)lib; } @@ -80,6 +81,7 @@ static void* find_dispcallback_Fct(void* fct) EXPORT void my_SMPEG_setdisplay(x64emu_t* emu, void* mpeg, void* surf, void* lock, void* cb) { + (void)emu; library_t* lib = GetLibInternal(smpegName); smpeg_my_t* my = (smpeg_my_t*)lib->priv.w.p2; my->SMPEG_setdisplay(mpeg, surf, lock, find_dispcallback_Fct(cb)); @@ -103,4 +105,3 @@ EXPORT void* my_SMPEG_new_rwops(x64emu_t* emu, void* src, void* info, int32_t sd free(lib->priv.w.p2); \ #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedsmpeg2.c b/src/wrapped/wrappedsmpeg2.c index eac26700..05be193e 100755 --- a/src/wrapped/wrappedsmpeg2.c +++ b/src/wrapped/wrappedsmpeg2.c @@ -45,6 +45,7 @@ static void* getSMPEG2My(library_t* lib) static void freeSMPEG2My(void* lib) { + (void)lib; //smpeg2_my_t *my = (smpeg2_my_t *)lib; } @@ -82,6 +83,7 @@ static void* find_dispcallback_Fct(void* fct) EXPORT void my2_SMPEG_setdisplay(x64emu_t* emu, void* mpeg, void* cb, void* data, void* lock) { + (void)emu; library_t* lib = GetLibInternal(smpeg2Name); smpeg2_my_t* my = (smpeg2_my_t*)lib->priv.w.p2; my->SMPEG_setdisplay(mpeg, find_dispcallback_Fct(cb), data, lock); @@ -108,4 +110,3 @@ EXPORT void* my2_SMPEG_new_rwops(x64emu_t* emu, void* src, void* info, int32_t f free(lib->priv.w.p2); \ #include "wrappedlib_init.h" - diff --git a/src/wrapped/wrappedvorbisfile.c b/src/wrapped/wrappedvorbisfile.c index b342523e..aa276de3 100755 --- a/src/wrapped/wrappedvorbisfile.c +++ b/src/wrapped/wrappedvorbisfile.c @@ -48,6 +48,7 @@ void* getVorbisfileMy(library_t* lib) void freeVorbisfileMy(void* lib) { + (void)lib; //vorbisfile_my_t *my = (vorbisfile_my_t *)lib; } |