diff options
Diffstat (limited to 'trunk/src/ld-libs.c')
-rw-r--r-- | trunk/src/ld-libs.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/trunk/src/ld-libs.c b/trunk/src/ld-libs.c index d14b7b7..f36eee1 100644 --- a/trunk/src/ld-libs.c +++ b/trunk/src/ld-libs.c @@ -302,7 +302,7 @@ free_path (struct search_path *path) } void -load_ld_so_conf (int use_64bit) +load_ld_so_conf (int use_64bit, int use_mipsn32) { int fd; FILE *conf; @@ -319,6 +319,13 @@ load_ld_so_conf (int use_64bit) add_dir (&ld_dirs, "/usr/lib64/tls", strlen ("/usr/lib64/tls")); add_dir (&ld_dirs, "/usr/lib64", strlen ("/usr/lib64")); } + else if (use_mipsn32) + { + add_dir (&ld_dirs, "/lib32/tls", strlen ("/lib32/tls")); + add_dir (&ld_dirs, "/lib32", strlen ("/lib32")); + add_dir (&ld_dirs, "/usr/lib32/tls", strlen ("/usr/lib32/tls")); + add_dir (&ld_dirs, "/usr/lib32", strlen ("/usr/lib32")); + } else { add_dir (&ld_dirs, "/lib/tls", strlen ("/lib/tls")); @@ -1235,7 +1242,8 @@ main(int argc, char **argv) if (dso == NULL) error (1, errno, "Could not open %s", argv[remaining]); - load_ld_so_conf (gelf_getclass (dso->elf) == ELFCLASS64); + load_ld_so_conf (gelf_getclass (dso->elf) == ELFCLASS64, + ( dso->ehdr.e_machine == EM_MIPS) && ( dso->ehdr.e_flags & EF_MIPS_ABI2 ) ); if (multiple) printf ("%s:\n", argv[remaining]); |