util.cc doesn't compile on Solaris:
/vol/gcc/src/hg/master/local/gcc/cobol/util.cc:2135:7: error: using
typedef-name ‘timespec_t’ after ‘class’
2135 | class timespec_t {
| ^~~~~~~~~~
This happens because <time.h> declares timespec_t itself. In fact,
POSIX.1 reserves every *_t identifier, so this is benign.
To avoid the problem, this patch renames the cobol timespec_t to
cbl_timespec.
Bootstrapped without regressions on amd64-pc-solaris2.11,
sparcv9-sun-solaris2.11, and x86_64-pc-linux-gnu.
Ok for trunk?
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2025-04-08 Rainer Orth <[email protected]>
gcc/cobol:
PR cobol/119217
* util.cc (class timespec_t): Rename to cbl_timespec.
# HG changeset patch
# Parent a197b84b9d8ad6e9e48f7d6f99e686f84406364e
cobol: Avoid conflict with timespec_t in system headers [PR119217]
diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
--- a/gcc/cobol/util.cc
+++ b/gcc/cobol/util.cc
@@ -2132,20 +2132,20 @@ cobol_fileline_set( const char line[] )
return file.name;
}
-class timespec_t {
+class cbl_timespec {
struct timespec now;
public:
- timespec_t() {
+ cbl_timespec() {
clock_gettime(CLOCK_MONOTONIC, &now);
}
double ns() const {
return now.tv_sec * 1000000000 + now.tv_nsec;
}
- friend double operator-( const timespec_t& now, const timespec_t& then );
+ friend double operator-( const cbl_timespec& now, const cbl_timespec& then );
};
double
-operator-( const timespec_t& then, const timespec_t& now ) {
+operator-( const cbl_timespec& then, const cbl_timespec& now ) {
return (now.ns() - then.ns()) / 1000000000;
}
@@ -2158,11 +2158,11 @@ parse_file( const char filename[] )
parser_enter_file(filename);
- timespec_t start;
+ cbl_timespec start;
int erc = yyparse();
- timespec_t finish;
+ cbl_timespec finish;
double dt = finish - start;
parser_leave_file();