aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--src/arch-x86_64.c7
2 files changed, 14 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index ac9a5fd..808a69f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2017-06-20 Andrew Stubbs <ams@codesourcery.com>
+ * src/arch-x86_64.c (x86_64_prelink_conflict_rela): Also convert
+ R_X86_64_32 conflicts to R_X86_64_IRELATIVE for ifuncs.
+ * src/arch-x86_64.c (PL_ARCH(x32)): Set mmap_end to 0x60000000.
+
+2017-06-20 Joseph Myers <joseph@codesourcery.com>
+ * src/rtld/rtld.c (load_ld_so_conf): Add argument use_x32.
+ (main): Update call to load_ld_so_conf.
+
+2017-06-20 Kyle Russell <bkylerussell@gmail.com>
+ * src/rtld/rtld.c: Add missing DT_NEEDED DSOs to needed_list
+
2017-06-20 Mark Hatle <mark.hatle@windriver.com>
* doc/Makefile.am: Disable automatic generation of prelink.pdf
* Merge with cross_prelink
diff --git a/src/arch-x86_64.c b/src/arch-x86_64.c
index dae66cd..5c95f47 100644
--- a/src/arch-x86_64.c
+++ b/src/arch-x86_64.c
@@ -332,16 +332,13 @@ x86_64_prelink_conflict_rela (DSO *dso, struct prelink_info *info,
ret->r_info = GELF_R_INFO (0, (gelf_getclass (dso->elf) == ELFCLASS32 ? R_X86_64_32 : R_X86_64_64));
/* FALLTHROUGH */
case R_X86_64_JUMP_SLOT:
+ case R_X86_64_32:
case R_X86_64_64:
case R_X86_64_IRELATIVE:
ret->r_addend = value + rela->r_addend;
if (conflict != NULL && conflict->ifunc)
ret->r_info = GELF_R_INFO (0, R_X86_64_IRELATIVE);
break;
- case R_X86_64_32:
- value += rela->r_addend;
- ret->r_addend = value;
- break;
case R_X86_64_PC32:
ret->r_addend = value + rela->r_addend - rela->r_offset;
ret->r_info = GELF_R_INFO (0, R_X86_64_32);
@@ -598,7 +595,7 @@ PL_ARCH(x32) = {
Also, if this guard area isn't too small, typically
even dlopened libraries will get the slots they desire. */
.mmap_base = 0x41000000,
- .mmap_end = 0x50000000,
+ .mmap_end = 0x60000000,
.max_page_size = 0x200000,
.page_size = 0x1000
};