fprintf() and exit() do the same job and are portable. (v1 was missing the errno.h include in allfcts.c)
Signed-off-by: Ulf Hermann <ulf.herm...@qt.io> --- tests/ChangeLog | 6 ++++++ tests/allfcts.c | 47 ++++++++++++++++++++++++++++++++--------------- tests/buildid.c | 6 +++--- tests/debugaltlink.c | 6 +++--- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 6dab801..c2619d0 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,11 @@ 2017-05-04 Ulf Hermann <ulf.herm...@qt.io> + * allfcts.c: Use fprintf and exit rather than err and errx. + * buildid.c: Likewise. + * debugaltlink.c: Likewise. + +2017-05-04 Ulf Hermann <ulf.herm...@qt.io> + * elfstrmerge.c: Don't fchmod or fchown the output file if fchmod or fchown don't exist. diff --git a/tests/allfcts.c b/tests/allfcts.c index d3c8d26..84ac53d 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)); + if (ret == -1) { + fprintf (stderr, "allfcts: dwelf_dwarf_gnu_debugaltlink: %s\n", dwarf_errmsg (-1)); + exit(1); + } int fd = open (alt_name, O_RDONLY); - if (fd < 0) - err (1, "open (%s)", alt_name); + 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; @@ -68,8 +78,10 @@ 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]); + 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); } diff --git a/tests/buildid.c b/tests/buildid.c index 87c1877..2d33402 100644 --- a/tests/buildid.c +++ b/tests/buildid.c @@ -18,7 +18,6 @@ #include <config.h> #include <assert.h> #include <inttypes.h> -#include <err.h> #include <errno.h> #include ELFUTILS_HEADER(elf) #include ELFUTILS_HEADER(dwelf) @@ -62,8 +61,9 @@ main (int argc, char *argv[]) printf ("%s: <no NT_GNU_BUILD_ID note>\n", file); break; case -1: - errx (1, "dwelf_elf_gnu_build_id (%s): %s", - file, elf_errmsg (-1)); + fprintf (stderr, "dwelf_elf_gnu_build_id (%s): %s\n", + file, elf_errmsg (-1)); + return 1; default: printf ("%s: build ID: ", file); const unsigned char *p = build_id; diff --git a/tests/debugaltlink.c b/tests/debugaltlink.c index 6d97d50..b470e31 100644 --- a/tests/debugaltlink.c +++ b/tests/debugaltlink.c @@ -18,7 +18,6 @@ #include <config.h> #include <assert.h> #include <inttypes.h> -#include <err.h> #include <errno.h> #include ELFUTILS_HEADER(dw) #include ELFUTILS_HEADER(dwelf) @@ -64,8 +63,9 @@ main (int argc, char *argv[]) printf ("%s: <no .gnu_debugaltlink section>\n", file); break; case -1: - errx (1, "dwelf_dwarf_gnu_debugaltlink (%s): %s", - file, dwarf_errmsg (-1)); + fprintf (stderr, "dwelf_dwarf_gnu_debugaltlink (%s): %s\n", + file, dwarf_errmsg (-1)); + return 1; default: printf ("%s: %s, build ID: ", file, name); const unsigned char *p = build_id; -- 2.1.4