diff options
author | Rich Felker <dalias@aerifal.cx> | 2015-09-17 18:51:57 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-09-17 18:51:57 +0000 |
commit | eb567c12cd4cafa66fd1ed3fdb97af7e70222118 (patch) | |
tree | c17f184d8b3619c91094b790dcd1bf5059523a30 /src/internal | |
parent | a735f53e6ab094bce9b992dd3d3127fdb4ffdcc2 (diff) | |
download | musl-eb567c12cd4cafa66fd1ed3fdb97af7e70222118.tar.gz musl-eb567c12cd4cafa66fd1ed3fdb97af7e70222118.tar.bz2 musl-eb567c12cd4cafa66fd1ed3fdb97af7e70222118.tar.xz musl-eb567c12cd4cafa66fd1ed3fdb97af7e70222118.zip |
add fdpic structs and reloc types for dynamic linking
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/dynlink.h | 16 |
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 |