From ad30b8c4477877c676b9c759c4714f5c5d6742e4 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Sat, 7 Jan 2023 14:21:43 -0700 Subject: [PATCH] Kernel+Libraries: Move defines and types from sys/auxv.h to Kernel/API And don't include from LibELF/AuxiliaryVector.h, to reduce the number of Kernel files that include LibC headers. --- Kernel/API/POSIX/sys/auxv.h | 44 +++++++++++++++++++++ Userland/Libraries/LibC/malloc.cpp | 1 - Userland/Libraries/LibC/stdlib.cpp | 2 +- Userland/Libraries/LibC/sys/auxv.h | 38 +----------------- Userland/Libraries/LibELF/AuxiliaryVector.h | 2 +- 5 files changed, 47 insertions(+), 40 deletions(-) create mode 100644 Kernel/API/POSIX/sys/auxv.h diff --git a/Kernel/API/POSIX/sys/auxv.h b/Kernel/API/POSIX/sys/auxv.h new file mode 100644 index 0000000000..5506a1ccc5 --- /dev/null +++ b/Kernel/API/POSIX/sys/auxv.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021, Idan Horowitz + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#define AT_NULL 0 /* No length, last entry's a_type has this value */ +#define AT_IGNORE 1 /* Entry has no meaning, a_un undefined */ +#define AT_EXECFD 2 /* a_val contains a file descriptor of the main program image */ +#define AT_PHDR 3 /* a_ptr contains pointer to program header table of main program image */ +#define AT_PHENT 4 /* a_val holds size of program header table entries */ +#define AT_PHNUM 5 /* a_val holds number of program header table entries */ +#define AT_PAGESZ 6 /* a_val gives system page size in bytes */ +#define AT_BASE 7 /* a_ptr holds base address that Loader was loaded into memory */ +#define AT_FLAGS 8 /* a_val holds 1 bit flags. Undefined flags are 0 */ +#define AT_ENTRY 9 /* a_ptr holds entry point of the main program */ +#define AT_NOTELF 10 /* a_val non-zero if the program is not ELF */ +#define AT_UID 11 /* a_val holds real user id of process */ +#define AT_EUID 12 /* a_val holds effective user id of process */ +#define AT_GID 13 /* a_val holds real group id of process */ +#define AT_EGID 14 /* a_val holds effective group id of process */ +#define AT_PLATFORM 15 /* a_val points to a string containing platform name */ +#define AT_HWCAP 16 /* a_val contains bitmask of CPU features. Equivalent to CPUID 1.EDX*/ +#define AT_CLKTCK 17 /* a_val contains frequency at which times() increments. (Re: Spec. What is times()?) */ +#define AT_SECURE 23 /* a_val holds 1 if program in secure mode (e.g. suid). Otherwise 0 */ +#define AT_BASE_PLATFORM 24 /* a_ptr points to a string identifying base platform name, which might be different from platform (e.g x86_64 when in i386 compat) */ +#define AT_RANDOM 25 /* a_ptr points to 16 securely generated random bytes */ +#define AT_HWCAP2 26 /* a_val holds extended hw feature mask. Currently 0 */ +#define AT_EXECFN 31 /* a_ptr points to filename of executed program */ +#define AT_EXE_BASE 32 /* a_ptr holds base address where main program was loaded into memory */ +#define AT_EXE_SIZE 33 /* a_val holds the size of the main program in memory */ + +/* Auxiliary Vector types, from Intel386 ABI ver 1.0 section 2.3.3 */ +typedef struct +{ + long a_type; /* Note: Extended to long from int, for ease of compatibility w/64 bit */ + union { + long a_val; + void* a_ptr; + void (*a_fnc)(void); /* In spec, not used */ + } a_un; +} auxv_t; diff --git a/Userland/Libraries/LibC/malloc.cpp b/Userland/Libraries/LibC/malloc.cpp index e0d2925a8d..5e84d1f790 100644 --- a/Userland/Libraries/LibC/malloc.cpp +++ b/Userland/Libraries/LibC/malloc.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include diff --git a/Userland/Libraries/LibC/stdlib.cpp b/Userland/Libraries/LibC/stdlib.cpp index 30ed94626b..9d1ef30d47 100644 --- a/Userland/Libraries/LibC/stdlib.cpp +++ b/Userland/Libraries/LibC/stdlib.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -26,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibC/sys/auxv.h b/Userland/Libraries/LibC/sys/auxv.h index 750383126c..c38cbfa92d 100644 --- a/Userland/Libraries/LibC/sys/auxv.h +++ b/Userland/Libraries/LibC/sys/auxv.h @@ -6,47 +6,11 @@ #pragma once +#include #include __BEGIN_DECLS -#define AT_NULL 0 /* No length, last entry's a_type has this value */ -#define AT_IGNORE 1 /* Entry has no meaning, a_un undefined */ -#define AT_EXECFD 2 /* a_val contains a file descriptor of the main program image */ -#define AT_PHDR 3 /* a_ptr contains pointer to program header table of main program image */ -#define AT_PHENT 4 /* a_val holds size of program header table entries */ -#define AT_PHNUM 5 /* a_val holds number of program header table entries */ -#define AT_PAGESZ 6 /* a_val gives system page size in bytes */ -#define AT_BASE 7 /* a_ptr holds base address that Loader was loaded into memory */ -#define AT_FLAGS 8 /* a_val holds 1 bit flags. Undefined flags are 0 */ -#define AT_ENTRY 9 /* a_ptr holds entry point of the main program */ -#define AT_NOTELF 10 /* a_val non-zero if the program is not ELF */ -#define AT_UID 11 /* a_val holds real user id of process */ -#define AT_EUID 12 /* a_val holds effective user id of process */ -#define AT_GID 13 /* a_val holds real group id of process */ -#define AT_EGID 14 /* a_val holds effective group id of process */ -#define AT_PLATFORM 15 /* a_val points to a string containing platform name */ -#define AT_HWCAP 16 /* a_val contains bitmask of CPU features. Equivalent to CPUID 1.EDX*/ -#define AT_CLKTCK 17 /* a_val contains frequency at which times() increments. (Re: Spec. What is times()?) */ -#define AT_SECURE 23 /* a_val holds 1 if program in secure mode (e.g. suid). Otherwise 0 */ -#define AT_BASE_PLATFORM 24 /* a_ptr points to a string identifying base platform name, which might be different from platform (e.g x86_64 when in i386 compat) */ -#define AT_RANDOM 25 /* a_ptr points to 16 securely generated random bytes */ -#define AT_HWCAP2 26 /* a_val holds extended hw feature mask. Currently 0 */ -#define AT_EXECFN 31 /* a_ptr points to filename of executed program */ -#define AT_EXE_BASE 32 /* a_ptr holds base address where main program was loaded into memory */ -#define AT_EXE_SIZE 33 /* a_val holds the size of the main program in memory */ - -/* Auxiliary Vector types, from Intel386 ABI ver 1.0 section 2.3.3 */ -typedef struct -{ - long a_type; /* Note: Extended to long from int, for ease of compatibility w/64 bit */ - union { - long a_val; - void* a_ptr; - void (*a_fnc)(void); /* In spec, not used */ - } a_un; -} auxv_t; - long getauxval(long type); __END_DECLS diff --git a/Userland/Libraries/LibELF/AuxiliaryVector.h b/Userland/Libraries/LibELF/AuxiliaryVector.h index 4ce365b463..80f4e847cf 100644 --- a/Userland/Libraries/LibELF/AuxiliaryVector.h +++ b/Userland/Libraries/LibELF/AuxiliaryVector.h @@ -8,7 +8,7 @@ #include #include -#include +#include static_assert(sizeof(auxv_t) % sizeof(FlatPtr) == 0);