C++ Standard Library
  1. C++ Standard Library
  2. STDCXX-1039

[Como como 4.3.10.1] identifier "_RWSTD_VA_LIST" is undefined when compiling src/assert.cpp

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 4.2.1
    • Fix Version/s: None
    • Component/s: Configuration
    • Labels:
      None
    • Environment:

      Linux Gentoo x86_64 with 32bit Como 4.3.10.1 compiler (gcc -m32 C compiler).

    • Severity:
      Incorrect Behavior

      Description

      The library fails to compile with the error given below. This problem seems to be similar to STDCXX-822.

      como -c -I/opt/src/stdcxx-4.2.1/include/ansi -D_REENTRANT -I/opt/src/stdcxx-4.2.1/include -I/opt/src/stdcxx-4.2.1/build/include -A -x --no_stdarg_builtin --template_directory=/lib -O --display_error_number --diag_suppress 11,450,518 /opt/src/stdcxx-4.2.1/src/assert.cpp
      Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
      Copyright 1988-2008 Comeau Computing. All rights reserved.
      MODE:strict errors C++ noC++0x_extensions

      "/opt/src/stdcxx-4.2.1/include/ansi/_cstdio.h", line 117: warning #867-D:
      declaration of "size_t" does not match the expected type
      "unsigned int"
      typedef unsigned long size_t;
      ^

      "/opt/src/stdcxx-4.2.1/include/ansi/_cstdio.h", line 151: error #20:
      identifier "_RWSTD_VA_LIST" is undefined
      int vfprintf (FILE*, const char*, _RWSTD_VA_LIST);
      ^

      "/opt/src/stdcxx-4.2.1/include/ansi/_cstdio.h", line 152: error #20:
      identifier "_RWSTD_VA_LIST" is undefined
      int vprintf (const char*, _RWSTD_VA_LIST);
      ^

      "/opt/src/stdcxx-4.2.1/include/ansi/_cstdio.h", line 153: error #20:
      identifier "_RWSTD_VA_LIST" is undefined
      int vsprintf (char*, const char*, _RWSTD_VA_LIST);
      ^

      3 errors detected in the compilation of "/opt/src/stdcxx-4.2.1/src/assert.cpp".
      gmake[2]: *** [assert.o] Error 2
      gmake[2]: Leaving directory `/opt/src/stdcxx-4.2.1/build/lib'
      gmake[1]: *** [lib] Error 2
      gmake[1]: Leaving directory `/opt/src/stdcxx-4.2.1/build'
      gmake: *** [libstd] Error 2

      1. como.config
        4 kB
        Jaroslaw Zola
      2. como.config
        4 kB
        Jaroslaw Zola
      3. config.log
        370 kB
        Jaroslaw Zola
      4. config.h
        33 kB
        Jaroslaw Zola
      5. build.log
        630 kB
        Jaroslaw Zola
      6. config.log
        456 kB
        Jaroslaw Zola
      7. config.h
        22 kB
        Jaroslaw Zola
      8. makefile.in
        1 kB
        Jaroslaw Zola

        Activity

        Jaroslaw Zola created issue -
        Jaroslaw Zola made changes -
        Field Original Value New Value
        Attachment makefile.in [ 12416576 ]
        Attachment config.h [ 12416577 ]
        Attachment config.log [ 12416578 ]
        Hide
        Martin Sebor added a comment -

        From the following error copied from the attached config.log file It looks like the compiler doesn't like gcc's __builtin_va_list. The --no_stdarg_builtin option on the command line seems like a likely cause of the error. We don't use the option with EDG eccp (see eccp.config ) which the Comeau compiler is based on so I wonder if fixing this is a simple matter of removing the option from como.config . I don't have the Comeau compiler installed so I suggest you give this a try and let us know how far you get. If the problem persists or you run into additional issues one quick thing to try might be to use eccp.config instead, or make incremental changes to como.config to bring it up to date with eccp.config.

        como -c -DCHECK_DECL -A -x --no_stdarg_builtin --template_directory=/lib -O  \
             --display_error_number --diag_suppress 11,450,518  \
             -DHDRNAME="<stdio.h>" -DFUNNAME=clearerr  -DFUN=clearerr -DTAKE_ADDR=1  \
             /tmp/libc_decl_tmpsrc-26489.cpp -o /tmp/clearerr-26489.o
        Comeau C/C++ 4.3.10.1 (May  7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
        Copyright 1988-2008 Comeau Computing.  All rights reserved.
        MODE:strict errors C++ noC++0x_extensions
        
        "/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/stdarg.h", line 43: error #20: 
                  identifier "__builtin_va_list" is undefined
          typedef __builtin_va_list __gnuc_va_list;
                  ^
        
        1 error detected in the compilation of "/tmp/libc_decl_tmpsrc-26489.cpp".
        
        Show
        Martin Sebor added a comment - From the following error copied from the attached config.log file It looks like the compiler doesn't like gcc's __builtin_va_list . The --no_stdarg_builtin option on the command line seems like a likely cause of the error. We don't use the option with EDG eccp (see eccp.config ) which the Comeau compiler is based on so I wonder if fixing this is a simple matter of removing the option from como.config . I don't have the Comeau compiler installed so I suggest you give this a try and let us know how far you get. If the problem persists or you run into additional issues one quick thing to try might be to use eccp.config instead, or make incremental changes to como.config to bring it up to date with eccp.config . como -c -DCHECK_DECL -A -x --no_stdarg_builtin --template_directory=/lib -O \ --display_error_number --diag_suppress 11,450,518 \ -DHDRNAME="<stdio.h>" -DFUNNAME=clearerr -DFUN=clearerr -DTAKE_ADDR=1 \ /tmp/libc_decl_tmpsrc-26489.cpp -o /tmp/clearerr-26489.o Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta Copyright 1988-2008 Comeau Computing. All rights reserved. MODE:strict errors C++ noC++0x_extensions "/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/stdarg.h", line 43: error #20: identifier "__builtin_va_list" is undefined typedef __builtin_va_list __gnuc_va_list; ^ 1 error detected in the compilation of "/tmp/libc_decl_tmpsrc-26489.cpp".
        Hide
        Jaroslaw Zola added a comment -

        After playing a little with my compiler (e.g. float.h in Como has LDBL_MAX incorrectly defined) I was able to come up with the attached config.
        It seems it is possible at least partially to get stdcxx compiled. Now it is failing on examples (see build.log). Sometime soon I hope to be able to work on this issue.

        Show
        Jaroslaw Zola added a comment - After playing a little with my compiler (e.g. float.h in Como has LDBL_MAX incorrectly defined) I was able to come up with the attached config. It seems it is possible at least partially to get stdcxx compiled. Now it is failing on examples (see build.log). Sometime soon I hope to be able to work on this issue.
        Jaroslaw Zola made changes -
        Attachment build.log [ 12416716 ]
        Attachment como.config [ 12416717 ]
        Attachment config.h [ 12416718 ]
        Jaroslaw Zola made changes -
        Attachment como.config [ 12416717 ]
        Jaroslaw Zola made changes -
        Attachment config.log [ 12416719 ]
        Jaroslaw Zola made changes -
        Attachment como.config [ 12416720 ]
        Hide
        Martin Sebor added a comment - - edited

        AFAICS, the first linker error is in the localedef utility due to unsatisfied references to implicit instantiations of the std::vector primary template. The argument to the --template_directory option should be the same as that to the -L option, i.e., $BUILDDIR/lib (or $INSTALLDIR/lib when linking with an already installed library), but it's /lib instead. Check the value of CXXFLAGS in makefile.in.

        como localedef.o locale.o aliases.o charmap.o codecvt.o collate.o ctype.o def.o diagnostic.o \
             memchk.o messages.o monetary.o numeric.o path.o time.o scanner.o \
            -o localedef --template_directory=/lib  -lpthread  -L/opt/src/stdcxx-4.2.1/build/lib  -lstd12s  -lm
        [...]
        C++ prelinker: executing: /opt/bin/realcomo -c --version --display_mode --wchar_t_keyword \
            --bool --enum_overloading --explicit --typename --extern_inline --new_for_init --exceptions \
            --export --alternative_tokens --diag_suppress=161 -I/opt/src/stdcxx-4.2.1/include/ansi \
            -D_REENTRANT -I/opt/src/stdcxx-4.2.1/include -I/opt/src/stdcxx-4.2.1/build/include \
            -A -x --long_long --template_directory=/lib -O --display_error_number \
            --diag_suppress 111,177,228,236,549,550,830 /opt/src/stdcxx-4.2.1/util/locale.cpp
        Comeau C/C++ 4.3.10.1 (May  7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
        Copyright 1988-2008 Comeau Computing.  All rights reserved.
        MODE:strict errors C++ noC++0x_extensions
        [...]
        aliases.o: In function `get_installed_locales(int)':
        aliases.int.c:(.text+0x3de): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
        localedef.o: In function `std::vector<std::string>::~vector()':
        localedef.int.c:(.text+0x516): undefined reference to `std::vector<std::string>::_C_destroy(std::string*)'
        [...]
        localedef.o: In function `std::vector<Charmap*>::push_back(Charmap* const&)':
        localedef.int.c:(.text+0x6b3): undefined reference to `std::vector<Charmap*>::_C_insert_1(Charmap** const&, Charmap* const&)'
        localedef.o: In function `std::vector<Charmap*>::~vector()':
        localedef.int.c:(.text+0x7b9): undefined reference to `std::vector<Charmap*>::_C_destroy(Charmap**)'
        [...]
        
        Show
        Martin Sebor added a comment - - edited AFAICS, the first linker error is in the localedef utility due to unsatisfied references to implicit instantiations of the std::vector primary template. The argument to the --template_directory option should be the same as that to the -L option, i.e., $BUILDDIR/lib (or $INSTALLDIR/lib when linking with an already installed library), but it's /lib instead. Check the value of CXXFLAGS in makefile.in . como localedef.o locale.o aliases.o charmap.o codecvt.o collate.o ctype.o def.o diagnostic.o \ memchk.o messages.o monetary.o numeric.o path.o time.o scanner.o \ -o localedef --template_directory=/lib -lpthread -L/opt/src/stdcxx-4.2.1/build/lib -lstd12s -lm [...] C++ prelinker: executing: /opt/bin/realcomo -c --version --display_mode --wchar_t_keyword \ --bool --enum_overloading --explicit --typename --extern_inline --new_for_init --exceptions \ --export --alternative_tokens --diag_suppress=161 -I/opt/src/stdcxx-4.2.1/include/ansi \ -D_REENTRANT -I/opt/src/stdcxx-4.2.1/include -I/opt/src/stdcxx-4.2.1/build/include \ -A -x --long_long --template_directory=/lib -O --display_error_number \ --diag_suppress 111,177,228,236,549,550,830 /opt/src/stdcxx-4.2.1/util/locale.cpp Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta Copyright 1988-2008 Comeau Computing. All rights reserved. MODE:strict errors C++ noC++0x_extensions [...] aliases.o: In function `get_installed_locales(int)': aliases.int.c:(.text+0x3de): warning: the use of `tmpnam' is dangerous, better use `mkstemp' localedef.o: In function `std::vector<std::string>::~vector()': localedef.int.c:(.text+0x516): undefined reference to `std::vector<std::string>::_C_destroy(std::string*)' [...] localedef.o: In function `std::vector<Charmap*>::push_back(Charmap* const&)': localedef.int.c:(.text+0x6b3): undefined reference to `std::vector<Charmap*>::_C_insert_1(Charmap** const&, Charmap* const&)' localedef.o: In function `std::vector<Charmap*>::~vector()': localedef.int.c:(.text+0x7b9): undefined reference to `std::vector<Charmap*>::_C_destroy(Charmap**)' [...]
        Hide
        Jaroslaw Zola added a comment - - edited

        After changing como.config to include remarks by Martin (como.config attached) the library compiles and can be installed. It fails, however, the same way as EDG reported here STDCXX-592.

        Show
        Jaroslaw Zola added a comment - - edited After changing como.config to include remarks by Martin (como.config attached) the library compiles and can be installed. It fails, however, the same way as EDG reported here STDCXX-592 .
        Jaroslaw Zola made changes -
        Attachment como.config [ 12418023 ]
        Hide
        Martin Sebor added a comment -

        I haven't spent too much time analyzing STDCXX-592 but it feels like a compiler problem. IIRC, it goes away when the export feature is disabled, making it hard to isolate to a small standalone test case. In your build, does it affect any other programs besides the three stdcxx examples, codecvt.cpp, collate.cpp, and ctype.cpp?

        Show
        Martin Sebor added a comment - I haven't spent too much time analyzing STDCXX-592 but it feels like a compiler problem. IIRC, it goes away when the export feature is disabled, making it hard to isolate to a small standalone test case. In your build, does it affect any other programs besides the three stdcxx examples, codecvt.cpp , collate.cpp , and ctype.cpp ?
        Hide
        Jaroslaw Zola added a comment -

        It looks like only these three files are affected.

        Show
        Jaroslaw Zola added a comment - It looks like only these three files are affected.

          People

          • Assignee:
            Unassigned
            Reporter:
            Jaroslaw Zola
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development