1 #ifndef _INTERNAL_RELOC_H
2 #define _INTERNAL_RELOC_H
10 #if UINTPTR_MAX == 0xffffffff
11 typedef Elf32_Ehdr Ehdr
;
12 typedef Elf32_Phdr Phdr
;
13 typedef Elf32_Sym Sym
;
14 #define R_TYPE(x) ((x)&255)
15 #define R_SYM(x) ((x)>>8)
16 #define R_INFO ELF32_R_INFO
18 typedef Elf64_Ehdr Ehdr
;
19 typedef Elf64_Phdr Phdr
;
20 typedef Elf64_Sym Sym
;
21 #define R_TYPE(x) ((x)&0x7fffffff)
22 #define R_SYM(x) ((x)>>32)
23 #define R_INFO ELF64_R_INFO
26 /* These enum constants provide unmatchable default values for
27 * any relocation type the arch does not use. */
47 struct fdpic_loadseg
{
48 uintptr_t addr
, p_vaddr
, p_memsz
;
51 struct fdpic_loadmap
{
52 unsigned short version
, nsegs
;
53 struct fdpic_loadseg segs
[];
56 struct fdpic_dummy_loadmap
{
57 unsigned short version
, nsegs
;
58 struct fdpic_loadseg segs
[1];
63 #ifndef FDPIC_CONSTDISP_FLAG
64 #define FDPIC_CONSTDISP_FLAG 0
71 #ifndef DL_NOMMU_SUPPORT
72 #define DL_NOMMU_SUPPORT 0
76 #define IS_RELATIVE(x,s) ( \
77 (R_TYPE(x) == REL_RELATIVE) || \
78 (R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)) )
80 #define IS_RELATIVE(x,s) ( ( \
81 (R_TYPE(x) == REL_FUNCDESC_VAL) || \
82 (R_TYPE(x) == REL_SYMBOLIC) ) \
83 && (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION) )
86 #ifndef NEED_MIPS_GOT_RELOCS
87 #define NEED_MIPS_GOT_RELOCS 0
90 #ifndef DT_DEBUG_INDIRECT
91 #define DT_DEBUG_INDIRECT 0
97 typedef void (*stage2_func
)(unsigned char *, size_t *);
98 typedef _Noreturn
void (*stage3_func
)(size_t *);
100 hidden
void *__dlsym(void *restrict
, const char *restrict
, void *restrict
);
102 hidden
void __dl_seterr(const char *, ...);
103 hidden
int __dl_invalid_handle(void *);
104 hidden
void __dl_vseterr(const char *, va_list);
106 hidden
ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();