https://gcc.gnu.org/g:1df8fffba30bf4022dda762bf61acf16ac704c67

commit r16-469-g1df8fffba30bf4022dda762bf61acf16ac704c67
Author: Rainer Orth <r...@cebitec.uni-bielefeld.de>
Date:   Thu May 8 09:39:26 2025 +0200

    cobol: Allow for undefined NAME_MAX [PR119217]
    
    All users of symbols.h fail to compile on Solaris:
    
    /vol/gcc/src/hg/master/local/gcc/cobol/symbols.h: At global scope:
    /vol/gcc/src/hg/master/local/gcc/cobol/symbols.h:1365:13: error: ‘NAME_MAX’ 
was not declared in this scope
     1365 |   char name[NAME_MAX];
          |             ^~~~~~~~
    
    NAME_MAX being undefined is allowed by POSIX.1, actually: it's listed
    for <limits.h> under "Pathname Variable Values":
    
    A definition of one of the symbolic constants in the following list
    shall be omitted from the <limits.h> header on specific implementations
    where the corresponding value is equal to or greater than the stated
    minimum, but where the value can vary depending on the file to which it
    is applied. The actual value supported for a specific pathname shall be
    provided by the pathconf() function.
    
    As a hack, this patch provides a fallback definition to allow the build
    to finish.   In fact it turned out that cbl_funtion_t.name isn't filename
    related and never set at all, so this patch serves as a mere stopgap fix
    to unbreak the build until a real solution can be figured out.
    
    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
            * symbols.h (NAME_MAX): Define fallback.

Diff:
---
 gcc/cobol/symbols.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/cobol/symbols.h b/gcc/cobol/symbols.h
index adfa8d979b2f..50c5d48ff9f5 100644
--- a/gcc/cobol/symbols.h
+++ b/gcc/cobol/symbols.h
@@ -46,6 +46,11 @@
 #include <string>
 #include <vector>
 
+// Provide fallback definition.
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+
 #define PICTURE_MAX 64
 
 extern const char *numed_message;

Reply via email to