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