diff options
Diffstat (limited to 'tests/allfcts.c')
| -rw-r--r-- | tests/allfcts.c | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/tests/allfcts.c b/tests/allfcts.c index d3c8d26a..30609efb 100644 --- a/tests/allfcts.c +++ b/tests/allfcts.c @@ -18,12 +18,14 @@ # include <config.h> #endif -#include <err.h> +#include <errno.h> #include <fcntl.h> #include ELFUTILS_HEADER(dw) #include ELFUTILS_HEADER(dwelf) #include <stdio.h> #include <unistd.h> +#include <stdlib.h> +#include <string.h> static int @@ -47,16 +49,24 @@ setup_alt (Dwarf *main) ssize_t ret = dwelf_dwarf_gnu_debugaltlink (main, &alt_name, &build_id); if (ret == 0) return NULL; - if (ret == -1) - errx (1, "dwelf_dwarf_gnu_debugaltlink: %s", dwarf_errmsg (-1)); - int fd = open (alt_name, O_RDONLY); - if (fd < 0) - err (1, "open (%s)", alt_name); + if (ret == -1) { + fprintf (stderr, "allfcts: dwelf_dwarf_gnu_debugaltlink: %s\n", dwarf_errmsg (-1)); + exit(1); + } + int fd = open (alt_name, O_RDONLY | O_BINARY); + if (fd < 0) { + fprintf (stderr, "allfcts: open (%s): %s\n", alt_name, strerror(errno)); + exit(1); + } Dwarf *dbg_alt = dwarf_begin (fd, DWARF_C_READ); - if (dbg_alt == NULL) - errx (1, "dwarf_begin (%s): %s", alt_name, dwarf_errmsg (-1)); - if (elf_cntl (dwarf_getelf (dbg_alt), ELF_C_FDREAD) != 0) - errx (1, "elf_cntl (%s, ELF_C_FDREAD): %s", alt_name, elf_errmsg (-1)); + if (dbg_alt == NULL) { + fprintf (stderr, "dwarf_begin (%s): %s\n", alt_name, dwarf_errmsg (-1)); + exit(1); + } + if (elf_cntl (dwarf_getelf (dbg_alt), ELF_C_FDREAD) != 0) { + fprintf (stderr, "elf_cntl (%s, ELF_C_FDREAD): %s\n", alt_name, elf_errmsg (-1)); + exit(1); + } close (fd); dwarf_setalt (main, dbg_alt); return dbg_alt; @@ -67,9 +77,11 @@ main (int argc, char *argv[]) { for (int i = 1; i < argc; ++i) { - int fd = open (argv[i], O_RDONLY); - if (fd < 0) - err (1, "open (%s)", argv[i]); + int fd = open (argv[i], O_RDONLY | O_BINARY); + if (fd < 0) { + fprintf (stderr, "open (%s): %s\n", argv[i], strerror(errno)); + exit(1); + } Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); if (dbg != NULL) @@ -89,9 +101,11 @@ main (int argc, char *argv[]) do { doff = dwarf_getfuncs (die, cb, NULL, doff); - if (dwarf_errno () != 0) - errx (1, "dwarf_getfuncs (%s): %s", - argv[i], dwarf_errmsg (-1)); + if (dwarf_errno () != 0) { + fprintf (stderr, "dwarf_getfuncs (%s): %s\n", + argv[i], dwarf_errmsg (-1)); + exit(1); + } } while (doff != 0); @@ -102,7 +116,10 @@ main (int argc, char *argv[]) dwarf_end (dbg); } else - errx (1, "dwarf_begin (%s): %s", argv[i], dwarf_errmsg (-1)); + { + fprintf (stderr, "dwarf_begin (%s): %s\n", argv[i], dwarf_errmsg (-1)); + exit(1); + } close (fd); } |
