/* * Getting started with libelf. * * $Id: prog1.txt 2133 2011-11-10 08:28:22Z jkoshy $ */ #include #include #include @\co{1}@ #include #include #include int main(int argc, char **argv) { int fd; Elf *e; @\co{2}@ char *k; Elf_Kind ek; @\co{3}@ if (argc != 2) errx(EXIT_FAILURE, "usage: %s file-name", argv[0]); if (elf_version(EV_CURRENT) == EV_NONE) @\co{4}@ errx(EXIT_FAILURE, "ELF library initialization " "failed: %s", elf_errmsg(-1)); if ((fd = open(argv[1], O_RDONLY, 0)) < 0) err(EXIT_FAILURE, "open \%s\" failed", argv[1]); if ((e = elf_begin(fd, ELF_C_READ@\co{5}@, NULL)) == NULL) errx(EXIT_FAILURE, "elf_begin() failed: %s.", elf_errmsg(-1)); @\co{6}@ ek = elf_kind(e); @\co{7}@ switch (ek) { case ELF_K_AR: k = "ar(1) archive"; break; case ELF_K_ELF: k = "elf object"; break; case ELF_K_NONE: k = "data"; break; default: k = "unrecognized"; } (void) printf("%s: %s\n", argv[1], k); (void) elf_end(e); @\co{8}@ (void) close(fd); exit(EXIT_SUCCESS); }