Cross-prelink's prelink-rtld is missing suport for the /libx32 directory used with the x86_64 x32 ABI. This patch adds such support.
2016-09-14 Joseph Myers <jos...@codesourcery.com> * src/rtld/rtld.c (load_ld_so_conf): Add argument use_x32. (main): Update call to load_ld_so_conf. diff --git a/src/rtld/rtld.c b/src/rtld/rtld.c index 8d7d760..2d72083 100644 --- a/src/rtld/rtld.c +++ b/src/rtld/rtld.c @@ -409,7 +409,7 @@ free_path (struct search_path *path) } void -load_ld_so_conf (int use_64bit, int use_mipsn32) +load_ld_so_conf (int use_64bit, int use_mipsn32, int use_x32) { int fd; FILE *conf; @@ -435,6 +435,14 @@ load_ld_so_conf (int use_64bit, int use_mipsn32) add_dir (&ld_dirs, "/usr/lib32/tls", strlen ("/usr/lib32/tls")); add_dir (&ld_dirs, "/usr/lib32", strlen ("/usr/lib32")); } + else if (use_x32) + { + dst_LIB = "libx32"; + add_dir (&ld_dirs, "/libx32/tls", strlen ("/libx32/tls")); + add_dir (&ld_dirs, "/libx32", strlen ("/libx32")); + add_dir (&ld_dirs, "/usr/libx32/tls", strlen ("/usr/libx32/tls")); + add_dir (&ld_dirs, "/usr/libx32", strlen ("/usr/libx32")); + } else { dst_LIB = "lib"; @@ -1195,7 +1203,8 @@ main(int argc, char **argv) } load_ld_so_conf (gelf_getclass (dso->elf) == ELFCLASS64, - ( dso->ehdr.e_machine == EM_MIPS) && ( dso->ehdr.e_flags & EF_MIPS_ABI2 ) ); + ( dso->ehdr.e_machine == EM_MIPS) && ( dso->ehdr.e_flags & EF_MIPS_ABI2 ), + dso->ehdr.e_machine == EM_X86_64 && gelf_getclass (dso->elf) == ELFCLASS32); if (multiple) printf ("%s:\n", argv[remaining]); -- Joseph S. Myers jos...@codesourcery.com -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto