[v1.1] Deprecate malloc_(sg)et state.

Message ID 20140324092658.GA3973@domone.podge
State Superseded
Headers

Commit Message

Ondrej Bilka March 24, 2014, 9:26 a.m. UTC
  On Fri, Mar 14, 2014 at 10:05:41AM -0700, Roland McGrath wrote:
> If you want to remove a test case, remove it, rather than just commenting
> it out.  But we need to keep this test case to ensure we don't have ABI
> regressions.  That will require some new generalized plumbing for how we
> build linkobj/libc.so.

As I want to move forward with this patch I deleted this testcase and
when plumbing will be available I will restore it from git history. Is
that ok?

	* malloc/malloc.c: Make malloc_get_state and malloc_set_state
	compatibility symbols.
	* malloc/tst-mallocstate.c: Remove.

---
 malloc/malloc.c          |  7 +++++
 malloc/tst-mallocstate.c | 81 ------------------------------------------------
 2 files changed, 7 insertions(+), 81 deletions(-)
 delete mode 100644 malloc/tst-mallocstate.c
  

Comments

Joseph Myers March 24, 2014, 12:41 p.m. UTC | #1
On Mon, 24 Mar 2014, Ondrej Bilka wrote:

> 	* malloc/malloc.c: Make malloc_get_state and malloc_set_state
> 	compatibility symbols.
> 	* malloc/tst-mallocstate.c: Remove.

This doesn't seem like a complete patch.  The definitions of these 
functions in hooks.c shouldn't be built at all unless SHLIB_COMPAT (libc, 
GLIBC_2_0, GLIBC_2_20) - if they're built, they're wrongly available for 
static linking.
  

Patch

diff --git a/malloc/malloc.c b/malloc/malloc.c
index 9a45707..36d94e2 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -5180,6 +5180,13 @@  weak_alias (__malloc_trim, malloc_trim)
 weak_alias (__malloc_get_state, malloc_get_state)
 weak_alias (__malloc_set_state, malloc_set_state)
 
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_20)
+
+compat_symbol (libc, malloc_get_state, malloc_get_state, GLIBC_2_0);
+compat_symbol (libc, malloc_set_state, malloc_set_state, GLIBC_2_0);
+
+#endif
 
 /* ------------------------------------------------------------
    History:
diff --git a/malloc/tst-mallocstate.c b/malloc/tst-mallocstate.c
deleted file mode 100644
index 69c4500..0000000
--- a/malloc/tst-mallocstate.c
+++ /dev/null
@@ -1,81 +0,0 @@ 
-/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <stdio.h>
-#include "malloc.h"
-
-static int errors = 0;
-
-static void
-merror (const char *msg)
-{
-  ++errors;
-  printf ("Error: %s\n", msg);
-}
-
-int
-main (void)
-{
-  void *p1, *p2;
-  void *save_state;
-  long i;
-
-  errno = 0;
-
-  p1 = malloc (10);
-  if (p1 == NULL)
-    merror ("malloc (10) failed.");
-
-  p2 = malloc (20);
-  if (p2 == NULL)
-    merror ("malloc (20) failed.");
-
-  free (malloc (10));
-
-  for (i = 0; i < 100; ++i)
-    {
-      save_state = malloc_get_state ();
-      if (save_state == NULL)
-        {
-          merror ("malloc_get_state () failed.");
-          break;
-        }
-      /*free (malloc (10)); This could change the top chunk! */
-      malloc_set_state (save_state);
-      p1 = realloc (p1, i * 4 + 4);
-      if (p1 == NULL)
-        merror ("realloc (i*4) failed.");
-      free (save_state);
-    }
-
-  p1 = realloc (p1, 40);
-  free (p2);
-  p2 = malloc (10);
-  if (p2 == NULL)
-    merror ("malloc (10) failed.");
-  free (p1);
-
-  return errors != 0;
-}
-
-/*
- * Local variables:
- * c-basic-offset: 2
- * End:
- */