The libgcobol build is broken again on Solaris:

/vol/gcc/src/hg/master/local/libgcobol/libgcobol.cc: In function ‘void 
default_exception_handler(ec_type_t)’:
/vol/gcc/src/hg/master/local/libgcobol/libgcobol.cc:11196:44: error: 
‘LOG_PERROR’ was not declared in this scope; did you mean ‘LOG_ERR’?
11196 |   static int priority = LOG_INFO, option = LOG_PERROR, facility = 
LOG_USER;
      |                                            ^~~~~~~~~~
      |                                            LOG_ERR
/vol/gcc/src/hg/master/local/libgcobol/libgcobol.cc:11202:28: error: ‘facility’ 
was not declared in this scope
11202 |     openlog(ident, option, facility);
      |                            ^~~~~~~~

LOG_PERROR is a BSD extension not present on Solaris due to its System V
heritage, and Linux syslog(3) documents:

       LOG_PERROR     (Not in POSIX.1-2001 or  POSIX.1-2008.)   Also  log  the
                      message to stderr.

This patch provides a fallback definition, just the minimum to unbreak
the build.

Tested on amd64-pc-solaris2.11, sparcv9-sun-solaris2.11, and
x86_64-pc-linux-gnu.

Before going further, I'd first like to understand why you chose to use
syslog in a runtime lib.  While logging to syslog is certainly useful in
daemons and such, a runtime lib is different IMO: while regular users
can log to syslog, access to the log files is usually restricted to
privileged users.  Besides, on multiuser systems those log entries just
spam the system logs for no gain apparent to me.  On top of that, the
format of the `log to stderr' part now becomes platform dependent, since
the details are a system implementation detail even on platforms that do
support LOG_PERROR.

That said, if it's really considered crucial that libgcobol continues to
log to syslog, one could do something like introduce, say,
syslog_and_perror which uses just syslog with LOG_PERROR on platforms
that support LOG_PERROR and syslog + warnx (as the code did before the
EH rewrite) on those that don't.

Thoughts?

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2025-05-12  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        libgcobol:
        * libgcobol.cc {!LOG_PERROR] (LOG_PERROR): Provide fallback.

# HG changeset patch
# Parent  7145de7034bb3320053600c88702733ae9c6b14c
libgcobol: Allow for lack of LOG_PERROR

diff --git a/libgcobol/libgcobol.cc b/libgcobol/libgcobol.cc
--- a/libgcobol/libgcobol.cc
+++ b/libgcobol/libgcobol.cc
@@ -75,6 +75,11 @@
 
 #include "exceptl.h"
 
+/* BSD extension.  */
+#if !defined(LOG_PERROR)
+#define LOG_PERROR 0
+#endif
+
 #if !defined (HAVE_STRFROMF32)
 # if __FLT_MANT_DIG__ == 24 && __FLT_MAX_EXP__ == 128
 static int

Reply via email to