On 22/09/16 15:25, Joel Sherrill wrote:
/The target pattern in the commit message doesn't look right.
It should be *-*-rtems* I think.


It should be ok since host_os is used:

# It uses the following shell variables as set by config.guess:
#   host                The configuration host (full CPU-vendor-OS triplet)
#   host_cpu            The configuration host CPU
#   host_os             The configuration host OS


Do all BSPs for m68k build with C++ enabled?

Yes, but I face currently some other problems with GCC 7:

https://gcc.gnu.org/ml/gcc/2016-09/msg00114.html

There is also a NULL pointer access in wctob() with the latest Newlib.


What code is used for atomic operations on say a 68000 or
68020?

They use the libatomic if the atomic operations are not supported by hardware. libatomic uses _Libatomic_Protect_start() and _Libatomic_Protect_end() on RTEMS.


Thanks.

--joel

On Thu, Sep 22, 2016 at 3:47 AM, Sebastian Huber <sebastian.hu...@embedded-brains.de <mailto:sebastian.hu...@embedded-brains.de>> wrote:

    v2: Fix shell script part since shell grouping is expressed by { }.

    libstdc++-v3/
            * config/cpu/m68k/atomicity.h: Adjust comment.
            * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Honor
            explicit atomicity_dir setup via configure.host.
            * configure.host (rtems-*): Set atomicity_dir.
            * configure: Regenerate.
    ---
     libstdc++-v3/acinclude.m4                |  5 +++--
     libstdc++-v3/config/cpu/m68k/atomicity.h |  3 +++
     libstdc++-v3/configure                   | 11 ++++++-----
     libstdc++-v3/configure.host              |  4 ++++
     4 files changed, 16 insertions(+), 7 deletions(-)

    diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
    index 6d897be..d7db435 100644
    --- a/libstdc++-v3/acinclude.m4
    +++ b/libstdc++-v3/acinclude.m4
    @@ -3490,9 +3490,10 @@ EOF
       AC_LANG_RESTORE

       # Set atomicity_dir to builtins if all but the long long test
    above passes.
    -  if test "$glibcxx_cv_atomic_bool" = yes \
    +  if { test "$glibcxx_cv_atomic_bool" = yes \
          && test "$glibcxx_cv_atomic_short" = yes \
    -     && test "$glibcxx_cv_atomic_int" = yes; then
    +     && test "$glibcxx_cv_atomic_int" = yes } \
    +     || test "$atomicity_dir" = "cpu/generic/atomicity_builtins";
    then
         AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1,
         [Define if the compiler supports C++11 atomics.])
         atomicity_dir=cpu/generic/atomicity_builtins
    diff --git a/libstdc++-v3/config/cpu/m68k/atomicity.h
    b/libstdc++-v3/config/cpu/m68k/atomicity.h
    index f421330..a9ddc6b 100644
    --- a/libstdc++-v3/config/cpu/m68k/atomicity.h
    +++ b/libstdc++-v3/config/cpu/m68k/atomicity.h
    @@ -48,6 +48,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }

     #elif defined(__rtems__)
    +  // This code is only provided for reference.  RTEMS uses now
    the atomic
    +  // builtins and libatomic.  See configure.host.
    +  //
       // TAS/JBNE is unsafe on systems with strict priority-based
    scheduling.
       // Disable interrupts, which we can do only from supervisor mode.
       _Atomic_word
    diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
    index 6332c4d..d09a7e0 100755
    --- a/libstdc++-v3/configure
    +++ b/libstdc++-v3/configure
    @@ -15539,9 +15539,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu


       # Set atomicity_dir to builtins if all but the long long test
    above passes.
    -  if test "$glibcxx_cv_atomic_bool" = yes \
    +  if { test "$glibcxx_cv_atomic_bool" = yes \
          && test "$glibcxx_cv_atomic_short" = yes \
    -     && test "$glibcxx_cv_atomic_int" = yes; then
    +     && test "$glibcxx_cv_atomic_int" = yes } \
    +     || test "$atomicity_dir" = "cpu/generic/atomicity_builtins";
    then

     $as_echo "#define _GLIBCXX_ATOMIC_BUILTINS 1" >>confdefs.h

    @@ -15573,7 +15574,7 @@ $as_echo "$as_me: WARNING: Performance of
    certain classes will degrade as a resu
       # unnecessary for this test.

         cat > conftest.$ac_ext << EOF
    -#line 15576 "configure"
    +#line 15577 "configure"
     int main()
     {
       _Decimal32 d1;
    @@ -15615,7 +15616,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
       # unnecessary for this test.

         cat > conftest.$ac_ext << EOF
    -#line 15618 "configure"
    +#line 15619 "configure"
     template<typename T1, typename T2>
       struct same
       { typedef T2 type; };
    @@ -15649,7 +15650,7 @@ $as_echo "$enable_int128" >&6; }
         rm -f conftest*

         cat > conftest.$ac_ext << EOF
    -#line 15652 "configure"
    +#line 15653 "configure"
     template<typename T1, typename T2>
       struct same
       { typedef T2 type; };
    diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
    index c0cc3ee..eb56ab1 100644
    --- a/libstdc++-v3/configure.host
    +++ b/libstdc++-v3/configure.host
    @@ -296,6 +296,10 @@ case "${host_os}" in
         os_include_dir="os/qnx/qnx6.1"
         c_model=c
         ;;
    +  rtems*)
    +    # Use libatomic if necessary and avoid libstdc++ specific
    atomicity support
    +    atomicity_dir="cpu/generic/atomicity_builtins"
    +    ;;
       solaris2)
         # This too-vague configuration does not provide enough
    information
         # to select a ctype include, and thus os_include_dir is a
    crap shoot.
    --
    1.8.4.5

    _______________________________________________
    devel mailing list
    de...@rtems.org <mailto:de...@rtems.org>
    http://lists.rtems.org/mailman/listinfo/devel
    <http://lists.rtems.org/mailman/listinfo/devel>



--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

Reply via email to