[42/59] libctf: drop error-prone ctf_strerror

Message ID 20200630233146.338613-43-nick.alcock@oracle.com
State New
Headers show
Series
  • Deduplicating CTF linker
Related show

Commit Message

H.J. Lu via Binutils June 30, 2020, 11:31 p.m.
This utility function is almost useless (all it does is casts the result
of a strerror) but has a seriously confusing name.  Over and over again
I have accidentally called it instead of ctf_errmsg, and hidden a
time-bomb for myself in a hard-to-test error-handling path: since
ctf_strerror is just a strerror wrapper, it cannot handle CTF errnos,
unlike ctf_errmsg.  It's astonishingly lucky that none of these errors
have crept into any commits to date.

Fuse it into ctf_errmsg and drop it.

libctf/
	* ctf-impl.h (ctf_strerror): Delete.
	* ctf-subr.c (ctf_strerror): Likewise.
	* ctf-error.c (ctf_errmsg): Stop using ctf_strerror: just use
	strerror directly.
---
 libctf/ctf-error.c | 3 ++-
 libctf/ctf-impl.h  | 1 -
 libctf/ctf-subr.c  | 6 ------
 3 files changed, 2 insertions(+), 8 deletions(-)

-- 
2.27.0.247.g3dff7de930

Patch

diff --git a/libctf/ctf-error.c b/libctf/ctf-error.c
index 1e69672007a..ac42784df65 100644
--- a/libctf/ctf-error.c
+++ b/libctf/ctf-error.c
@@ -19,6 +19,7 @@ 
 
 #include <ctf-impl.h>
 #include <stddef.h>
+#include <string.h>
 
 /* This construct is due to Bruno Haible: much thanks.  */
 
@@ -67,7 +68,7 @@  ctf_errmsg (int error)
   if (error >= ECTF_BASE && (error - ECTF_BASE) < ECTF_NERR)
     str = _ctf_errlist.str + _ctf_erridx[error - ECTF_BASE];
   else
-    str = ctf_strerror (error);
+    str = (const char *) strerror (error);
 
   return (str ? str : "Unknown error");
 }
diff --git a/libctf/ctf-impl.h b/libctf/ctf-impl.h
index 4c8a37c4c26..71b732a2775 100644
--- a/libctf/ctf-impl.h
+++ b/libctf/ctf-impl.h
@@ -548,7 +548,6 @@  extern ssize_t ctf_pread (int fd, void *buf, ssize_t count, off_t offset);
 extern void *ctf_realloc (ctf_file_t *, void *, size_t);
 extern char *ctf_str_append (char *, const char *);
 extern char *ctf_str_append_noerr (char *, const char *);
-extern const char *ctf_strerror (int);
 
 extern ctf_id_t ctf_type_resolve_unsliced (ctf_file_t *, ctf_id_t);
 extern int ctf_type_kind_unsliced (ctf_file_t *, ctf_id_t);
diff --git a/libctf/ctf-subr.c b/libctf/ctf-subr.c
index 0b49ae9fca8..455f18dcffb 100644
--- a/libctf/ctf-subr.c
+++ b/libctf/ctf-subr.c
@@ -122,12 +122,6 @@  ctf_pread (int fd, void *buf, ssize_t count, off_t offset)
   return acc;
 }
 
-const char *
-ctf_strerror (int err)
-{
-  return (const char *) (strerror (err));
-}
-
 /* Set the CTF library client version to the specified version.  If version is
    zero, we just return the default library version number.  */
 int