You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2006/03/06 21:14:27 UTC

[jira] Created: (STDCXX-162) [x86_64] atomic operations disabled

[x86_64] atomic operations disabled
-----------------------------------

         Key: STDCXX-162
         URL: http://issues.apache.org/jira/browse/STDCXX-162
     Project: C++ Standard Library
        Type: Improvement
  Components: Configuration  
    Versions: 4.1.3    
 Environment: x86_64
    Reporter: Martin Sebor
    Priority: Critical
     Fix For: 4.1.4


Atomic operations are disabled on AMD64 and EM64T.

$ uname -srp && cat t.cpp && make t && LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t
Linux 2.6.9-22.ELsmp x86_64
#include <cassert>
#include <string>
#include <pthread.h>

int main ()
{
    typedef std::char_traits<char>                      Traits;
    typedef std::allocator<char>                        Allocator;
    typedef __rw::__string_ref<char, Traits, Allocator> strref;

    struct SmallRef {
        int                    ref_count;
        std::string::size_type capacity;
        std::string::size_type size;
    };

    struct LargeRef {
        pthread_mutex_t        mutex;
        int                    ref_count;
        std::string::size_type capacity;
        std::string::size_type size;
    };

    assert (sizeof (strref) <= sizeof (SmallRef));
    assert (sizeof (strref) <  sizeof (LargeRef));
}
gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthread -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  t.cpp
gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d  -lsupc++ -lm
t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' failed.
Aborted


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STDCXX-162) [x86_64] atomic operations disabled

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Sebor updated STDCXX-162:
--------------------------------

         Severity: Inefficiency
    Fix Version/s:     (was: 4.2.0)
                   5.0

The fix is in 4.2 but it's disabled for binary compatibility. It will automatically become enabled in 5.0.

The regression test (21.string.stdcxx-162) fails as a result as expected.

> [x86_64] atomic operations disabled
> -----------------------------------
>
>                 Key: STDCXX-162
>                 URL: https://issues.apache.org/jira/browse/STDCXX-162
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Configuration
>    Affects Versions: 4.1.3
>         Environment: x86_64
>            Reporter: Martin Sebor
>            Priority: Critical
>             Fix For: 5.0
>
>
> Atomic operations are disabled on AMD64 and EM64T.
> $ uname -srp && cat t.cpp && make t && LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t
> Linux 2.6.9-22.ELsmp x86_64
> #include <cassert>
> #include <string>
> #include <pthread.h>
> int main ()
> {
>     typedef std::char_traits<char>                      Traits;
>     typedef std::allocator<char>                        Allocator;
>     typedef __rw::__string_ref<char, Traits, Allocator> strref;
>     struct SmallRef {
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     struct LargeRef {
>         pthread_mutex_t        mutex;
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     assert (sizeof (strref) <= sizeof (SmallRef));
>     assert (sizeof (strref) <  sizeof (LargeRef));
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthread -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  t.cpp
> gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d  -lsupc++ -lm
> t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' failed.
> Aborted

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


[jira] Updated: (STDCXX-162) [x86_64] atomic operations disabled

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/STDCXX-162?page=all ]

Martin Sebor updated STDCXX-162:
--------------------------------

    Fix Version: 4.2
                     (was: 4.1.4)

> [x86_64] atomic operations disabled
> -----------------------------------
>
>          Key: STDCXX-162
>          URL: http://issues.apache.org/jira/browse/STDCXX-162
>      Project: C++ Standard Library
>         Type: Improvement

>   Components: Configuration
>     Versions: 4.1.3
>  Environment: x86_64
>     Reporter: Martin Sebor
>     Priority: Critical
>      Fix For: 4.2

>
> Atomic operations are disabled on AMD64 and EM64T.
> $ uname -srp && cat t.cpp && make t && LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t
> Linux 2.6.9-22.ELsmp x86_64
> #include <cassert>
> #include <string>
> #include <pthread.h>
> int main ()
> {
>     typedef std::char_traits<char>                      Traits;
>     typedef std::allocator<char>                        Allocator;
>     typedef __rw::__string_ref<char, Traits, Allocator> strref;
>     struct SmallRef {
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     struct LargeRef {
>         pthread_mutex_t        mutex;
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     assert (sizeof (strref) <= sizeof (SmallRef));
>     assert (sizeof (strref) <  sizeof (LargeRef));
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthread -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  t.cpp
> gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d  -lsupc++ -lm
> t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' failed.
> Aborted

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Closed: (STDCXX-162) [x86_64] atomic operations disabled

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Sebor closed STDCXX-162.
-------------------------------

    Resolution: Fixed

Fixed. Test added to the regression test suite: http://svn.apache.org/viewvc?rev=569737&view=rev

> [x86_64] atomic operations disabled
> -----------------------------------
>
>                 Key: STDCXX-162
>                 URL: https://issues.apache.org/jira/browse/STDCXX-162
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Configuration
>    Affects Versions: 4.1.3
>         Environment: x86_64
>            Reporter: Martin Sebor
>            Priority: Critical
>             Fix For: 4.2
>
>
> Atomic operations are disabled on AMD64 and EM64T.
> $ uname -srp && cat t.cpp && make t && LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t
> Linux 2.6.9-22.ELsmp x86_64
> #include <cassert>
> #include <string>
> #include <pthread.h>
> int main ()
> {
>     typedef std::char_traits<char>                      Traits;
>     typedef std::allocator<char>                        Allocator;
>     typedef __rw::__string_ref<char, Traits, Allocator> strref;
>     struct SmallRef {
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     struct LargeRef {
>         pthread_mutex_t        mutex;
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     assert (sizeof (strref) <= sizeof (SmallRef));
>     assert (sizeof (strref) <  sizeof (LargeRef));
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthread -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  t.cpp
> gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d  -lsupc++ -lm
> t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' failed.
> Aborted

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


[jira] Commented: (STDCXX-162) [x86_64] atomic operations disabled

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12535937 ] 

Martin Sebor commented on STDCXX-162:
-------------------------------------

As noted in the following thread:
http://www.nabble.com/stdcxx-4.2.0-4.1.3-binary-incompatibility-on-Linux-tf4642037.html
the fix for this issue (http://svn.apache.org/viewcvs?view=rev&rev=383659) introduces a binary incompatibility on Linux/x86_64.

> [x86_64] atomic operations disabled
> -----------------------------------
>
>                 Key: STDCXX-162
>                 URL: https://issues.apache.org/jira/browse/STDCXX-162
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Configuration
>    Affects Versions: 4.1.3
>         Environment: x86_64
>            Reporter: Martin Sebor
>            Priority: Critical
>             Fix For: 4.2
>
>
> Atomic operations are disabled on AMD64 and EM64T.
> $ uname -srp && cat t.cpp && make t && LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t
> Linux 2.6.9-22.ELsmp x86_64
> #include <cassert>
> #include <string>
> #include <pthread.h>
> int main ()
> {
>     typedef std::char_traits<char>                      Traits;
>     typedef std::allocator<char>                        Allocator;
>     typedef __rw::__string_ref<char, Traits, Allocator> strref;
>     struct SmallRef {
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     struct LargeRef {
>         pthread_mutex_t        mutex;
>         int                    ref_count;
>         std::string::size_type capacity;
>         std::string::size_type size;
>     };
>     assert (sizeof (strref) <= sizeof (SmallRef));
>     assert (sizeof (strref) <  sizeof (LargeRef));
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthread -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align  t.cpp
> gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d  -lsupc++ -lm
> t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' failed.
> Aborted

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