mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
I tried using 'svn merge' to do the merge but it did a terrible job and there were bazillions of conflicts. So instead I just took the diff between the branch and trunk at r10155, applied the diff to the trunk, 'svn add'ed the added files (no files needed to be 'svn remove'd) and committed. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10156
77 lines
2.5 KiB
C
77 lines
2.5 KiB
C
|
|
// These #defines attempt to ensure that posix_memalign() is declared, and
|
|
// so no spurious warning is given about using it.
|
|
|
|
// Advertise compliance of the code to the XSI (a POSIX superset that
|
|
// defines what a system must be like to be called "UNIX")
|
|
#undef _XOPEN_SOURCE
|
|
#define _XOPEN_SOURCE 600
|
|
|
|
// Advertise compliance to POSIX
|
|
#undef _POSIX_C_SOURCE
|
|
#define _POSIX_C_SOURCE 200112L
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <assert.h>
|
|
#include "tests/malloc.h"
|
|
#include <errno.h>
|
|
|
|
int main ( void )
|
|
{
|
|
# if defined(VGO_aix5)
|
|
// AIX 5.2 has neither memalign() nor posix_memalign(); do nothing.
|
|
|
|
# elif defined(VGO_darwin)
|
|
// Likewise for Mac OS X.
|
|
|
|
# else
|
|
// Nb: assuming VG_MIN_MALLOC_SZB is 8 or more...
|
|
int* p;
|
|
int res;
|
|
assert(sizeof(long int) == sizeof(void*));
|
|
|
|
p = memalign(0, 100); assert(0 == (long)p % 8);
|
|
p = memalign(1, 100); assert(0 == (long)p % 8);
|
|
p = memalign(2, 100); assert(0 == (long)p % 8);
|
|
p = memalign(3, 100); assert(0 == (long)p % 8);
|
|
p = memalign(4, 100); assert(0 == (long)p % 8);
|
|
p = memalign(5, 100); assert(0 == (long)p % 8);
|
|
|
|
p = memalign(7, 100); assert(0 == (long)p % 8);
|
|
p = memalign(8, 100); assert(0 == (long)p % 8);
|
|
p = memalign(9, 100); assert(0 == (long)p % 16);
|
|
|
|
p = memalign(31, 100); assert(0 == (long)p % 32);
|
|
p = memalign(32, 100); assert(0 == (long)p % 32);
|
|
p = memalign(33, 100); assert(0 == (long)p % 64);
|
|
|
|
p = memalign(4095, 100); assert(0 == (long)p % 4096);
|
|
p = memalign(4096, 100); assert(0 == (long)p % 4096);
|
|
p = memalign(4097, 100); assert(0 == (long)p % 8192);
|
|
|
|
# define PM(a,b,c) posix_memalign((void**)a, b, c)
|
|
|
|
res = PM(&p, -1,100); assert(EINVAL == res);
|
|
res = PM(&p, 0, 100); assert(0 == res && 0 == (long)p % 8);
|
|
res = PM(&p, 1, 100); assert(EINVAL == res);
|
|
res = PM(&p, 2, 100); assert(EINVAL == res);
|
|
res = PM(&p, 3, 100); assert(EINVAL == res);
|
|
res = PM(&p, sizeof(void*), 100);
|
|
assert(0 == res && 0 == (long)p % sizeof(void*));
|
|
|
|
res = PM(&p, 31, 100); assert(EINVAL == res);
|
|
res = PM(&p, 32, 100); assert(0 == res &&
|
|
0 == (long)p % 32);
|
|
res = PM(&p, 33, 100); assert(EINVAL == res);
|
|
|
|
res = PM(&p, 4095, 100); assert(EINVAL == res);
|
|
res = PM(&p, 4096, 100); assert(0 == res &&
|
|
0 == (long)p % 4096);
|
|
res = PM(&p, 4097, 100); assert(EINVAL == res);
|
|
|
|
# endif
|
|
|
|
return 0;
|
|
}
|