about summary refs log tree commit diff stats
path: root/src/libtools/signals.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtools/signals.c')
-rw-r--r--src/libtools/signals.c125
1 files changed, 0 insertions, 125 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 62081432..21e79cab 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -2078,131 +2078,6 @@ void my_sigactionhandler(int32_t sig, siginfo_t* info, void * ucntx)
     my_sigactionhandler_oldcode(emu, sig, 0, info, ucntx, NULL, db, x64pc);
 }
 
-void emit_signal(x64emu_t* emu, int sig, void* addr, int code)
-{
-    siginfo_t info = {0};
-    info.si_signo = sig;
-    info.si_errno = (sig==SIGSEGV)?0x1234:0;    // Mark as a sign this is a #GP(0) (like privileged instruction)
-    info.si_code = code;
-    if(sig==SIGSEGV && code==0xbad0) {
-        info.si_errno = 0xbad0;
-        info.si_code = 0;
-    } else if(sig==SIGSEGV && code==0xecec) {
-        info.si_errno = 0xecec;
-        info.si_code = SEGV_ACCERR;
-    } else if (sig==SIGSEGV && code==0xb09d) {
-        info.si_errno = 0xb09d;
-        info.si_code = 0;
-    }
-    info.si_addr = addr;
-    const char* x64name = NULL;
-    const char* elfname = NULL;
-    if(BOX64ENV(log)>LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(showsegv)) {
-        x64name = getAddrFunctionName(R_RIP);
-        elfheader_t* elf = FindElfAddress(my_context, R_RIP);
-        if(elf)
-            elfname = ElfName(elf);
-        printf_log(LOG_NONE, "Emit Signal %d at IP=%p(%s / %s) / addr=%p, code=0x%x\n", sig, (void*)R_RIP, x64name?x64name:"???", elfname?elfname:"?", addr, code);
-        print_rolling_log(LOG_INFO);
-
-        if((BOX64ENV(showbt) || sig==SIGABRT) && BOX64ENV(log)>=LOG_INFO) {
-            // show native bt
-            #define BT_BUF_SIZE 100
-            int nptrs;
-            void *buffer[BT_BUF_SIZE];
-            char **strings;
-
-#ifndef ANDROID
-            nptrs = backtrace(buffer, BT_BUF_SIZE);
-            strings = backtrace_symbols(buffer, nptrs);
-            if(strings) {
-                for (int j = 0; j < nptrs; j++)
-                    printf_log(LOG_INFO, "NativeBT: %s\n", strings[j]);
-                free(strings);
-            } else
-                printf_log(LOG_INFO, "NativeBT: none (%d/%s)\n", errno, strerror(errno));
-#endif
-            extern int my_backtrace_ip(x64emu_t* emu, void** buffer, int size);   // in wrappedlibc
-            extern char** my_backtrace_symbols(x64emu_t* emu, uintptr_t* buffer, int size);
-            // save and set real RIP/RSP
-            nptrs = my_backtrace_ip(emu, buffer, BT_BUF_SIZE);
-            strings = my_backtrace_symbols(emu, (uintptr_t*)buffer, nptrs);
-            if(strings) {
-                for (int j = 0; j < nptrs; j++)
-                    printf_log(LOG_INFO, "EmulatedBT: %s\n", strings[j]);
-                free(strings);
-            } else
-                printf_log(LOG_INFO, "EmulatedBT: none\n");
-        }
-printf_log(LOG_NONE, DumpCPURegs(emu, R_RIP, emu->segs[_CS]==0x23));
-printf_log(LOG_NONE, "Emu Stack: %p 0x%lx%s\n", emu->init_stack, emu->size_stack, emu->stack2free?" owned":"");
-        //if(!elf) {
-        //    FILE* f = fopen("/proc/self/maps", "r");
-        //    if(f) {
-        //        char line[1024];
-        //        while(!feof(f)) {
-        //            char* ret = fgets(line, sizeof(line), f);
-        //            printf_log(LOG_NONE, "\t%s", ret);
-        //        }
-        //        fclose(f);
-        //    }
-        //}
-        if(sig==SIGILL) {
-            uint8_t* mem = (uint8_t*)R_RIP;
-            printf_log(LOG_NONE, "SIGILL: Opcode at ip is %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx\n", mem[0], mem[1], mem[2], mem[3], mem[4], mem[5]);
-        }
-    }
-    my_sigactionhandler_oldcode(emu, sig, 0, &info, NULL, NULL, NULL, R_RIP);
-}
-
-void check_exec(x64emu_t* emu, uintptr_t addr)
-{
-    if(box64_pagesize!=4096)
-        return; //disabling the test, 4K pagesize simlation isn't good enough for this
-    while((getProtection_fast(addr)&(PROT_EXEC|PROT_READ))!=(PROT_EXEC|PROT_READ)) {
-        R_RIP = addr;   // incase there is a slight difference
-        emit_signal(emu, SIGSEGV, (void*)addr, 0xecec);
-    }
-}
-
-void emit_interruption(x64emu_t* emu, int num, void* addr)
-{
-    siginfo_t info = {0};
-    info.si_signo = SIGSEGV;
-    info.si_errno = 0xdead;
-    info.si_code = num;
-    info.si_addr = NULL;//addr;
-    const char* x64name = NULL;
-    const char* elfname = NULL;
-    if(BOX64ENV(log)>LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(showsegv)) {
-        x64name = getAddrFunctionName(R_RIP);
-        elfheader_t* elf = FindElfAddress(my_context, R_RIP);
-        if(elf)
-            elfname = ElfName(elf);
-        printf_log(LOG_NONE, "Emit Interruption 0x%x at IP=%p(%s / %s) / addr=%p\n", num, (void*)R_RIP, x64name?x64name:"???", elfname?elfname:"?", addr);
-    }
-    my_sigactionhandler_oldcode(emu, SIGSEGV, 0, &info, NULL, NULL, NULL, R_RIP);
-}
-
-void emit_div0(x64emu_t* emu, void* addr, int code)
-{
-    siginfo_t info = {0};
-    info.si_signo = SIGSEGV;
-    info.si_errno = 0xcafe;
-    info.si_code = code;
-    info.si_addr = addr;
-    const char* x64name = NULL;
-    const char* elfname = NULL;
-    if(BOX64ENV(log)>LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(showsegv)) {
-        x64name = getAddrFunctionName(R_RIP);
-        elfheader_t* elf = FindElfAddress(my_context, R_RIP);
-        if(elf)
-            elfname = ElfName(elf);
-        printf_log(LOG_NONE, "Emit Divide by 0 at IP=%p(%s / %s) / addr=%p\n", (void*)R_RIP, x64name?x64name:"???", elfname?elfname:"?", addr);
-    }
-    my_sigactionhandler_oldcode(emu, SIGSEGV, 0, &info, NULL, NULL, NULL, R_RIP);
-}
-
 EXPORT sighandler_t my_signal(x64emu_t* emu, int signum, sighandler_t handler)
 {
     if(signum<0 || signum>MAX_SIGNAL)