Update copyright dates with scripts/update-copyrights
[glibc.git] / sysdeps / unix / sysv / linux / tst-getauxval.c
blob9e7b0b38cce45a2835fb9b797bdc471b4735ce89
1 /* Basic test for getauxval.
2 Copyright (C) 2022-2023 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
19 #include <unistd.h>
20 #include <stdio.h>
21 #include <support/check.h>
22 #include <sys/auxv.h>
24 static int missing;
25 static int mismatch;
27 static void
28 check_nonzero (unsigned long t, const char *s)
30 unsigned long v = getauxval (t);
31 printf ("%s: %lu (0x%lx)\n", s, v, v);
32 if (v == 0)
33 missing++;
36 static void
37 check_eq (unsigned long t, const char *s, unsigned long want)
39 unsigned long v = getauxval (t);
40 printf ("%s: %lu want: %lu\n", s, v, want);
41 if (v != want)
42 mismatch++;
45 #define NZ(x) check_nonzero (x, #x)
46 #define EQ(x, want) check_eq (x, #x, want)
48 static int
49 do_test (void)
51 /* These auxv entries should be non-zero on Linux. */
52 NZ (AT_PHDR);
53 NZ (AT_PHENT);
54 NZ (AT_PHNUM);
55 NZ (AT_PAGESZ);
56 NZ (AT_ENTRY);
57 NZ (AT_CLKTCK);
58 NZ (AT_RANDOM);
59 NZ (AT_EXECFN);
60 if (missing)
61 FAIL_EXIT1 ("Found %d missing auxv entries.\n", missing);
63 /* Check against syscalls. */
64 EQ (AT_UID, getuid ());
65 EQ (AT_EUID, geteuid ());
66 EQ (AT_GID, getgid ());
67 EQ (AT_EGID, getegid ());
68 if (mismatch)
69 FAIL_EXIT1 ("Found %d mismatching auxv entries.\n", mismatch);
71 return 0;
74 #include <support/test-driver.c>