#include #include /* Magic libc vector */ extern void *__elf_aux_vector; int main(int argc, char* argv[]) { Elf_Auxinfo *aux; for (aux = __elf_aux_vector; aux->a_type != AT_NULL; aux++) { switch (aux->a_type) { case AT_IGNORE: printf("AT_IGNORE\n"); break; case AT_EXECFD: printf("AT_EXECFD: %d\n", (int)aux->a_un.a_val); break; case AT_PHDR: printf("AT_PHDR: %p\n", aux->a_un.a_ptr); break; case AT_PHENT: printf("AT_PHENT: %d\n", (int)aux->a_un.a_val); break; case AT_PHNUM: printf("AT_PHNUM: %d\n", (int)aux->a_un.a_val); break; case AT_PAGESZ: printf("AT_PAGESZ: %d\n", (int)aux->a_un.a_val); break; case AT_BASE: printf("AT_BASE: %p\n", aux->a_un.a_ptr); break; case AT_FLAGS: printf("AT_FLAGS: 0x%lx\n", aux->a_un.a_val); break; case AT_ENTRY: printf("AT_ENTRY: %p\n", aux->a_un.a_ptr); break; case AT_NOTELF: printf("AT_NOTELF\n"); break; case AT_UID: printf("AT_UID: %d\n", (int)aux->a_un.a_val); break; case AT_EUID: printf("AT_EUID: %d\n", (int)aux->a_un.a_val); break; #ifdef AT_GID case AT_GID: printf("AT_GID: %d\n", (int)aux->a_un.a_val); break; #endif #ifdef AT_EGID case AT_EGID: printf("AT_EGID: %d\n", (int)aux->a_un.a_val); break; #endif case AT_EXECPATH: printf("AT_EXECPATH: %s\n", aux->a_un.a_ptr); break; case AT_CANARY: printf("AT_CANARY: %p\n", aux->a_un.a_ptr); break; case AT_CANARYLEN: printf("AT_CANARYLEN: %d\n", (int)aux->a_un.a_val); break; case AT_OSRELDATE: printf("AT_OSRELDATE: %d\n", (int)aux->a_un.a_val); break; case AT_NCPUS: printf("AT_NCPUS: %d\n", (int)aux->a_un.a_val); break; case AT_PAGESIZES: printf("AT_PAGESIZES: %p\n", aux->a_un.a_ptr); break; case AT_PAGESIZESLEN: printf("AT_PAGESIZESLEN: %d\n", (int)aux->a_un.a_val); break; case AT_STACKPROT: printf("AT_STACKPROT: %p\n", aux->a_un.a_ptr); break; case AT_TIMEKEEP: printf("AT_TIMEKEEP: %p\n", aux->a_un.a_ptr); break; case AT_EHDRFLAGS: printf("AT_EHDRFLAGS: 0x%lx\n", aux->a_un.a_val); break; case AT_HWCAP: printf("AT_HWCAP: 0x%x\n", (int)aux->a_un.a_val); break; case AT_HWCAP2: printf("AT_HWCAP2: 0x%x\n", (int)aux->a_un.a_val); break; default: printf("UNKNOWN AUXV ENTRY %d\n", aux->a_type); break; } } }