[pushed/gdb-9-branch] libctf: compilation failure on MinGW due to missing errno values

Joel Brobecker brobecker@adacore.com
Sat Feb 1 11:31:00 GMT 2020


From: Eli Zaretskii <eliz@gnu.org>

Hello,

Just a quick email to confirm that I pushed this patch to
the gdb-9-branch, to prepare for the GDB 9 release. Initially,
we wanted to release this week, but we found last minute an
issue which is serious-enough to hold the release.

---------------------------------------------------------------------------

This commit fixes a compilation failure in a couple of libctf files
due to the use of EOVERFLOW and ENOTSUP, which are not defined
when compiling on MinGW.

libctf/ChangeLog:

	PR binutils/25155:
	* ctf-create.c (EOVERFLOW): If not defined by system header,
	redirect to ERANGE as a poor man's substitute.
	* ctf-subr.c (ENOTSUP): If not defined, use ENOSYS instead.

This one is how Eli implemented it. I think this implementation
has a weakness in the following sense: If other units in libctf
start using those constants, we'll get the same error again.
Also, I'm wondering whether their use is documented as part of
the official libtcf API or not -- users might be writing code
that tests for these, and if the system doesn't support them,
how would they know what errno code to use in its place. This
argues for a having that information in one of libctf's header
files. I think it would be nice to have those in ctf-decls.h,
but I think we'll need to include <errno.h> in ctf-decls.h if
we decide to define those macros there.

Rather than second-guess what the CTF developers would prefer,
I'm starting by sending Eli's patch, to see what you guys think.

---
 libctf/ChangeLog    | 7 +++++++
 libctf/ctf-create.c | 4 ++++
 libctf/ctf-subr.c   | 4 ++++
 3 files changed, 15 insertions(+)

diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 5843cd92e1e..940f4022e15 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,10 @@
+2020-02-01  Eli Zaretskii  <eliz@gnu.org>
+
+	PR binutils/25155:
+	* ctf-create.c (EOVERFLOW): If not defined by system header,
+	redirect to ERANGE as a poor man's substitute.
+	* ctf-subr.c (ENOTSUP): If not defined, use ENOSYS instead.
+
 2020-01-05  Joel Brobecker  <brobecker@adacore.com>
 
 	PR binutils/25155:
diff --git a/libctf/ctf-create.c b/libctf/ctf-create.c
index fa40100c770..84aa4526a30 100644
--- a/libctf/ctf-create.c
+++ b/libctf/ctf-create.c
@@ -23,6 +23,10 @@
 #include <string.h>
 #include <zlib.h>
 
+#ifndef EOVERFLOW
+#define EOVERFLOW ERANGE
+#endif
+
 #ifndef roundup
 #define roundup(x, y)  ((((x) + ((y) - 1)) / (y)) * (y))
 #endif
diff --git a/libctf/ctf-subr.c b/libctf/ctf-subr.c
index 6bd7f10aeea..cc275c507c9 100644
--- a/libctf/ctf-subr.c
+++ b/libctf/ctf-subr.c
@@ -26,6 +26,10 @@
 #include <string.h>
 #include <unistd.h>
 
+#ifndef ENOTSUP
+#define ENOTSUP ENOSYS
+#endif
+
 int _libctf_version = CTF_VERSION;	      /* Library client version.  */
 int _libctf_debug = 0;			      /* Debugging messages enabled.  */
 
-- 
2.17.1



More information about the Gdb-patches mailing list