summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/dynlink.c2
-rw-r--r--src/internal/dynlink.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/ldso/dynlink.c b/ldso/dynlink.c
index 87f3b7f8..e458f386 100644
--- a/ldso/dynlink.c
+++ b/ldso/dynlink.c
@@ -1134,7 +1134,7 @@ static void do_mips_relocs(struct dso *p, size_t *got)
Sym *sym = p->syms + j;
rel[0] = (unsigned char *)got - base;
for (i-=j; i; i--, sym++, rel[0]+=sizeof(size_t)) {
- rel[1] = sym-p->syms << 8 | R_MIPS_JUMP_SLOT;
+ rel[1] = R_INFO(sym-p->syms, R_MIPS_JUMP_SLOT);
do_relocs(p, rel, sizeof rel, 2);
}
}
diff --git a/src/internal/dynlink.h b/src/internal/dynlink.h
index 48890b2d..5717627a 100644
--- a/src/internal/dynlink.h
+++ b/src/internal/dynlink.h
@@ -11,12 +11,14 @@ typedef Elf32_Phdr Phdr;
typedef Elf32_Sym Sym;
#define R_TYPE(x) ((x)&255)
#define R_SYM(x) ((x)>>8)
+#define R_INFO ELF32_R_INFO
#else
typedef Elf64_Ehdr Ehdr;
typedef Elf64_Phdr Phdr;
typedef Elf64_Sym Sym;
#define R_TYPE(x) ((x)&0x7fffffff)
#define R_SYM(x) ((x)>>32)
+#define R_INFO ELF64_R_INFO
#endif
/* These enum constants provide unmatchable default values for