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

[EDG eccp/Linux] multiple definition of `__sti___xxx' objects in codecvt.cpp, collate.cpp, and ctype.cpp

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: 4.2.0
    • Fix Version/s: 4.2.2
    • Component/s: 22. Localization
    • Labels:
      None
    • Environment:

      EDG eccp 3.10 with gcc 4.1.0 on SUSE Linux Enterprise Server 10 (x86_64)

    • Severity:
      Linker Error

      Description

      When compiled with EDG eccp 3.10 (and possibly prior versions of the same), a number of example programs fail to link with the error below:

      generating dependencies for $(TOPDIR)/examples/manual/codecvt.cpp
      eccp -M -I/amd/devco/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -I/amd/devco/sebor/stdcxx/include -I/build/sebor/stdcxx-eccp-3.9-11s/include -I/amd/devco/sebor/stdcxx/examples/include -A -x --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -g --display_error_number --remarks --diag_suppress 193,236,340,401,2
      61,479,487,678,679,815 /amd/devco/sebor/stdcxx/examples/manual/codecvt.cpp
      eccp -c -I/amd/devco/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -I/amd/devco/sebor/stdcxx/include -I/build/sebor/stdcxx-eccp-3.9-11s/include -I/amd/devco/sebor/stdcxx/examples/include -A -x --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -g --display_error_number --remarks --diag_suppress 193,236,340,401,2
      61,479,487,678,679,815 /amd/devco/sebor/stdcxx/examples/manual/codecvt.cpp
      eccp codecvt.o -o codecvt --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -L/build/sebor/stdcxx-eccp-3.9-11s/lib -lstd11s -lm
      nm: t_exp.o: no symbols
      nm: e_rem_pio2.o: no symbols
      nm: k_cos.o: no symbols
      nm: k_rem_pio2.o: no symbols
      nm: k_sin.o: no symbols
      nm: s_scalbln.o: no symbols
      nm: e_rem_pio2f.o: no symbols
      nm: k_rem_pio2f.o: no symbols
      nm: s_scalblnf.o: no symbols
      nm: e_rem_pio2l.o: no symbols
      nm: k_rem_pio2l.o: no symbols
      nm: s_nexttowardl.o: no symbols
      nm: s_scalblnl.o: no symbols
      nm: t_sincosl.o: no symbols
      nm: k_sincosl.o: no symbols
      nm: branred.o: no symbols
      nm: doasin.o: no symbols
      nm: dosincos.o: no symbols
      nm: halfulp.o: no symbols
      nm: mpa.o: no symbols
      nm: mpatan2.o: no symbols
      nm: mpatan.o: no symbols
      nm: mpexp.o: no symbols
      nm: mplog.o: no symbols
      nm: mpsqrt.o: no symbols
      nm: mptan.o: no symbols
      nm: sincos32.o: no symbols
      nm: slowexp.o: no symbols
      nm: slowpow.o: no symbols
      /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o): In function `_sti__11_codecvt_cpp_845ea9dc':
      /amd/devco/sebor/stdcxx/src/codecvt.cpp:273: multiple definition of `_sti__11_codecvt_cpp_845ea9dc'
      codecvt.o:/amd/devco/sebor/stdcxx/include/loc/_locale.h:327: first defined here
      /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `_sti__11_codecvt_cpp_845ea9dc' changed from 48 in codecvt.o to 5 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o)
      collect2: ld returned 1 exit status
      make: *** [codecvt] Error 1

        Activity

        Martin Sebor created issue -
        Hide
        Martin Sebor added a comment -

        As an aside, redirecting nm's stderr to /dev/null in $EDG_BASE/edg_eccp_config silences the nm noise.

        Show
        Martin Sebor added a comment - As an aside, redirecting nm's stderr to /dev/null in $EDG_BASE/edg_eccp_config silences the nm noise.
        Hide
        Martin Sebor added a comment -

        Actually, only three example programs fail with this error: codecvt.cpp, collate.cpp, and ctype.cpp. The error appears to be caused by the fact that the names of the example source files are the same as the names of the library source files that define the corresponding facets. Seems like a compiler bug... Since the errors can be worked around by renaming the program .cpp files I'm lowering Priority to Minor and deferring the issue for 4.2.1.

        Show
        Martin Sebor added a comment - Actually, only three example programs fail with this error: codecvt.cpp, collate.cpp, and ctype.cpp. The error appears to be caused by the fact that the names of the example source files are the same as the names of the library source files that define the corresponding facets. Seems like a compiler bug... Since the errors can be worked around by renaming the program .cpp files I'm lowering Priority to Minor and deferring the issue for 4.2.1.
        Martin Sebor made changes -
        Field Original Value New Value
        Priority Critical [ 2 ] Minor [ 4 ]
        Fix Version/s 4.2.1 [ 12312690 ]
        Hide
        Martin Sebor added a comment -

        Now that 4.2.0 is released, set Affects Version(s) accordingly.

        Show
        Martin Sebor added a comment - Now that 4.2.0 is released, set Affects Version(s) accordingly.
        Martin Sebor made changes -
        Affects Version/s 4.2 [ 12311945 ]
        Affects Version/s trunk [ 12312676 ]
        Martin Sebor made changes -
        Original Estimate 8h [ 28800 ]
        Remaining Estimate 8h [ 28800 ]
        Martin Sebor made changes -
        Assignee Martin Sebor [ sebor ]
        Hide
        Martin Sebor added a comment -

        In total, three examples are affected by this problem: codecvt.cpp, collate.cpp, and ctype.cpp:

        $ nice make -C../examples -k
        make: Entering directory `/build/sebor/stdcxx-eccp-3.9-11s/examples'
        eccp codecvt.o -o codecvt --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib    -L/build/sebor/stdcxx-eccp-3.9-11s/lib  -lstd11s  -lm 
        /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o): In function `__sti___11_codecvt_cpp_845ea9dc':
        /amd/devco/sebor/stdcxx/src/codecvt.cpp:273: multiple definition of `__sti___11_codecvt_cpp_845ea9dc'
        codecvt.o:/amd/devco/sebor/stdcxx/include/string:922: first defined here
        /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___11_codecvt_cpp_845ea9dc' changed from 48 in codecvt.o to 5 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o)
        collect2: ld returned 1 exit status
        make: *** [codecvt] Error 1
        eccp collate.o -o collate --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib    -L/build/sebor/stdcxx-eccp-3.9-11s/lib  -lstd11s  -lm 
        /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(collate.o): In function `__sti___11_collate_cpp_845ea9dc':
        /amd/devco/sebor/stdcxx/src/collate.cpp:301: multiple definition of `__sti___11_collate_cpp_845ea9dc'
        collate.o:/amd/devco/sebor/stdcxx/include/string:922: first defined here
        /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___11_collate_cpp_845ea9dc' changed from 48 in collate.o to 5 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(collate.o)
        collect2: ld returned 1 exit status
        make: *** [collate] Error 1
        eccp ctype.o -o ctype --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib    -L/build/sebor/stdcxx-eccp-3.9-11s/lib  -lstd11s  -lm 
        /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(ctype.o): In function `__sti___9_ctype_cpp_845ea9dc':
        /amd/devco/sebor/stdcxx/src/ctype.cpp:651: multiple definition of `__sti___9_ctype_cpp_845ea9dc'
        ctype.o:/amd/devco/sebor/stdcxx/include/loc/_locale.h:379: first defined here
        /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___9_ctype_cpp_845ea9dc' changed from 48 in ctype.o to 10475 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(ctype.o)
        collect2: ld returned 1 exit status
        make: *** [ctype] Error 1
        make: Target `all' not remade because of errors.
        make: Leaving directory `/build/sebor/stdcxx-eccp-3.9-11s/examples'
        
        Show
        Martin Sebor added a comment - In total, three examples are affected by this problem: codecvt.cpp , collate.cpp , and ctype.cpp : $ nice make -C../examples -k make: Entering directory `/build/sebor/stdcxx-eccp-3.9-11s/examples' eccp codecvt.o -o codecvt --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -L/build/sebor/stdcxx-eccp-3.9-11s/lib -lstd11s -lm /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o): In function `__sti___11_codecvt_cpp_845ea9dc': /amd/devco/sebor/stdcxx/src/codecvt.cpp:273: multiple definition of `__sti___11_codecvt_cpp_845ea9dc' codecvt.o:/amd/devco/sebor/stdcxx/include/string:922: first defined here /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___11_codecvt_cpp_845ea9dc' changed from 48 in codecvt.o to 5 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(codecvt.o) collect2: ld returned 1 exit status make: *** [codecvt] Error 1 eccp collate.o -o collate --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -L/build/sebor/stdcxx-eccp-3.9-11s/lib -lstd11s -lm /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(collate.o): In function `__sti___11_collate_cpp_845ea9dc': /amd/devco/sebor/stdcxx/src/collate.cpp:301: multiple definition of `__sti___11_collate_cpp_845ea9dc' collate.o:/amd/devco/sebor/stdcxx/include/string:922: first defined here /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___11_collate_cpp_845ea9dc' changed from 48 in collate.o to 5 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(collate.o) collect2: ld returned 1 exit status make: *** [collate] Error 1 eccp ctype.o -o ctype --template_directory=/build/sebor/stdcxx-eccp-3.9-11s/lib -L/build/sebor/stdcxx-eccp-3.9-11s/lib -lstd11s -lm /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(ctype.o): In function `__sti___9_ctype_cpp_845ea9dc': /amd/devco/sebor/stdcxx/src/ctype.cpp:651: multiple definition of `__sti___9_ctype_cpp_845ea9dc' ctype.o:/amd/devco/sebor/stdcxx/include/loc/_locale.h:379: first defined here /nfs/packages/mdx/sles/em64t/utils/binutils/2.16.91.0.5-23.4/bin/ld: Warning: size of symbol `__sti___9_ctype_cpp_845ea9dc' changed from 48 in ctype.o to 10475 in /build/sebor/stdcxx-eccp-3.9-11s/lib/libstd11s.a(ctype.o) collect2: ld returned 1 exit status make: *** [ctype] Error 1 make: Target `all' not remade because of errors. make: Leaving directory `/build/sebor/stdcxx-eccp-3.9-11s/examples'
        Martin Sebor made changes -
        Summary [EDG eccp/Linux] multiple definition of `__sti___11_codecvt_cpp_845ea9dc' [EDG eccp/Linux] multiple definition of `__sti___xxx' objects in codecvt.cpp, collate.cpp, and ctype.cpp
        Hide
        Martin Sebor added a comment -

        Deferred until 4.2.2.

        Show
        Martin Sebor added a comment - Deferred until 4.2.2.
        Martin Sebor made changes -
        Fix Version/s 4.2.1 [ 12312690 ]
        Fix Version/s 4.2.2 [ 12313096 ]
        Martin Sebor made changes -
        Assignee Martin Sebor [ sebor ]

          People

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

            Dates

            • Created:
              Updated:

              Time Tracking

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

                Development