https://gcc.gnu.org/g:962c3d69f189f6fa451153faf3ce261c50d23d5a

commit r15-9413-g962c3d69f189f6fa451153faf3ce261c50d23d5a
Author: Rainer Orth <r...@cebitec.uni-bielefeld.de>
Date:   Sun Apr 13 12:53:54 2025 +0200

    cobol: Avoid conflict with timespec_t in system headers [PR119217]
    
    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.
    
    2025-04-08  Rainer Orth  <r...@cebitec.uni-bielefeld.de>
    
            gcc/cobol:
            PR cobol/119217
            * util.cc (class timespec_t): Rename to cbl_timespec.

Diff:
---
 gcc/cobol/util.cc | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
index f7b89b817ccc..f28fddf6c8f7 100644
--- a/gcc/cobol/util.cc
+++ b/gcc/cobol/util.cc
@@ -2099,20 +2099,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;
 }
 
@@ -2125,11 +2125,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();

Reply via email to