#3558 closed Bugs (wontfix)
como throws error: the global scope has no snprintf
Reported by: | Owned by: | Gennadiy Rozental | |
---|---|---|---|
Milestone: | Boost 1.41.0 | Component: | test |
Version: | Boost Development Trunk | Severity: | Problem |
Keywords: | como, comeau | Cc: |
Description
Building Boost.Test from trunk (r57142) using Comeau C/C++ 4.3.10.1 gives errors about missing snprintf function:
como-linux.compile.c++ ../../bin.v2/libs/test/build/como-linux/debug/debug.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:non-strict warnings C++ noC++0x_extensions "../../boost/test/impl/debug.ipp", line 320: error: the global scope has no "snprintf" ::snprintf( title_str, sizeof(title_str), "%*s %ld", (int)(dsi.binary_path.end()-it), it, dsi.pid ); ^ "../../boost/test/impl/debug.ipp", line 420: error: the global scope has no "snprintf" ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); ^ "../../boost/test/impl/debug.ipp", line 426: error: the global scope has no "mkstemp" fd_holder cmd_fd( ::mkstemp( cmd_file_name ) ); ^ "../../boost/test/impl/debug.ipp", line 492: error: the global scope has no "snprintf" ::snprintf( dbg_cmd_buff, sizeof(dbg_cmd_buff), "(progn (gdb \"gdb -q -x %s\"))", cmnd_file_name ); ^ "../../boost/test/impl/debug.ipp", line 516: error: the global scope has no "snprintf" ::snprintf( cmd_line_buff, sizeof(cmd_line_buff), "unlink %s;cont;%s%s", ^ "../../boost/test/impl/debug.ipp", line 530: error: the global scope has no "snprintf" ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); ^ "../../boost/test/impl/debug.ipp", line 545: error: the global scope has no "snprintf" ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); ^ "../../boost/test/impl/debug.ipp", line 582: error: the global scope has no "snprintf" ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); ^ "../../boost/test/impl/debug.ipp", line 714: error: the global scope has no "kill" ::kill( ::getpid(), SIGTRAP ); ^ "../../boost/test/impl/debug.ipp", line 863: error: the global scope has no "mkstemp" fd_holder init_done_lock_fd( ::mkstemp( init_done_lock_fn ) ); ^ 10 errors detected in the compilation of "../../libs/test/src/debug.cpp". como -tused -c --long_long -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_DYN_LINK=1 --no_inlining -O0 -g --exceptions -I"../.." -o "../../bin.v2/libs/test/build/como-linux/debug/debug.o" "../../libs/test/src/debug.cpp" 2>&1 ...failed como-linux.compile.c++ ../../bin.v2/libs/test/build/como-linux/debug/debug.o...
I installed Comeau compiler with relaxed mode of compilation configured as default. The snprintf function comes from C99 and as far as I'm experienced with Comeau C/C++, in relaxed mode it is not available unless Comeau's option --c99 is specified
Environment: Ubuntu 9.04 (32-bit), GCC 4.3.3, Comeau C/C++ 4.3.10.1
Attachments (1)
Change History (5)
comment:1 by , 13 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:2 by , 13 years ago
As I explained on the mailing list, the issue is that I found it not possible to enable both C99 and C++ modes for Comeau compiler.
Regarding mkstemp and others, these are POSIX functions and it's easy to enable them by adding extra preprocessor definition -D_SVID_SOURCE
I'll try to sort it out and to submit patch. In the meantime, would it be possible to enable _SVID_SOURCE for the como toolset in Jamfiles?
by , 13 years ago
Attachment: | como-snprintf-svnprintf-ticket-3558.patch added |
---|
Patch adding snprintf and vsnprintf workaround based on sprintf/vsprintf for Comeau C++ compiler
comment:3 by , 13 years ago
Regarding my comment about POSIX support for Comeau compiler, here is separate ticket #3662 with patch that shows what definitions are missing.
Looks like it can't fine mkstemp as well. How about execution_monitor? it uses vsnprintf as well? We do want to use snprintf. I do not have access to this compiler. Please provide patch and I can incorporate it.