summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/arch/x86_64/asm/vdso.h18
-rw-r--r--include/elf.h85
-rw-r--r--include/sys/auxv.h6
-rw-r--r--include/sys/cdefs.h1
4 files changed, 103 insertions, 7 deletions
diff --git a/include/arch/x86_64/asm/vdso.h b/include/arch/x86_64/asm/vdso.h
index 8a79d3a2..7f0ea2aa 100644
--- a/include/arch/x86_64/asm/vdso.h
+++ b/include/arch/x86_64/asm/vdso.h
@@ -3,8 +3,20 @@
struct timespec;
-extern int (*__vdso_clock_gettime)(int, struct timespec *);
-extern int (*__vdso_getcpu)(unsigned *, unsigned *, void *);
-extern int (*__vdso_time)(long *);
+#define __VDSO_CLOCK_GETTIME
+#define __VDSO_GETCPU
+#define __VDSO_TIME
+
+static int (*__vdso_clock_gettime)(int, struct timespec *) = 0;
+static int (*__vdso_getcpu)(unsigned *, unsigned *, void *) = 0;
+static int (*__vdso_time)(long *) = 0;
+
+struct {
+ const char *name;
+ void *func;
+} __vdso_symtab[] = { { "__vdso_clock_gettime", (void *)&__vdso_clock_gettime },
+ { "__vdso_getcpu", (void *)&__vdso_getcpu },
+ { "__vdso_time", (void *)&__vdso_time },
+ { 0, 0 } };
#endif
diff --git a/include/elf.h b/include/elf.h
index e4aa7c88..8317c9ca 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -3,6 +3,12 @@
#include <stdint.h>
+#define ELF32_ST_BIND(val) (((unsigned char)(val)) >> 4)
+#define ELF32_ST_TYPE(val) ((val) & 0xf)
+
+#define ELF64_ST_BIND(val) ELF32_ST_BIND(val)
+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE(val)
+
#define PT_NULL 0
#define PT_LOAD 1
#define PT_DYNAMIC 2
@@ -140,6 +146,69 @@
#define ELFOSABI_NONE 0
#define ELFOSABI_LINUX 3
+#define AT_NULL 0
+#define AT_IGNORE 1
+#define AT_EXECFD 2
+#define AT_PHDR 3
+#define AT_PHENT 4
+#define AT_PHNUM 5
+#define AT_PAGESZ 6
+#define AT_BASE 7
+#define AT_FLAGS 8
+#define AT_ENTRY 9
+#define AT_NOTELF 10
+#define AT_UID 11
+#define AT_EUID 12
+#define AT_GID 13
+#define AT_EGID 14
+#define AT_CLKTCK 17
+
+#define AT_PLATFORM 15
+#define AT_HWCAP 16
+
+#define AT_FPUCW 18
+
+#define AT_DCACHEBSIZE 19
+#define AT_ICACHEBSIZE 20
+#define AT_UCACHEBSIZE 21
+
+#define AT_IGNOREPPC 22
+
+#define AT_SECURE 23
+
+#define AT_BASE_PLATFORM 24
+
+#define AT_RANDOM 25
+
+#define AT_HWCAP2 26
+
+#define AT_RSEQ_FEATURE_SIZE 27
+#define AT_RSEQ_ALIGN 28
+
+#define AT_HWCAP3 29
+#define AT_HWCAP4 30
+
+#define AT_EXECFN 31
+
+#define AT_SYSINFO 32
+#define AT_SYSINFO_EHDR 33
+
+#define AT_L1I_CACHESHAPE 34
+#define AT_L1D_CACHESHAPE 35
+#define AT_L2_CACHESHAPE 36
+#define AT_L3_CACHESHAPE 37
+
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+
+#define AT_MINSIGSTKSZ 51
+
typedef uint16_t Elf32_Half;
typedef int16_t Elf32_SHalf;
typedef uint32_t Elf32_Word;
@@ -318,10 +387,18 @@ typedef struct elf64_note {
Elf64_Word n_type;
} Elf64_Nhdr;
-#define ELF32_ST_BIND(val) (((unsigned char)(val)) >> 4)
-#define ELF32_ST_TYPE(val) ((val) & 0xf)
+typedef struct {
+ uint32_t a_type;
+ union {
+ uint32_t a_val;
+ } a_un;
+} Elf32_auxv_t;
-#define ELF64_ST_BIND(val) ELF32_ST_BIND(val)
-#define ELF64_ST_TYPE(val) ELF32_ST_TYPE(val)
+typedef struct {
+ uint64_t a_type;
+ union {
+ uint64_t a_val;
+ } a_un;
+} Elf64_auxv_t;
#endif
diff --git a/include/sys/auxv.h b/include/sys/auxv.h
new file mode 100644
index 00000000..e3b65b99
--- /dev/null
+++ b/include/sys/auxv.h
@@ -0,0 +1,6 @@
+#ifndef __SYS_AUXV_H
+#define __SYS_AUXV_H
+
+unsigned long getauxval(unsigned long);
+
+#endif
diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h
index 70ace705..00e85014 100644
--- a/include/sys/cdefs.h
+++ b/include/sys/cdefs.h
@@ -18,6 +18,7 @@
#define __pure __attribute__((__pure__))
#define __nodiscard __attribute__((__warn_unused_result__))
#define __weak __attribute__((__weak__))
+#define __naked __attribute__((__naked__))
#define __predict_true(exp) __builtin_expect((exp) != 0, 1)
#define __predict_false(exp) __builtin_expect((exp) != 0, 0)