summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-09-17 18:51:57 +0000
committerRich Felker <dalias@aerifal.cx>2015-09-17 18:51:57 +0000
commiteb567c12cd4cafa66fd1ed3fdb97af7e70222118 (patch)
treec17f184d8b3619c91094b790dcd1bf5059523a30 /src/internal
parenta735f53e6ab094bce9b992dd3d3127fdb4ffdcc2 (diff)
downloadmusl-eb567c12cd4cafa66fd1ed3fdb97af7e70222118.tar.gz
add fdpic structs and reloc types for dynamic linking
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/dynlink.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/internal/dynlink.h b/src/internal/dynlink.h
index 8621d2dd..369f183e 100644
--- a/src/internal/dynlink.h
+++ b/src/internal/dynlink.h
@@ -36,6 +36,17 @@ enum {
REL_TPOFF,
REL_TPOFF_NEG,
REL_TLSDESC,
+ REL_FUNCDESC,
+ REL_FUNCDESC_VAL,
+};
+
+struct fdpic_loadseg {
+ uintptr_t addr, p_vaddr, p_memsz;
+};
+
+struct fdpic_loadmap {
+ unsigned short version, nsegs;
+ struct fdpic_loadseg segs[];
};
#include "reloc.h"
@@ -44,6 +55,11 @@ enum {
(R_TYPE(x) == REL_RELATIVE) || \
(R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)) )
+#define IS_FDPIC_RELATIVE(x,s) ( ( \
+ (R_TYPE(x) == REL_FUNCDESC_VAL) || \
+ (R_TYPE(x) == REL_SYMBOLIC) ) \
+ && (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION) )
+
#ifndef NEED_MIPS_GOT_RELOCS
#define NEED_MIPS_GOT_RELOCS 0
#endif