1#include <stdio.h>
2#include <sys/auxv.h>
3
4int main(int argc, char** argv, char** envp) {
5 char* aux_names[] = {
6 "AT_NULL", "AT_IGNORE",
7 "AT_EXECFD", "AT_PHDR",
8 "AT_PHENT", "AT_PHNUM",
9 "AT_PAGESZ", "AT_BASE",
10 "AT_FLAGS", "AT_ENTRY",
11 "AT_NOTELF", "AT_UID",
12 "AT_EUID", "AT_GID",
13 "AT_EGID", "AT_CLKTCK",
14 "AT_PLATFORM", "AT_HWCAP",
15 "AT_FPUCW", "AT_DCACHEBSIZE",
16 "AT_ICACHEBSIZE", "AT_UCACHEBSIZE",
17 "AT_IGNOREPPC", "AT_SECURE",
18 "AT_BASE_PLATFORM", "AT_RANDOM",
19 "AT_HWCAP2", "AT_EXECFN",
20 "AT_SYSINFO", "AT_SYSINFO_EHDR",
21 "AT_L1I_CACHESHAPE", "AT_L1D_CACHESHAPE",
22 "AT_L2_CACHESHAPE", "AT_L3_CACHESHAPE",
23 "AT_L1I_CACHESIZE", "AT_L1I_CACHEGEOMETRY",
24 "AT_L1D_CACHESIZE", "AT_L1D_CACHEGEOMETRY",
25 "AT_L2_CACHESIZE", "AT_L2_CACHEGEOMETRY",
26 "AT_L3_CACHESIZE", "AT_L3_CACHEGEOMETRY",
27 "AT_MINSIGSTKSZ",
28 };
29 unsigned long aux_types[] = {AT_NULL, AT_IGNORE,
30 AT_EXECFD, AT_PHDR,
31 AT_PHENT, AT_PHNUM,
32 AT_PAGESZ, AT_BASE,
33 AT_FLAGS, AT_ENTRY,
34 AT_NOTELF, AT_UID,
35 AT_EUID, AT_GID,
36 AT_EGID, AT_CLKTCK,
37 AT_PLATFORM, AT_HWCAP,
38 AT_FPUCW, AT_DCACHEBSIZE,
39 AT_ICACHEBSIZE, AT_UCACHEBSIZE,
40 AT_IGNOREPPC, AT_SECURE,
41 AT_BASE_PLATFORM, AT_RANDOM,
42 AT_HWCAP2, AT_EXECFN,
43 AT_SYSINFO, AT_SYSINFO_EHDR,
44 AT_L1I_CACHESHAPE, AT_L1D_CACHESHAPE,
45 AT_L2_CACHESHAPE, AT_L3_CACHESHAPE,
46 AT_L1I_CACHESIZE, AT_L1I_CACHEGEOMETRY,
47 AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY,
48 AT_L2_CACHESIZE, AT_L2_CACHEGEOMETRY,
49 AT_L3_CACHESIZE, AT_L3_CACHEGEOMETRY,
50 AT_MINSIGSTKSZ};
51 int n_aux_types = 43;
52 for (int i = 0; i < n_aux_types; i++) {
53 printf("%s = %lu\n", aux_names[i], getauxval(aux_types[i]));
54 }
55
56 for (char** env = envp; *env != 0; env++) {
57 char* thisEnv = *env;
58 printf("%s\n", thisEnv);
59 }
60 // TODO: Need this?
61 fflush(stdout);
62 return 0;
63}
64