PowerPC floating point little-endian [4 of 15]
[glibc.git] / malloc / tst-posix_memalign.c
blob9d9d1bfb0c0d6921e18f81576b09f4bab14487c4
1 /* Copyright (C) 2013 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
18 #include <errno.h>
19 #include <stdlib.h>
20 #include <stdio.h>
21 #include <string.h>
22 #include <unistd.h>
24 static int errors = 0;
26 static void
27 merror (const char *msg)
29 ++errors;
30 printf ("Error: %s\n", msg);
33 static int
34 do_test (void)
36 void *p;
37 int ret;
38 unsigned long pagesize = getpagesize();
39 unsigned long ptrval;
41 p = NULL;
43 ret = posix_memalign (&p, sizeof (void *), -1);
45 if (ret != ENOMEM)
46 merror ("posix_memalign (&p, sizeof (void *), -1) succeeded.");
48 if (ret == ENOMEM && p != NULL)
49 merror ("returned an error but pointer was modified");
51 p = NULL;
53 ret = posix_memalign (&p, pagesize, -pagesize);
55 if (ret != ENOMEM)
56 merror ("posix_memalign (&p, pagesize, -pagesize) succeeded.");
58 p = NULL;
60 ret = posix_memalign (&p, sizeof (void *), 0);
62 if (ret != 0 || p == NULL)
63 merror ("posix_memalign (&p, sizeof (void *), 0) failed.");
65 free (p);
67 ret = posix_memalign (&p, 0x300, 10);
69 if (ret != EINVAL)
70 merror ("posix_memalign (&p, 0x300, 10) succeeded.");
72 ret = posix_memalign (&p, 0, 10);
74 if (ret != EINVAL)
75 merror ("posix_memalign (&p, 0, 10) succeeded.");
77 p = NULL;
79 ret = posix_memalign (&p, 0x100, 10);
81 if (ret != 0)
82 merror ("posix_memalign (&p, 0x100, 10) failed.");
84 if (ret == 0 && p == NULL)
85 merror ("returned success but pointer is NULL");
87 ptrval = (unsigned long)p;
89 if (ret == 0 && (ptrval & 0xff))
90 merror ("pointer is not aligned to 0x100");
92 free (p);
94 return errors != 0;
97 #define TEST_FUNCTION do_test ()
98 #include "../test-skeleton.c"