Message ID | 1474534063-8867-1-git-send-email-sebastian.huber@embedded-brains.de |
---|---|
State | New |
Headers | show |
On Sep 22 2016, Sebastian Huber <sebastian.huber@embedded-brains.de> wrote: > 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 } \ You need a semicolon (or newline) before }. Andreas.
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.huber@embedded-brains.de > <mailto:sebastian.huber@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 > devel@rtems.org <mailto:devel@rtems.org> > http://lists.rtems.org/mailman/listinfo/devel > <http://lists.rtems.org/mailman/listinfo/devel> > >
On 22 September 2016 11:11:42 CEST, Andreas Schwab <schwab@suse.de> wrote: >On Sep 22 2016, Sebastian Huber <sebastian.huber@embedded-brains.de> >wrote: > >> 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 } \ > >You need a semicolon (or newline) before }. Please remind me why you need curly braces at all? thanks
I checked in the following: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=240387 All m68k BSPs build and link the samples using RTEMS https://git.rtems.org/rtems/commit/?id=8ace7ee42ff50eee4541fd7151bf8ecc32f82384
On Sep 22 2016, Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> wrote: > On 22 September 2016 11:11:42 CEST, Andreas Schwab <schwab@suse.de> wrote: >>On Sep 22 2016, Sebastian Huber <sebastian.huber@embedded-brains.de> >>wrote: >> >>> 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 } \ >> >>You need a semicolon (or newline) before }. > > Please remind me why you need curly braces at all? Shell operand precedence is non-intuitive. Andreas.
On 26 September 2016 10:27:13 CEST, Andreas Schwab <schwab@suse.de> wrote: >On Sep 22 2016, Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> wrote: > >> On 22 September 2016 11:11:42 CEST, Andreas Schwab <schwab@suse.de> >wrote: >>>On Sep 22 2016, Sebastian Huber <sebastian.huber@embedded-brains.de> >>>wrote: >>> >>>> 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 } \ >>> >>>You need a semicolon (or newline) before }. >> >> Please remind me why you need curly braces at all? > >Shell operand precedence is non-intuitive. [ ... -a ... -a ... ] as per at least SUSv4. thanks
On Sep 26 2016, Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> wrote: > On 26 September 2016 10:27:13 CEST, Andreas Schwab <schwab@suse.de> wrote: >>On Sep 22 2016, Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> wrote: >> >>> On 22 September 2016 11:11:42 CEST, Andreas Schwab <schwab@suse.de> >>wrote: >>>>On Sep 22 2016, Sebastian Huber <sebastian.huber@embedded-brains.de> >>>>wrote: >>>> >>>>> 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 } \ >>>> >>>>You need a semicolon (or newline) before }. >>> >>> Please remind me why you need curly braces at all? >> >>Shell operand precedence is non-intuitive. > > [ ... -a ... -a ... ] as per at least SUSv4. That is even worse. POSIX marks it as obsolescent. Andreas.
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.