public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/51773] New: error building libitm/aatree.cc on ARM
@ 2012-01-06  9:50 vries at gcc dot gnu.org
  2012-01-06 10:50 ` [Bug c++/51773] " redi at gcc dot gnu.org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2012-01-06  9:50 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

             Bug #: 51773
           Summary: error building libitm/aatree.cc on ARM
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: vries@gcc.gnu.org


build log:
...
libtool: compile: 
/home/vries/local/glibc-arm/base/obj/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/./gcc/g++
-B/home/vries/local/glibc-arm/base/obj/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc\
-linux-gnu/./gcc/ -nostdinc++ -nostdinc++
-I/home/vries/local/glibc-arm/base/obj/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-none-linux-gnueabi/libstdc++-v3/include/arm-none-linux-gnueabi
-I\
/home/vries/local/glibc-arm/base/obj/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-none-linux-gnueabi/libstdc++-v3/include
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libstdc++-v3/libs\
upc++
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libstdc++-v3/include/backward
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libstdc++-v3/testsuite/util
-L/home/vries/local/glibc-arm/base/obj\
/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-none-linux-gnueabi/libstdc++-v3/src
-L/home/vries/local/glibc-arm/base/obj/gcc-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-none-linux\
-gnueabi/libstdc++-v3/src/.libs
-B/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/bin/
-B/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/lib/ -isystem
/home/vries/local/glibc\
-arm/base/install/arm-none-linux-gnueabi/include -isystem
/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/sys-include
--sysroot=/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueab\
i/libc -DHAVE_CONFIG_H -I.
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/config/linux/arm
-I/home/vries/local/glibc-arm/base/src/gcc-m\
ainline/libitm/config/linux
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/config/arm
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/config/posix
-I/home/vries/local/glibc-arm/base/s\
rc/gcc-mainline/libitm/config/generic
-I/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm
--sysroot=/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/libc
-ftls-model=initial-exec -Wall\
 -pthread -Werror -std=gnu++0x -funwind-tables -fno-exceptions -fno-rtti
-fabi-version=4 -g -O2 -D_GNU_SOURCE -MT aatree.lo -MD -MP -MF .deps/aatree.Tpo
-c /home/vries/local/glibc-arm/base/src/gcc-mainline/\
libitm/aatree.cc  -fPIC -DPIC -o .libs/aatree.oIn file included from
/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/libitm_i.h:39:0,
                 from
/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/aatree.cc:28:
/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/local_type_traits:885:21:
error: expected identifier before 'sizeof'
/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/local_type_traits:885:21:
error: expected ',' or '...' before 'sizeof'
/home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/local_type_traits:886:52:
error: ISO C++ forbids declaration of '_Static_assert' with no type
[-fpermissive]
make[4]: *** [aatree.lo] Error 1
...

local_type_traits:
...
   881      template<typename _Tp, typename... _Args>
   882        struct __is_nary_constructible
   883        : public __is_nary_constructible_impl<_Tp, _Args...>::type
   884        {
   885          static_assert(sizeof...(_Args) > 1,
   886                        "Only useful for > 1 arguments");
   887        };
   888    
...

revision: 182946

configure line:
...
/home/vries/local/glibc-arm/base/src/gcc-mainline/configure
--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu
--target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap
--disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld
--enable-languages=c,c++,fortran --enable-shared --enable-lto
--enable-symvers=gnu --enable-__cxa_atexit --disable-nls
--prefix=/opt/codesourcery
--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc
--with-build-sysroot=/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/libc
--with-gmp=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--with-mpfr=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--with-mpc=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--with-ppl=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'
--with-cloog=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--with-libelf=/home/vries/local/glibc-arm/base/obj/host-libs-mainline-0-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
--disable-libgomp --enable-poison-system-directories
--with-build-time-tools=/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/bin
--with-build-time-tools=/home/vries/local/glibc-arm/base/install/arm-none-linux-gnueabi/bin
...


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
@ 2012-01-06 10:50 ` redi at gcc dot gnu.org
  2012-01-06 10:52 ` vries at gcc dot gnu.org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: redi at gcc dot gnu.org @ 2012-01-06 10:50 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 10:50:24 UTC ---
(In reply to comment #0)
> /home/vries/local/glibc-arm/base/src/gcc-mainline/libitm/local_type_traits:886:52:
> error: ISO C++ forbids declaration of '_Static_assert' with no type

Looks a though someone has done a 

#define static_assert _Static-assert

Another glibc C11 change that breaks C++?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
  2012-01-06 10:50 ` [Bug c++/51773] " redi at gcc dot gnu.org
@ 2012-01-06 10:52 ` vries at gcc dot gnu.org
  2012-01-06 10:56 ` redi at gcc dot gnu.org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2012-01-06 10:52 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #2 from vries at gcc dot gnu.org 2012-01-06 10:51:51 UTC ---
Looks related to:

+       [BZ #13529]
+       * assert/assert.h (static_assert): Define.
+

diff --git a/assert/assert.h b/assert/assert.h
index 841f435..4022e28 100644
--- a/assert/assert.h
+++ b/assert/assert.h
@@ -113,3 +113,10 @@ __END_DECLS
 # endif

 #endif /* NDEBUG.  */
+
+
+#ifdef __USE_ISOC11
+/* Static assertion.  Requires support in the compiler.  */
+# undef static_assert
+# define static_assert _Static_assert
+#endif


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
  2012-01-06 10:50 ` [Bug c++/51773] " redi at gcc dot gnu.org
  2012-01-06 10:52 ` vries at gcc dot gnu.org
@ 2012-01-06 10:56 ` redi at gcc dot gnu.org
  2012-01-06 11:07 ` redi at gcc dot gnu.org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: redi at gcc dot gnu.org @ 2012-01-06 10:56 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 10:56:31 UTC ---
http://sourceware.org/bugzilla/show_bug.cgi?id=13529

should be reproducible with:

#include <assert.h>
static_assert( true, "valid C++" );


this could be fixed in libstdc++ by providing a fixed assert.h with #undef
static_assert, but glibc shouldn't be defining the macro for __cplusplus in the
first place

does glibc also define macros for alignof, true, false, bool etc. in C++ mode?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2012-01-06 10:56 ` redi at gcc dot gnu.org
@ 2012-01-06 11:07 ` redi at gcc dot gnu.org
  2012-01-06 11:47 ` joseph at codesourcery dot com
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: redi at gcc dot gnu.org @ 2012-01-06 11:07 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 11:06:50 UTC ---
this should be reported to glibc, like
http://sourceware.org/bugzilla/show_bug.cgi?id=13566


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2012-01-06 11:07 ` redi at gcc dot gnu.org
@ 2012-01-06 11:47 ` joseph at codesourcery dot com
  2012-01-06 12:08 ` redi at gcc dot gnu.org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: joseph at codesourcery dot com @ 2012-01-06 11:47 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-01-06 11:47:15 UTC ---
On Fri, 6 Jan 2012, redi at gcc dot gnu.org wrote:

> does glibc also define macros for alignof, true, false, bool etc. in C++ mode?

Those C11 macros are defined in headers required to be provided by 
freestanding implementations, so provided by GCC, not glibc - but it was 
felt suitable to use assert.h for static_assert rather than creating a new 
stdstatic_assert.h header for that macro.  We already discussed C++ 
semantics for those headers, see 
<http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00847.html>.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2012-01-06 11:47 ` joseph at codesourcery dot com
@ 2012-01-06 12:08 ` redi at gcc dot gnu.org
  2012-01-06 15:28 ` joseph at codesourcery dot com
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: redi at gcc dot gnu.org @ 2012-01-06 12:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 12:08:11 UTC ---
(In reply to comment #5)
> We already discussed C++ 
> semantics for those headers, see 
> <http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00847.html>.

Yep, I remember, I was just checking whether the new glibc changes altered
things - glad to hear they don't.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2012-01-06 12:08 ` redi at gcc dot gnu.org
@ 2012-01-06 15:28 ` joseph at codesourcery dot com
  2012-01-06 15:33 ` redi at gcc dot gnu.org
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: joseph at codesourcery dot com @ 2012-01-06 15:28 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #7 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-01-06 15:28:16 UTC ---
On Fri, 6 Jan 2012, redi at gcc dot gnu.org wrote:

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773
> 
> --- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 12:08:11 UTC ---
> (In reply to comment #5)
> > We already discussed C++ 
> > semantics for those headers, see 
> > <http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00847.html>.
> 
> Yep, I remember, I was just checking whether the new glibc changes altered
> things - glad to hear they don't.

You probably want to check all the C11 features in glibc (listed as 
dependencies of <http://sourceware.org/bugzilla/show_bug.cgi?id=13525> - 
my original list was 
<http://sourceware.org/ml/libc-alpha/2011-12/msg00051.html>) for whether 
the headers do what you think they should for C++ (both C++03 and C++11) - 
and update the glibc issues for anything needing more work for C++.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2012-01-06 15:28 ` joseph at codesourcery dot com
@ 2012-01-06 15:33 ` redi at gcc dot gnu.org
  2012-01-06 15:44 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: redi at gcc dot gnu.org @ 2012-01-06 15:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-01-06 15:33:16 UTC ---
I've already glanced over them and added one comment, I'll go through them
properly asap


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2012-01-06 15:33 ` redi at gcc dot gnu.org
@ 2012-01-06 15:44 ` jakub at gcc dot gnu.org
  2012-01-06 15:51 ` joseph at codesourcery dot com
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-01-06 15:44 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-06 15:43:19 UTC ---
I'm not sure if for -D_GNU_SOURCE we want a ::gets prototype in C++, it would
be better to just have std::gets only.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2012-01-06 15:44 ` jakub at gcc dot gnu.org
@ 2012-01-06 15:51 ` joseph at codesourcery dot com
  2012-01-06 16:12 ` jakub at gcc dot gnu.org
  2012-01-09 11:35 ` vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: joseph at codesourcery dot com @ 2012-01-06 15:51 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #10 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-01-06 15:51:20 UTC ---
On Fri, 6 Jan 2012, jakub at gcc dot gnu.org wrote:

> I'm not sure if for -D_GNU_SOURCE we want a ::gets prototype in C++, it would
> be better to just have std::gets only.

The trouble is we can't distinguish between a user's -D_GNU_SOURCE for C++ 
and the compiler's predefine (which it defines because the libstdc++ 
headers want to use C library functionality beyond that present in the 
standard).

I'm testing a glibc patch that reenables gets for C++ <= C++11, disables 
the static_assert define for C++ and disables the char16_t/char32_t 
typedefs in uchar.h for C++11 (since they are keywords in C++11).


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2012-01-06 15:51 ` joseph at codesourcery dot com
@ 2012-01-06 16:12 ` jakub at gcc dot gnu.org
  2012-01-09 11:35 ` vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-01-06 16:12 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-06 16:12:00 UTC ---
Sure, we'd need some coordination between glibc and libstdc++, or just a glibc
version check and defining the std::gets prototype in libstdc++.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/51773] error building libitm/aatree.cc on ARM
  2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2012-01-06 16:12 ` jakub at gcc dot gnu.org
@ 2012-01-09 11:35 ` vries at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: vries at gcc dot gnu.org @ 2012-01-09 11:35 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51773

vries at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |MOVED

--- Comment #12 from vries at gcc dot gnu.org 2012-01-09 11:33:46 UTC ---
(In reply to comment #10)
> I'm testing a glibc patch that reenables gets for C++ <= C++11, disables 
> the static_assert define for C++ and disables the char16_t/char32_t 
> typedefs in uchar.h for C++11 (since they are keywords in C++11).

2012-01-06  Joseph Myers  <joseph@codesourcery.com>

    [BZ #13566]
    * assert/assert.h (static_assert): Don't define for C++.
    * libio/stdio.h (gets): Do declare for C++ <= C++11.
    * wcsmbs/uchar.h (char16_t, char32_t): Don't typedef for C++11.

Given this checkin in glibc, marking this as resolved - moved.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-01-09 11:35 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-06  9:50 [Bug c++/51773] New: error building libitm/aatree.cc on ARM vries at gcc dot gnu.org
2012-01-06 10:50 ` [Bug c++/51773] " redi at gcc dot gnu.org
2012-01-06 10:52 ` vries at gcc dot gnu.org
2012-01-06 10:56 ` redi at gcc dot gnu.org
2012-01-06 11:07 ` redi at gcc dot gnu.org
2012-01-06 11:47 ` joseph at codesourcery dot com
2012-01-06 12:08 ` redi at gcc dot gnu.org
2012-01-06 15:28 ` joseph at codesourcery dot com
2012-01-06 15:33 ` redi at gcc dot gnu.org
2012-01-06 15:44 ` jakub at gcc dot gnu.org
2012-01-06 15:51 ` joseph at codesourcery dot com
2012-01-06 16:12 ` jakub at gcc dot gnu.org
2012-01-09 11:35 ` vries at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).