]> git.proxmox.com Git - wasi-libc.git/blame - libc-top-half/musl/src/internal/dynlink.h
Update to musl 1.1.24.
[wasi-libc.git] / libc-top-half / musl / src / internal / dynlink.h
CommitLineData
320054e8
DG
1#ifndef _INTERNAL_RELOC_H
2#define _INTERNAL_RELOC_H
3
4#include <features.h>
5#include <elf.h>
6#include <stdint.h>
7#include <stddef.h>
8#include <stdarg.h>
9
10#if UINTPTR_MAX == 0xffffffff
11typedef Elf32_Ehdr Ehdr;
12typedef Elf32_Phdr Phdr;
13typedef Elf32_Sym Sym;
14#define R_TYPE(x) ((x)&255)
15#define R_SYM(x) ((x)>>8)
16#define R_INFO ELF32_R_INFO
17#else
18typedef Elf64_Ehdr Ehdr;
19typedef Elf64_Phdr Phdr;
20typedef Elf64_Sym Sym;
21#define R_TYPE(x) ((x)&0x7fffffff)
22#define R_SYM(x) ((x)>>32)
23#define R_INFO ELF64_R_INFO
24#endif
25
26/* These enum constants provide unmatchable default values for
27 * any relocation type the arch does not use. */
28enum {
29 REL_NONE = 0,
30 REL_SYMBOLIC = -100,
79a9b408 31 REL_USYMBOLIC,
320054e8
DG
32 REL_GOT,
33 REL_PLT,
34 REL_RELATIVE,
35 REL_OFFSET,
36 REL_OFFSET32,
37 REL_COPY,
38 REL_SYM_OR_REL,
39 REL_DTPMOD,
40 REL_DTPOFF,
41 REL_TPOFF,
42 REL_TPOFF_NEG,
43 REL_TLSDESC,
44 REL_FUNCDESC,
45 REL_FUNCDESC_VAL,
46};
47
48struct fdpic_loadseg {
49 uintptr_t addr, p_vaddr, p_memsz;
50};
51
52struct fdpic_loadmap {
53 unsigned short version, nsegs;
54 struct fdpic_loadseg segs[];
55};
56
57struct fdpic_dummy_loadmap {
58 unsigned short version, nsegs;
59 struct fdpic_loadseg segs[1];
60};
61
62#include "reloc.h"
63
64#ifndef FDPIC_CONSTDISP_FLAG
65#define FDPIC_CONSTDISP_FLAG 0
66#endif
67
68#ifndef DL_FDPIC
69#define DL_FDPIC 0
70#endif
71
72#ifndef DL_NOMMU_SUPPORT
73#define DL_NOMMU_SUPPORT 0
74#endif
75
76#if !DL_FDPIC
77#define IS_RELATIVE(x,s) ( \
78 (R_TYPE(x) == REL_RELATIVE) || \
79 (R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)) )
80#else
81#define IS_RELATIVE(x,s) ( ( \
82 (R_TYPE(x) == REL_FUNCDESC_VAL) || \
83 (R_TYPE(x) == REL_SYMBOLIC) ) \
84 && (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION) )
85#endif
86
87#ifndef NEED_MIPS_GOT_RELOCS
88#define NEED_MIPS_GOT_RELOCS 0
89#endif
90
91#ifndef DT_DEBUG_INDIRECT
92#define DT_DEBUG_INDIRECT 0
93#endif
94
95#define AUX_CNT 32
96#define DYN_CNT 32
97
98typedef void (*stage2_func)(unsigned char *, size_t *);
d4db3fa2 99typedef void (*stage3_func)(size_t *);
320054e8
DG
100
101hidden void *__dlsym(void *restrict, const char *restrict, void *restrict);
102
103hidden void __dl_seterr(const char *, ...);
104hidden int __dl_invalid_handle(void *);
105hidden void __dl_vseterr(const char *, va_list);
106
107hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
108
109#endif