Issue Details (XML | Word | Printable)

Key: STDCXX-1039
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Jaroslaw Zola
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

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

Created: 14/Aug/09 05:34 PM   Updated: 08/Sep/09 02:05 AM
Return to search
Component/s: Configuration
Affects Version/s: 4.2.1
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments:
  Size
Text File build.log 2009-08-16 06:11 PM Jaroslaw Zola 630 kB
File Licensed for inclusion in ASF works como.config 2009-08-28 08:12 PM Jaroslaw Zola 4 kB
File Licensed for inclusion in ASF works como.config 2009-08-16 06:13 PM Jaroslaw Zola 4 kB
File config.h 2009-08-16 06:11 PM Jaroslaw Zola 33 kB
File config.h 2009-08-14 05:36 PM Jaroslaw Zola 22 kB
Text File config.log 2009-08-16 06:12 PM Jaroslaw Zola 370 kB
Text File config.log 2009-08-14 05:36 PM Jaroslaw Zola 456 kB
File makefile.in 2009-08-14 05:36 PM Jaroslaw Zola 1 kB
Environment: Linux Gentoo x86_64 with 32bit Como 4.3.10.1 compiler (gcc -m32 C compiler).

Severity: Incorrect Behavior


 Description  « Hide
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



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Martin Sebor added a comment - 14/Aug/09 07:41 PM
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".

Jaroslaw Zola added a comment - 16/Aug/09 06:10 PM
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.

Martin Sebor added a comment - 25/Aug/09 10:14 PM - 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**)'
[...]

Jaroslaw Zola added a comment - 28/Aug/09 08:12 PM - 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.

Martin Sebor added a comment - 29/Aug/09 07:47 PM
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?

Jaroslaw Zola added a comment - 08/Sep/09 02:05 AM
It looks like only these three files are affected.