123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* adapted from Eric Youngdale's readelf program */
- #include <stdio.h>
- #include <string.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- #include <link.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include "dl-elf.h"
- #include "readsoname.h"
- void warn(char *fmt, ...);
- char *xstrdup(char *);
- struct needed_tab
- {
- char *soname;
- int type;
- };
- struct needed_tab needed_tab[] = {
- { "libc.so.0", LIB_ELF_LIBC0 },
- { "libm.so.0", LIB_ELF_LIBC0 },
- { "libdl.so.0", LIB_ELF_LIBC0 },
- { "libc.so.5", LIB_ELF_LIBC5 },
- { "libm.so.5", LIB_ELF_LIBC5 },
- { "libdl.so.1", LIB_ELF_LIBC5 },
- { "libc.so.6", LIB_ELF_LIBC6 },
- { "libm.so.6", LIB_ELF_LIBC6 },
- { "libdl.so.2", LIB_ELF_LIBC6 },
- { NULL, LIB_ELF }
- };
- char *readsoname(char *name, FILE *infile, int expected_type,
- int *type, int elfclass)
- {
- char *res;
- if (elfclass == ELFCLASS32)
- res = readsoname32(name, infile, expected_type, type);
- else
- {
- res = readsoname64(name, infile, expected_type, type);
- #if 0
- *type |= LIB_ELF64;
- #endif
- }
- return res;
- }
- #undef __ELF_NATIVE_CLASS
- #undef readsonameXX
- #define readsonameXX readsoname32
- #define __ELF_NATIVE_CLASS 32
- #include "readsoname2.c"
- #undef __ELF_NATIVE_CLASS
- #undef readsonameXX
- #define readsonameXX readsoname64
- #define __ELF_NATIVE_CLASS 64
- #include "readsoname2.c"
|