示例#1
0
static int check_heap(int verbose){
if (verbose){
dbg_printf("check_heap\n");}
	int flag=check_epi_pro(1)|check_align(1);
	flag|=check_hf(1)|check_coalesce(1);
	return flag;
}
示例#2
0
int main()
{
    // align the buffer on 16 and call set value in a loop
    unsigned char buff[1000];
    unsigned char *ptr = buff + (16 - (ptr2long(buff) % 16));
    int i;

    memset(buff, 0, 1000);

    printf("Base pointer: %p\n", ptr);
    for (i = 0; i < 20; i++)
        set_value(ptr + 16 * i, 1);

    for (i = 0; i < 1000; i++)
    {
        if (buff[i] && check_align(&buff[i]))
        {
            printf("Align check failed on %p\n", &buff[i]);
            exit(1);
        }
    }

    printf("Align check ok\n");
    exit(0);
}
示例#3
0
a()
{
	int i = 1;
	short c[i];

	c[0] = 0;

	check_align(c, i);
}
示例#4
0
b()
{
	int i = 3;
	char c[i];

	c[0] = 0;
	c[1] = 0;
	c[2] = 0;

	check_align(c, i);
}
示例#5
0
int check_vert(int **grid, int colChoice, int* colPos)
{

    int i=colPos[colChoice], align=0, j=0;
    while(i>1 && grid[6-colPos[colChoice]][colChoice-1]==grid[6-i+1][colChoice-1])
    {
        i--;
        align++;
    }
    return check_align(align,j);
    return 0;
}
示例#6
0
/*
 * Tests one allocation/deallocaton cycle; used in a loop this tests for leaks
 */
boolean_t
test_alloc_dealloc() {
	mach_vm_address_t addr = 0;
	mach_vm_size_t	size = SUPERPAGE_SIZE;
	int kr, ret;
	
	kr = mach_vm_allocate(mach_task_self(), &addr, size, VM_FLAGS_ANYWHERE | VM_FLAGS_SUPERPAGE_SIZE_2MB);
	if (!(ret = check_kr(kr, "mach_vm_allocate"))) return ret;
	if (!(ret = check_addr0(addr, "mach_vm_allocate"))) return ret;
	if (!(ret = check_align(addr))) return ret;
	if (!(ret = check_rw(addr, size))) return ret;
	kr = mach_vm_deallocate(mach_task_self(), addr, size);
	if (!(ret = check_kr(kr, "mach_vm_deallocate"))) return ret;
	return TRUE;
}
示例#7
0
/*
 * If we allocate a 2 MB superpage read-write without specifying an address,
 * - the call should succeed
 * - not return 0
 * - return a 2 MB aligned address
 * - the memory should be readable and writable
 */
boolean_t
test_allocate() {
	int kr, ret;

	global_addr = 0;
	global_size = SUPERPAGE_SIZE;
	
	kr = mach_vm_allocate(mach_task_self(), &global_addr, global_size, VM_FLAGS_ANYWHERE | VM_FLAGS_SUPERPAGE_SIZE_2MB);
	if (!(ret = check_kr(kr, "mach_vm_allocate"))) return ret;
	if (!(ret = check_addr0(global_addr, "mach_vm_allocate"))) return ret;
	if (!(ret = check_align(global_addr))) return ret;
	if (!(ret = check_rw(global_addr, global_size))) return ret;

	return TRUE;
}
示例#8
0
int
main (void)
{
  /* Integral types.  */
  run_signed_tests2(check_align, char, TYPE_ALIGN_CHAR);
  run_signed_tests2(check_align, short, TYPE_ALIGN_SHORT);
  run_signed_tests2(check_align, int, TYPE_ALIGN_INT);
  run_signed_tests2(check_align, long, TYPE_ALIGN_LONG);
  run_signed_tests2(check_align, long long, TYPE_ALIGN_LONG_LONG);
#ifdef CHECK_INT128
  run_signed_tests2(check_align, __int128, TYPE_ALIGN_INT128);
#endif
  check_align(enumtype, TYPE_ALIGN_ENUM);

  /* Floating point types.  */
  check_align(float, TYPE_ALIGN_FLOAT);
  check_align(double, TYPE_ALIGN_DOUBLE);
#ifdef CHECK_LONG_DOUBLE
  check_align(long double, TYPE_ALIGN_LONG_DOUBLE);
#endif
#ifdef CHECK_FLOAT128
  check_align(__float128, TYPE_ALIGN_FLOAT128);
#endif

  /* Packed types - MMX, 3DNow!, SSE and SSE2.  */
#ifdef CHECK_M64_M128
  check_align(__m64, TYPE_ALIGN_M64);
  check_align(__m128, TYPE_ALIGN_M128);
#endif

  /* Pointer types.  */
  check_align(void *, TYPE_ALIGN_POINTER);
  check_align(void (*)(), TYPE_ALIGN_POINTER);

  return 0;
}
示例#9
0
int check_horiz(int **grid, int colChoice, int* colPos)
{
    int i=colChoice, align=0, j=0;
    while(i<8 && grid[6-colPos[colChoice]][colChoice-1]==grid[6-colPos[colChoice]][i])
    {
        i++;
        align++;
    }
    i=colChoice;
    while(i>1 && grid[6-colPos[colChoice]][colChoice-1]==grid[6-colPos[colChoice]][i-2])
    {
        i--;
        align++;
    }
   return check_align(align,j);
}
示例#10
0
int check_diag_down_right(int **grid, int colChoice, int* colPos)
{
    int i=colPos[colChoice], k=colChoice, align=0, j=0;
    while (i<6 && k>1 && grid[6-colPos[colChoice]][colChoice-1]==grid[6-(i+1)][k-2])
    {
        i++;
        k--;
        align++;
    }
    i=colPos[colChoice];
    k=colChoice;
    while (i>1 && k<8 && grid[6-colPos[colChoice]][colChoice-1]==grid[6-(i-1)][k])
    {
        i--;
        k++;
        align++;
    }
    return check_align(align,j);
}
示例#11
0
/*
 * The mmap() interface should work just as well!
 */
boolean_t
test_mmap() {
	int kr, ret;
	uintptr_t addr = 0;
	int size = SUPERPAGE_SIZE;
	
	addr = (uintptr_t)mmap((void*)addr, size, PROT_READ, MAP_ANON | MAP_PRIVATE, VM_FLAGS_SUPERPAGE_SIZE_2MB, 0);
	if (addr == (uintptr_t)MAP_FAILED) {
		sprintf(error, "mmap()");
		return FALSE;
	}
	if (!(ret = check_addr0(addr, "mach_vm_allocate"))) return ret;
	if (!(ret = check_align(addr))) return ret;
	if (!(ret = check_r(addr, SUPERPAGE_SIZE, NULL))) return ret;
	if (!(ret = check_nw(addr, SUPERPAGE_SIZE))) return ret;
	kr = munmap((void*)addr, size);
	if (!(ret = check_kr(kr, "munmap"))) return ret;
	if (!(ret = check_nr(addr, size, NULL))) return ret;

	return TRUE;
}