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

[EDG eccp 3.9] incomplete type error on lconv in codecvt.cpp

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.2.1
    • Component/s: Build and Installation
    • Labels:
      None
    • Environment:

      eccp 3.9 on Linux, with gcc 4.1.2 on the back end

    • Severity:
      Compiler Error

      Description

      This works in stdcxx 4.2.0 but not with the the head of trunk:

      eccp -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-eccp-3.9-11s/include -A -x --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -g --display_error_number --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815 /home/sebor/stdcxx/src/codecvt.cpp
      "/home/sebor/stdcxx/include/ansi/_clocale.h", line 71: error #70: incomplete
      type is not allowed
      struct lconv _RWSTD_LCONV;
      ^

      1 error detected in the compilation of "/home/sebor/stdcxx/src/codecvt.cpp".
      make: *** [codecvt.o] Error 2

        Activity

        Hide
        Farid Zaripov added a comment -

        The issue fixed by reverting the changes in r627618 thus: http://svn.apache.org/viewvc?rev=629561&view=rev

        Show
        Farid Zaripov added a comment - The issue fixed by reverting the changes in r627618 thus: http://svn.apache.org/viewvc?rev=629561&view=rev
        Hide
        Martin Sebor added a comment -

        Farid, can you please take a look at this?

        Show
        Martin Sebor added a comment - Farid, can you please take a look at this?
        Hide
        Martin Sebor added a comment -

        Reverting r627618 fixes the problem.

        Show
        Martin Sebor added a comment - Reverting r627618 fixes the problem.
        Hide
        Martin Sebor added a comment -

        The LCONV.cpp test fails to compile on trunk with the following error:

        eccp -D_RWSTDDEBUG -I. -A -x --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib \
             -g   --display_error_number --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815  \
             -c /home/sebor/stdcxx/etc/config/src/LCONV.cpp -o LCONV.o
        "/home/sebor/stdcxx/etc/config/src/LCONV.cpp", line 64: error #254: type name
                  is not allowed
                  ENTRY ("char*", decimal_point, ""),
                  ^
        

        ...and many more like it. Checking config.log the OFFSETOF.cpp test that LCONV.cpp depends gets processed after it rather than before it, suggesting that something is wrong with GNUmakefile.cfg:

        $ cat -n /build/sebor/stdcxx-eccp-3.9-11s/include/config.h | grep -e LCONV -e OFFSETOF
           527  #define _RWSTD_NO_LCONV
           528  #define _RWSTD_NO_LCONV_INT_FMAT
           696  #define _RWSTD_NO_OFFSETOF
        

        In 4.2.0, the order is correct:

        $  cat -n /build/sebor/stdcxx-4.2.0-eccp-3.9-11s/include/config.h | grep -e LCONV -e OFFSETOF
           551  #define _RWSTD_NO_OFFSETOF
           552  #define _RWSTD_NO_LCONV_INT_FMAT
           553  // #define _RWSTD_NO_LCONV
           554  #define _RWSTD_LCONV {   /* sizeof (lconv) == 56 */ \
        
        Show
        Martin Sebor added a comment - The LCONV.cpp test fails to compile on trunk with the following error: eccp -D_RWSTDDEBUG -I. -A -x --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib \ -g --display_error_number --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815 \ -c /home/sebor/stdcxx/etc/config/src/LCONV.cpp -o LCONV.o "/home/sebor/stdcxx/etc/config/src/LCONV.cpp", line 64: error #254: type name is not allowed ENTRY ("char*", decimal_point, ""), ^ ...and many more like it. Checking config.log the OFFSETOF.cpp test that LCONV.cpp depends gets processed after it rather than before it, suggesting that something is wrong with GNUmakefile.cfg : $ cat -n /build/sebor/stdcxx-eccp-3.9-11s/include/config.h | grep -e LCONV -e OFFSETOF 527 #define _RWSTD_NO_LCONV 528 #define _RWSTD_NO_LCONV_INT_FMAT 696 #define _RWSTD_NO_OFFSETOF In 4.2.0, the order is correct: $ cat -n /build/sebor/stdcxx-4.2.0-eccp-3.9-11s/include/config.h | grep -e LCONV -e OFFSETOF 551 #define _RWSTD_NO_OFFSETOF 552 #define _RWSTD_NO_LCONV_INT_FMAT 553 // #define _RWSTD_NO_LCONV 554 #define _RWSTD_LCONV { /* sizeof (lconv) == 56 */ \

          People

          • Assignee:
            Farid Zaripov
            Reporter:
            Martin Sebor
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 2h
              2h
              Remaining:
              Remaining Estimate - 2h
              2h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development