make factor compile on win64
parent
e2c20d23a4
commit
bc3bf6b2b4
6
Makefile
6
Makefile
|
@ -65,6 +65,7 @@ default:
|
|||
@echo "solaris-x86-64"
|
||||
@echo "windows-ce-arm"
|
||||
@echo "windows-nt-x86-32"
|
||||
@echo "windows-nt-x86-64"
|
||||
@echo ""
|
||||
@echo "Additional modifiers:"
|
||||
@echo ""
|
||||
|
@ -125,6 +126,9 @@ solaris-x86-64:
|
|||
windows-nt-x86-32:
|
||||
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32
|
||||
|
||||
windows-nt-x86-64:
|
||||
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64
|
||||
|
||||
windows-ce-arm:
|
||||
$(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.ce.arm
|
||||
|
||||
|
@ -151,7 +155,7 @@ clean:
|
|||
rm -f factor*.dll libfactor*.*
|
||||
|
||||
vm/resources.o:
|
||||
windres vm/factor.rs vm/resources.o
|
||||
$(WINDRES) vm/factor.rs vm/resources.o
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
WINDRES=windres
|
||||
include vm/Config.windows.nt
|
||||
include vm/Config.x86.32
|
||||
#error "lolllll"
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
CC=/k/target/bin/x86_64-pc-mingw32-gcc
|
||||
#WIN64_PATH=/k/MinGW/win64/bin
|
||||
WIN64_PATH=/cygdrive/k/MinGW/win64/bin/x86_64-pc-mingw32
|
||||
CC=$(WIN64_PATH)-gcc.exe
|
||||
WINDRES=$(WIN64_PATH)-windres.exe
|
||||
include vm/Config.windows.nt
|
||||
include vm/Config.x86.64
|
||||
WINDRES = /k/target/bin/windres
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
#define ESP Esp
|
||||
#define EIP Eip
|
|
@ -0,0 +1,2 @@
|
|||
#define ESP Rsp
|
||||
#define EIP Rip
|
|
@ -57,26 +57,26 @@ long exception_handler(PEXCEPTION_POINTERS pe)
|
|||
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
|
||||
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
|
||||
|
||||
if(in_code_heap_p(c->Eip))
|
||||
signal_callstack_top = (void *)c->Esp;
|
||||
if(in_code_heap_p(c->EIP))
|
||||
signal_callstack_top = (void *)c->ESP;
|
||||
else
|
||||
signal_callstack_top = NULL;
|
||||
|
||||
if(e->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
|
||||
{
|
||||
signal_fault_addr = e->ExceptionInformation[1];
|
||||
c->Eip = (CELL)memory_signal_handler_impl;
|
||||
c->EIP = (CELL)memory_signal_handler_impl;
|
||||
}
|
||||
else if(e->ExceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO
|
||||
|| e->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
|
||||
{
|
||||
signal_number = ERROR_DIVIDE_BY_ZERO;
|
||||
c->Eip = (CELL)divide_by_zero_signal_handler_impl;
|
||||
c->EIP = (CELL)divide_by_zero_signal_handler_impl;
|
||||
}
|
||||
else
|
||||
{
|
||||
signal_number = 11;
|
||||
c->Eip = (CELL)misc_signal_handler_impl;
|
||||
c->EIP = (CELL)misc_signal_handler_impl;
|
||||
}
|
||||
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
#if defined(__arm__)
|
||||
#define FACTOR_ARM
|
||||
#elif defined(__amd64__) || defined(__x86_64__)
|
||||
#define FACTOR_AMD64
|
||||
#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(WIN32)
|
||||
#define FACTOR_X86
|
||||
#elif defined(__POWERPC__) || defined(__ppc__) || defined(_ARCH_PPC)
|
||||
#define FACTOR_PPC
|
||||
#elif defined(__amd64__) || defined(__x86_64__)
|
||||
#define FACTOR_AMD64
|
||||
#else
|
||||
#error "Unsupported architecture"
|
||||
#endif
|
||||
|
@ -18,6 +18,11 @@
|
|||
#endif
|
||||
|
||||
#include "os-windows.h"
|
||||
#if defined(FACTOR_AMD64)
|
||||
#include "os-windows-nt.64.h"
|
||||
#elif defined(FACTOR_X86)
|
||||
#include "os-windows-nt.32.h"
|
||||
#endif
|
||||
#else
|
||||
#include "os-unix.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue