Remove macros extend_alloca, extend_alloca_account [BZ #18023]

Message ID 20180627164213.7A3E943994575@oldenburg.str.redhat.com
State Committed
Headers

Commit Message

Florian Weimer June 27, 2018, 4:42 p.m. UTC
  The unused macro definition in posix/glob.c comes from gnulib and will
have to be removed there.

2018-06-27  Florian Weimer  <fweimer@redhat.com>

	[BZ #18023]
        * include/alloca.h (stackinfo_alloca_round, extend_alloca)
        (extend_alloca_account): Remove.
	* manual/stdio.texi (Variable Arguments Output): Update comment.
  

Comments

Adhemerval Zanella Netto June 27, 2018, 5:08 p.m. UTC | #1
On 27/06/2018 13:42, Florian Weimer wrote:
> The unused macro definition in posix/glob.c comes from gnulib and will
> have to be removed there.

Since you are working on BZ#18023, maybe check the glob refactor to remove alloc
on glob I have posted sometime ago?

> 
> 2018-06-27  Florian Weimer  <fweimer@redhat.com>
> 
> 	[BZ #18023]
>         * include/alloca.h (stackinfo_alloca_round, extend_alloca)
>         (extend_alloca_account): Remove.
> 	* manual/stdio.texi (Variable Arguments Output): Update comment.

LGTM, thanks.

> 
> diff --git a/include/alloca.h b/include/alloca.h
> index fd90664f0a..c0b8395443 100644
> --- a/include/alloca.h
> +++ b/include/alloca.h
> @@ -23,57 +23,17 @@ libc_hidden_proto (__libc_alloca_cutoff)
>  
>  #include <allocalim.h>
>  
> -#ifndef stackinfo_alloca_round
> -# define stackinfo_alloca_round(l) (((l) + 15) & -16)
> -#endif
> -
> -#if _STACK_GROWS_DOWN
> -# define extend_alloca(buf, len, newlen) \
> -  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
> -		      char *__newbuf = __alloca (__newlen);		      \
> -		      if (__newbuf + __newlen == (char *) (buf))	      \
> -			len += __newlen;				      \
> -		      else						      \
> -			len = __newlen;					      \
> -		      __newbuf; })
> -#elif _STACK_GROWS_UP
> -# define extend_alloca(buf, len, newlen) \
> -  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
> -		      char *__newbuf = __alloca (__newlen);		      \
> -		      char *__buf = (char *) (buf);			      \
> -		      if (__buf + len == __newbuf)			      \
> -			{						      \
> -			  len += __newlen;				      \
> -			  __newbuf = __buf;				      \
> -			}						      \
> -		      else						      \
> -			len = __newlen;					      \
> -		      __newbuf; })
> -#else
> -# define extend_alloca(buf, len, newlen) \
> -  __alloca (((len) = (newlen)))
> -#endif
> -
>  #if defined stackinfo_get_sp && defined stackinfo_sub_sp
>  # define alloca_account(size, avar) \
>    ({ void *old__ = stackinfo_get_sp ();					      \
>       void *m__ = __alloca (size);					      \
>       avar += stackinfo_sub_sp (old__);					      \
>       m__; })
> -# define extend_alloca_account(buf, len, newlen, avar) \
> -  ({ void *old__ = stackinfo_get_sp ();					      \
> -     void *m__ = extend_alloca (buf, len, newlen);			      \
> -     avar += stackinfo_sub_sp (old__);					      \
> -     m__; })
>  #else
>  # define alloca_account(size, avar) \
>    ({ size_t s__ = (size);						      \
>       avar += s__;							      \
>       __alloca (s__); })
> -# define extend_alloca_account(buf, len, newlen, avar) \
> -  ({ size_t s__ = (newlen);						      \
> -     avar += s__;							      \
> -     extend_alloca (buf, len, s__); })
>  #endif
>  
>  # endif /* !_ISOMAC */
> diff --git a/manual/stdio.texi b/manual/stdio.texi
> index 38be236991..379f003b3f 100644
> --- a/manual/stdio.texi
> +++ b/manual/stdio.texi
> @@ -2622,7 +2622,6 @@ pointer @var{ap}.
>  @c __libc_use_alloca
>  @c process_arg
>  @c process_string_arg
> -@c extend_alloca
>  @c __parse_one_spec(wc|mb)
>  @c *__printf_arginfo_table unguarded
>  @c __printf_va_arg_table-> unguarded
>
  
Florian Weimer June 27, 2018, 6:23 p.m. UTC | #2
* Adhemerval Zanella:

> On 27/06/2018 13:42, Florian Weimer wrote:
>> The unused macro definition in posix/glob.c comes from gnulib and will
>> have to be removed there.
>
> Since you are working on BZ#18023, maybe check the glob refactor to
> remove alloc on glob I have posted sometime ago?

This was the series of patches with the growable strings abstraction,
right?

Eventually, I want to come back to it, yes.
  
Adhemerval Zanella Netto June 28, 2018, 5:49 p.m. UTC | #3
On 27/06/2018 15:23, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> On 27/06/2018 13:42, Florian Weimer wrote:
>>> The unused macro definition in posix/glob.c comes from gnulib and will
>>> have to be removed there.
>>
>> Since you are working on BZ#18023, maybe check the glob refactor to
>> remove alloc on glob I have posted sometime ago?
> 
> This was the series of patches with the growable strings abstraction,
> right?
> 
> Eventually, I want to come back to it, yes.
> 

Yes, last patchset is this one https://sourceware.org/ml/libc-alpha/2018-02/msg00109.html
  

Patch

diff --git a/include/alloca.h b/include/alloca.h
index fd90664f0a..c0b8395443 100644
--- a/include/alloca.h
+++ b/include/alloca.h
@@ -23,57 +23,17 @@  libc_hidden_proto (__libc_alloca_cutoff)
 
 #include <allocalim.h>
 
-#ifndef stackinfo_alloca_round
-# define stackinfo_alloca_round(l) (((l) + 15) & -16)
-#endif
-
-#if _STACK_GROWS_DOWN
-# define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
-		      char *__newbuf = __alloca (__newlen);		      \
-		      if (__newbuf + __newlen == (char *) (buf))	      \
-			len += __newlen;				      \
-		      else						      \
-			len = __newlen;					      \
-		      __newbuf; })
-#elif _STACK_GROWS_UP
-# define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen);      \
-		      char *__newbuf = __alloca (__newlen);		      \
-		      char *__buf = (char *) (buf);			      \
-		      if (__buf + len == __newbuf)			      \
-			{						      \
-			  len += __newlen;				      \
-			  __newbuf = __buf;				      \
-			}						      \
-		      else						      \
-			len = __newlen;					      \
-		      __newbuf; })
-#else
-# define extend_alloca(buf, len, newlen) \
-  __alloca (((len) = (newlen)))
-#endif
-
 #if defined stackinfo_get_sp && defined stackinfo_sub_sp
 # define alloca_account(size, avar) \
   ({ void *old__ = stackinfo_get_sp ();					      \
      void *m__ = __alloca (size);					      \
      avar += stackinfo_sub_sp (old__);					      \
      m__; })
-# define extend_alloca_account(buf, len, newlen, avar) \
-  ({ void *old__ = stackinfo_get_sp ();					      \
-     void *m__ = extend_alloca (buf, len, newlen);			      \
-     avar += stackinfo_sub_sp (old__);					      \
-     m__; })
 #else
 # define alloca_account(size, avar) \
   ({ size_t s__ = (size);						      \
      avar += s__;							      \
      __alloca (s__); })
-# define extend_alloca_account(buf, len, newlen, avar) \
-  ({ size_t s__ = (newlen);						      \
-     avar += s__;							      \
-     extend_alloca (buf, len, s__); })
 #endif
 
 # endif /* !_ISOMAC */
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 38be236991..379f003b3f 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -2622,7 +2622,6 @@  pointer @var{ap}.
 @c __libc_use_alloca
 @c process_arg
 @c process_string_arg
-@c extend_alloca
 @c __parse_one_spec(wc|mb)
 @c *__printf_arginfo_table unguarded
 @c __printf_va_arg_table-> unguarded