aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2017-06-20 16:49:58 -0500
committerMark Hatle <mark.hatle@windriver.com>2017-06-20 16:49:58 -0500
commit692dd80b0636dc0942f0800b28f83368cd3dfa38 (patch)
tree89ba5087363d9a6c232eacfb775b2059960be38c
parentaf26c6172013cdd3982579ce4b4c91ec12d63d8d (diff)
parent15e9461b1a1e7424a221201df93d9dd5dc211e22 (diff)
downloadprelink-cross-692dd80b0636dc0942f0800b28f83368cd3dfa38.tar.gz
prelink-cross-692dd80b0636dc0942f0800b28f83368cd3dfa38.tar.bz2
prelink-cross-692dd80b0636dc0942f0800b28f83368cd3dfa38.zip
Merge branch 'cross_prelink_staging' into master_staging
Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Conflicts: src/rtld/rtld.c
-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
};