Fixing compile errors on Windows

db4
unknown 2009-05-05 13:03:24 -05:00
parent 786b9096e2
commit 6e26c7b554
5 changed files with 10 additions and 9 deletions

View File

@ -6,5 +6,5 @@ EXE_EXTENSION=.exe
CONSOLE_EXTENSION=.com CONSOLE_EXTENSION=.com
DLL_EXTENSION=.dll DLL_EXTENSION=.dll
SHARED_DLL_EXTENSION=.dll SHARED_DLL_EXTENSION=.dll
LINKER = $(CC) -shared -mno-cygwin -o LINKER = $(CPP) -shared -mno-cygwin -o
LINK_WITH_ENGINE = -l$(DLL_PREFIX)factor$(DLL_SUFFIX) LINK_WITH_ENGINE = -l$(DLL_PREFIX)factor$(DLL_SUFFIX)

View File

@ -128,7 +128,7 @@ PRIMITIVE(dlsym)
gc_root<byte_array> name(dpop()); gc_root<byte_array> name(dpop());
name.untag_check(); name.untag_check();
vm_char *sym = (vm_char *)(name.untagged() + 1); symbol_char *sym = name->data<symbol_char>();
if(library.value() == F) if(library.value() == F)
box_alien(ffi_dlsym(NULL,sym)); box_alien(ffi_dlsym(NULL,sym));

View File

@ -17,7 +17,7 @@ long exception_handler(PEXCEPTION_POINTERS pe)
CONTEXT *c = (CONTEXT*)pe->ContextRecord; CONTEXT *c = (CONTEXT*)pe->ContextRecord;
if(in_code_heap_p(c->EIP)) if(in_code_heap_p(c->EIP))
signal_callstack_top = (void *)c->ESP; signal_callstack_top = (stack_frame *)c->ESP;
else else
signal_callstack_top = NULL; signal_callstack_top = NULL;
@ -43,7 +43,7 @@ long exception_handler(PEXCEPTION_POINTERS pe)
void c_to_factor_toplevel(cell quot) void c_to_factor_toplevel(cell quot)
{ {
if(!AddVectoredExceptionHandler(0, (void*)exception_handler)) if(!AddVectoredExceptionHandler(0, exception_handler))
fatal_error("AddVectoredExceptionHandler failed", 0); fatal_error("AddVectoredExceptionHandler failed", 0);
c_to_factor(quot); c_to_factor(quot);
RemoveVectoredExceptionHandler((void*)exception_handler); RemoveVectoredExceptionHandler((void*)exception_handler);

View File

@ -5,8 +5,8 @@
#define UNICODE #define UNICODE
#endif #endif
#include <shellapi.h>
#include <windows.h> #include <windows.h>
#include <shellapi.h>
namespace factor namespace factor
{ {

View File

@ -14,12 +14,12 @@ void init_ffi(void)
void ffi_dlopen(dll *dll) void ffi_dlopen(dll *dll)
{ {
dll->dll = LoadLibraryEx(alien_offset(dll->path), NULL, 0); dll->dll = LoadLibraryEx((WCHAR *)alien_offset(dll->path), NULL, 0);
} }
void *ffi_dlsym(dll *dll, symbol_char *symbol) void *ffi_dlsym(dll *dll, symbol_char *symbol)
{ {
return GetProcAddress(dll ? (HMODULE)dll->dll : hFactorDll, symbol); return (void *)GetProcAddress(dll ? (HMODULE)dll->dll : hFactorDll, symbol);
} }
void ffi_dlclose(dll *dll) void ffi_dlclose(dll *dll)
@ -93,7 +93,8 @@ const vm_char *vm_executable_path(void)
PRIMITIVE(existsp) PRIMITIVE(existsp)
{ {
vm_char *path = (vm_char *)(untag_check<byte_array>(dpop()) + 1); vm_char *path = untag_check<byte_array>(dpop())->data<vm_char>();
wprintf(L"existsp: path is %s\n",path);
box_boolean(windows_stat(path)); box_boolean(windows_stat(path));
} }
@ -113,7 +114,7 @@ segment *alloc_segment(cell size)
getpagesize(), PAGE_NOACCESS, &ignore)) getpagesize(), PAGE_NOACCESS, &ignore))
fatal_error("Cannot allocate high guard page", (cell)mem); fatal_error("Cannot allocate high guard page", (cell)mem);
segment *block = safe_malloc(sizeof(segment)); segment *block = (segment *)safe_malloc(sizeof(segment));
block->start = (cell)mem + getpagesize(); block->start = (cell)mem + getpagesize();
block->size = size; block->size = size;