You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2008/07/07 17:43:31 UTC

[jira] Commented: (STDCXX-988) [gcc 4.3.0] /usr/include/limits.h has not been included from include/ansi/limits.h

    [ https://issues.apache.org/jira/browse/STDCXX-988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611207#action_12611207 ] 

Martin Sebor commented on STDCXX-988:
-------------------------------------

Hmm. In 4.2.1, [{{<limits.h>}}|https://svn.apache.org/viewvc/stdcxx/tags/4.2.1/include/ansi/limits.h?view=markup] uses the gcc extension {{#include_next}} to include the compiler's {{<limits.h>}}. That file also uses {{#include_next <limits.h>}} to bring in the system header. The tail end of gcc 4.3.0 {{<limits.h>}} is below. It looks as though this directive, instead of finding the system header finds our own {{<limits.h>}} again, possibly because we fail to {{#define _GCC_NEXT_LIMITS_H}}...

{noformat}
    115 #endif /* _LIMITS_H___ */
    116 /* This administrivia gets added to the end of limits.h
    117    if the system has its own version of limits.h.  */
    118 
    119 #else /* not _GCC_LIMITS_H_ */
    120 
    121 #ifdef _GCC_NEXT_LIMITS_H
    122 #include_next <limits.h>                /* recurse down to the real one     122 */
    123 #endif
    124 
    125 #endif /* not _GCC_LIMITS_H_ */
{noformat}

> [gcc 4.3.0] /usr/include/limits.h has not been included from include/ansi/limits.h
> ----------------------------------------------------------------------------------
>
>                 Key: STDCXX-988
>                 URL: https://issues.apache.org/jira/browse/STDCXX-988
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Build and Installation
>    Affects Versions: 4.2.1
>         Environment: gcc 4.3.0 / Ubuntu 8.04
>            Reporter: Farid Zaripov
>            Priority: Blocker
>             Fix For: 4.2.2
>
>
>   The regression tests of the asio library from boost are [failed to compile|http://beta.boost.org/development/tests/trunk/developer/output/gcc-4-3-0-stdcxx-4-2-2_x86_64-boost-bin-v2-libs-asio-test-basic_datagram_socket-test-gcc-4-3-0_stdcxx_422-debug-address-model-64-architecture-x86-instruction-set-nocona-stdlib-stdcxx-4-2-2-threading-multi.html] due to undefined symbol IOV_MAX. According to POSIX this symbol should be defined in <limits.h> header. But when compiling with stdcxx the /usr/include/limits.h file has not been included at all.
> {code:title=test.cpp}
> #include <limits.h>
> {code}
> {noformat}
> $ gcc -E test.cpp -I/var/tmp/stdcxx/4.2.x/include -I/var/tmp/stdcxx/4.2.x/include/ansi -I/var/tmp/stdcxx/4.2.x/15D/include
> # 1 "test.cpp"
> # 1 "<built-in>"
> # 1 "<command-line>"
> # 1 "test.cpp"
> # 1 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h" 1
> # 33 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h"
> # 1 "/var/tmp/stdcxx/4.2.x/include/rw/_defs.h" 1
> # 36 "/var/tmp/stdcxx/4.2.x/include/rw/_defs.h"
> # 1 "/var/tmp/stdcxx/4.2.x/include/rw/_config.h" 1
> # 36 "/var/tmp/stdcxx/4.2.x/include/rw/_config.h"
> # 1 "/var/tmp/stdcxx/4.2.x/15D/include/config.h" 1
> # 37 "/var/tmp/stdcxx/4.2.x/include/rw/_config.h" 2
> # 206 "/var/tmp/stdcxx/4.2.x/include/rw/_config.h"
> # 1 "/var/tmp/stdcxx/4.2.x/include/rw/_config-gcc.h" 1
> # 207 "/var/tmp/stdcxx/4.2.x/include/rw/_config.h" 2
> # 37 "/var/tmp/stdcxx/4.2.x/include/rw/_defs.h" 2
> # 1140 "/var/tmp/stdcxx/4.2.x/include/rw/_defs.h"
> namespace __rw {
> extern "C++" {
> template <bool __b>
> struct __rw_compile_assert;
> template<>
> struct __rw_compile_assert<true> { enum { _C_ok }; };
> void
> __rw_assert_fail (const char*, const char*, int, const char*)
>     __attribute__ ((noreturn));
> }
> }
> # 1549 "/var/tmp/stdcxx/4.2.x/include/rw/_defs.h"
> namespace std {
> }
> # 34 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h" 2
> # 106 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h"
>            
> # 107 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h" 3
> # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.3.0/include-fixed/limits.h" 1 3 4
> # 11 "/usr/lib/gcc/x86_64-linux-gnu/4.3.0/include-fixed/limits.h" 3 4
> # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.3.0/include-fixed/syslimits.h" 1 3 4
> # 1 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h" 1 3 4   <------  Here should be /usr/include/limits.h
> # 8 "/usr/lib/gcc/x86_64-linux-gnu/4.3.0/include-fixed/syslimits.h" 2 3 4
> # 12 "/usr/lib/gcc/x86_64-linux-gnu/4.3.0/include-fixed/limits.h" 2 3 4
> # 112 "/var/tmp/stdcxx/4.2.x/include/ansi/limits.h" 2 3
> # 1 "test.cpp" 2
> {noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.