Fixed JIT conflicts with SELinux (bug 5581, r=dvander).
This commit is contained in:
parent
29ba84fc5c
commit
00e44ad3c3
@ -267,13 +267,8 @@ KeCodeRegion *ke_AddRegionForSize(KeCodeCache *cache, size_t size)
|
|||||||
#if defined KE_PLATFORM_WINDOWS
|
#if defined KE_PLATFORM_WINDOWS
|
||||||
region->block_start = (unsigned char *)VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
region->block_start = (unsigned char *)VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||||
#elif defined KE_PLATFORM_POSIX
|
#elif defined KE_PLATFORM_POSIX
|
||||||
region->block_start = (unsigned char *)valloc(size);
|
region->block_start = (unsigned char *)mmap(NULL, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0);
|
||||||
if (mprotect(region->block_start, size, PROT_READ|PROT_WRITE|PROT_EXEC) == -1)
|
region->block_start = (region->block_start == MAP_FAILED) ? NULL : region->block_start;
|
||||||
{
|
|
||||||
free(region->block_start);
|
|
||||||
delete region;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
#error "TODO"
|
#error "TODO"
|
||||||
#endif
|
#endif
|
||||||
@ -389,7 +384,7 @@ KeCodeRegion *ke_DestroyRegion(KeCodeRegion *region)
|
|||||||
#if defined KE_PLATFORM_WINDOWS
|
#if defined KE_PLATFORM_WINDOWS
|
||||||
VirtualFree(region->block_start, 0, MEM_RELEASE);
|
VirtualFree(region->block_start, 0, MEM_RELEASE);
|
||||||
#else
|
#else
|
||||||
free(region->block_start);
|
munmap(region->block_start, region->total_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
delete region;
|
delete region;
|
||||||
|
Loading…
Reference in New Issue
Block a user