Uploaded image for project: 'XalanC'
  1. XalanC
  2. XALANC-569

Compile-time assert on 32-bit Solaris & HPUX due to IEEE754 issue

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.10
    • Fix Version/s: CurrentCVS
    • Component/s: XalanC
    • Labels:
      None
    • Environment:
      32-bit Solaris & HPUX

      Description

      The following error occurs while compiling DoubleSupport.cpp on Solaris:

      CC -g -KPIC -mt -xs -ptr../../obj -features=rtti -DSOLARIS -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/src -I/export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/include -I../../nls/include -I/export/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-solaris_28-cc_62/src/ -I/export/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-solaris_28-cc_62/include/xercesc -I/export/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-solaris_28-cc_62/include/ -o ../../obj/DoubleSupport.o /export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/src/xalanc/PlatformSupport/DoubleSupport.cpp
      "/export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/src/xalanc/Include/PlatformDefinitions.hpp", line 126: Error: An array must have at least one element.
      "/export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 76: Where: While specializing "xalanc_1_10::XalanCompileErrorBoolean<0>".
      "/export/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-solaris_28-cc_62/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 76: Where: Specialized in non-template code.

      The error is similar on HPUX:

      aCC -g +DAportable +Z -DHPUX -D_THREAD_SAFE +W849,930 -mt -Wc,-koenig_lookup,on -Wc,-ansi_for_scope,on -DXALAN_INMEM_MSG_LOADER -c -I/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src -I/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/include -I../../nls/include -I/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-hpux_11i-acc_a03/src/ -I/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-hpux_11i-acc_a03/include/xercesc -I/home/torxslt/BuildClient/xalanc_root/xerces-c_2_7_0-hpux_11i-acc_a03/include/ -o ../../obj/DoubleSupport.o /home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp
      Error 419: "/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 74 # 'is_iec559' is used as a type, but has not been defined as a type.
      XALAN_STATIC_ASSERT(numeric_limits<double>::is_iec559);
      ^^^^^^^^^^^^^^^^^^^
      Error 502: "/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 74 # Attempt to access 'numeric_limits<double>::<type inserted by compiler>' is invalid; '<type inserted by compiler>' is not a member of 'numeric_limits<double>' or any base class.
      XALAN_STATIC_ASSERT(numeric_limits<double>::is_iec559);
      ^^^^^^^^^^^^^^^^^^^
      Error 322: "/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 74 # An expression was expected instead of type 'bool (int)' in the specialization of template 'XalanCompileErrorBoolean'.
      XALAN_STATIC_ASSERT(numeric_limits<double>::is_iec559);
      ^^^^^^^^^^^^^^^^^^^
      Error 187: "/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 74 # Referenced object '@$XalanCompileErrorBoolean' is not a member of class XalanCompileErrorBoolean<bool (int)> ["/home/torxslt/BuildClient/xalanc_root/LatestC-CVS-hpux_11i-acc_a03/c/src/xalanc/PlatformSupport/DoubleSupport.cpp", line 74].
      XALAN_STATIC_ASSERT(numeric_limits<double>::is_iec559);
      ^^^^^^^^^^^^^^^^^^^

      The problem was introduced in XALANC-511, which introduces a compile-time check to verify that the platform has IEEE754 (standard floating point) support.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                dbertoni David N Bertoni
                Reporter:
                azinyk Ashley Zinyk
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: