Sfoglia il codice sorgente

add fdpic structs and reloc types for dynamic linking

Rich Felker 9 anni fa
parent
commit
eb567c12cd
1 ha cambiato i file con 16 aggiunte e 0 eliminazioni
  1. 16 0
      src/internal/dynlink.h

+ 16 - 0
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