X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=arch%2Fmips%2Freloc.h;fp=arch%2Fmips%2Freloc.h;h=76df112a6a5f727d9f3ad9b4ab917c0e4449bd2e;hp=0000000000000000000000000000000000000000;hb=6315004f6102dca44c4ba50654a36967b8b9c2a6;hpb=cd8d72451662f0157d06fcf666669db543dcea3b diff --git a/arch/mips/reloc.h b/arch/mips/reloc.h new file mode 100644 index 00000000..76df112a --- /dev/null +++ b/arch/mips/reloc.h @@ -0,0 +1,23 @@ +#include +#include + +#define ETC_LDSO_PATH "/etc/ld-musl-mips.path" + +#define IS_COPY(x) ((x)==R_MIPS_COPY) +#define IS_PLT(x) ((x)==R_MIPS_JUMP_SLOT) + +static inline void do_single_reloc(size_t *reloc_addr, int type, size_t sym_val, size_t sym_size, unsigned char *base_addr, size_t addend) +{ + switch(type) { + case R_MIPS_JUMP_SLOT: + *reloc_addr = sym_val; + break; + case R_MIPS_REL32: + // FIXME: how do symbolic relocs come in here ? + *reloc_addr += (size_t)base_addr; + break; + case R_MIPS_COPY: + memcpy(reloc_addr, (void *)sym_val, sym_size); + break; + } +}