This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch arm/ilp32 updated. glibc-2.26-268-gbede104


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, arm/ilp32 has been updated
       via  bede104580bbb0be5e547c51bb523c00ee3ff462 (commit)
      from  83d5299ed8ee5efdef078a4c795ef525cbef6378 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=bede104580bbb0be5e547c51bb523c00ee3ff462

commit bede104580bbb0be5e547c51bb523c00ee3ff462
Author: Steve Ellcey <sellcey@cavium.com>
Date:   Fri Sep 1 17:27:11 2017 +0100

    Fix tests that are testing obsoleted functionality
    
    Here is a patch to fix three tests; malloc/tst-mallocstate.c,
    math/test-matherr.c, and math/test-matherr-2.c.  These tests
    test functionality that is no longer in the latest GLIBC but
    should still exist for programs linked with an older GLIBC.
    If you have a new ABI (like ILP32 aarch64) which never existed
    in the older form, these tests will fail. tst-mallocstate.c
    and test-matherr.c give link errors and test-matherr-2.c
    compiles and links but exits with status 1.
    
    This patch fixes the tests so that they will compile and
    link and, if on a platform that does not support the functionality
    being tested return an UNSUPPORTED return code.  They continue
    to run and pass as before on other platforms.  To do this
    I created a new macro TEST_COMPAT, similar to SHLIB_COMPAT
    that can be used to check for the abi versions available
    when building the test.
    
    2017-09-01  Steve Ellcey  <sellcey@cavium.com>
    
    	* include/shlib-compat.h (TEST_COMPAT): New Macro.
    	* malloc/tst-mallocstate.c: Convert from test-skeleton
    	to test-driver.  Ifdef code using TEST_COMPAT macro.
    	* math/test-matherr-2.c: Ifdef test using TEST_COMPAT macro.
    	* math/test-matherr.c: Likewise.

diff --git a/include/shlib-compat.h b/include/shlib-compat.h
index 41eb362..d872afc 100644
--- a/include/shlib-compat.h
+++ b/include/shlib-compat.h
@@ -97,4 +97,14 @@
   compat_symbol (libc, name, aliasname, version);
 # endif
 
+/* The TEST_COMPAT macro acts just like the SHLIB_COMPAT macro except
+   that it does not check IS_IN.  It is used by tests that are testing
+   functionality that is only available in specific GLIBC versions.  */
+
+# define TEST_COMPAT(lib, introduced, obsoleted)			      \
+  _TEST_COMPAT (lib, introduced, obsoleted)
+# define _TEST_COMPAT(lib, introduced, obsoleted)			      \
+   (!(ABI_##lib##_##obsoleted - 0)					      \
+       || ((ABI_##lib##_##introduced - 0) < (ABI_##lib##_##obsoleted - 0)))
+
 #endif	/* shlib-compat.h */
diff --git a/malloc/tst-mallocstate.c b/malloc/tst-mallocstate.c
index 5cb39c0..53154ae 100644
--- a/malloc/tst-mallocstate.c
+++ b/malloc/tst-mallocstate.c
@@ -23,19 +23,20 @@
 #include <string.h>
 #include <libc-symbols.h>
 #include <shlib-compat.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/test-driver.h>
 
 #include "malloc.h"
 
+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_25)
+
 /* Make the compatibility symbols availabile to this test case.  */
 void *malloc_get_state (void);
 compat_symbol_reference (libc, malloc_get_state, malloc_get_state, GLIBC_2_0);
 int malloc_set_state (void *);
 compat_symbol_reference (libc, malloc_set_state, malloc_set_state, GLIBC_2_0);
 
-static int do_test (void);
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
 /* Maximum object size in the fake heap.  */
 enum { max_size = 64 };
 
@@ -63,9 +64,9 @@ static size_t *next_heap_chunk;
 
 /* Copied from malloc.c and hooks.c.  The version is deliberately
    lower than the final version of malloc_set_state.  */
-#define NBINS 128
-#define MALLOC_STATE_MAGIC   0x444c4541l
-#define MALLOC_STATE_VERSION (0 * 0x100l + 4l)
+# define NBINS 128
+# define MALLOC_STATE_MAGIC   0x444c4541l
+# define MALLOC_STATE_VERSION (0 * 0x100l + 4l)
 static struct
 {
   long magic;
@@ -117,12 +118,7 @@ dumped_heap_alloc (size_t length)
   /* Round up the allocation size to the heap alignment.  */
   chunk_size += heap_alignment_mask;
   chunk_size &= ~heap_alignment_mask;
-  if ((chunk_size & 3) != 0)
-    {
-      /* The lower three bits in the chunk size have to be 0.  */
-      write_message ("error: dumped_heap_alloc computed invalid chunk size\n");
-      _exit (1);
-    }
+  TEST_VERIFY_EXIT ((chunk_size & 3) == 0);
   if (next_heap_chunk == NULL)
     /* Initialize the top of the heap.  Add one word of zero padding,
        to match existing practice.  */
@@ -244,11 +240,7 @@ shuffle_allocation_tasks (void)
       /* Pick pair in the tail of the array.  */
       int j = i + (rand_next (&global_seed)
                    % ((unsigned) (allocation_task_count - i)));
-      if (j < 0 || j >= allocation_task_count)
-        {
-          write_message ("error: test bug in shuffle\n");
-          _exit (1);
-        }
+      TEST_VERIFY_EXIT (j >= 0 && j < allocation_task_count);
       /* Exchange. */
       struct allocation_task tmp = allocation_tasks[i];
       allocation_tasks[i] = allocation_tasks[j];
@@ -298,7 +290,8 @@ static volatile bool heap_initialized;
 static void
 init_heap (void)
 {
-  write_message ("info: performing heap initialization\n");
+  if (test_verbose)
+    printf ("info: performing heap initialization\n");
   heap_initialized = true;
 
   /* Populate the dumped heap.  */
@@ -312,11 +305,7 @@ init_heap (void)
   save_state.av[2] = (void *) (next_heap_chunk - 1);
 
   /* Integrate the dumped heap into the process heap.  */
-  if (malloc_set_state (&save_state) != 0)
-    {
-      write_message ("error: malloc_set_state failed\n");
-      _exit (1);
-    }
+  TEST_VERIFY_EXIT (malloc_set_state (&save_state) == 0);
 }
 
 /* Interpose the initialization callback.  */
@@ -389,15 +378,12 @@ static int
 do_test (void)
 {
   my_free (malloc (1));
-  if (!heap_initialized)
-    {
-      printf ("error: heap was not initialized by malloc\n");
-      return 1;
-    }
+  TEST_VERIFY_EXIT (heap_initialized);
 
   /* The first pass performs the randomly generated allocation
      tasks.  */
-  write_message ("info: first pass through allocation tasks\n");
+  if (test_verbose)
+    printf ("info: first pass through allocation tasks\n");
   full_heap_check ();
 
   /* Execute the post-undump tasks in a random order.  */
@@ -451,14 +437,15 @@ do_test (void)
           break;
 
         case action_count:
-          abort ();
+          FAIL_EXIT1 ("task->action should never be action_count");
         }
       full_heap_check ();
     }
 
   /* The second pass frees the objects which were allocated during the
      first pass.  */
-  write_message ("info: second pass through allocation tasks\n");
+  if (test_verbose)
+    printf ("info: second pass through allocation tasks\n");
 
   shuffle_allocation_tasks ();
   for (int i = 0; i < allocation_task_count; ++i)
@@ -480,7 +467,7 @@ do_test (void)
           break;
 
         case action_count:
-          abort ();
+          FAIL_EXIT1 ("task->action should never be action_count");
         }
       full_heap_check ();
     }
@@ -503,3 +490,12 @@ do_test (void)
 
   return errors;
 }
+#else
+static int
+do_test (void)
+{
+  return 77;
+}
+#endif
+
+#include <support/test-driver.c>
diff --git a/math/test-matherr-2.c b/math/test-matherr-2.c
index c2fc5e6..7b5f49c 100644
--- a/math/test-matherr-2.c
+++ b/math/test-matherr-2.c
@@ -22,8 +22,11 @@
 
 #include <math-svid-compat.h>
 #include <shlib-compat.h>
-#undef matherr
-#undef _LIB_VERSION
+
+#if TEST_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
+
+# undef matherr
+# undef _LIB_VERSION
 compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
 compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
 
@@ -45,5 +48,12 @@ do_test (void)
   acos (2.0);
   return fail;
 }
+#else
+static int
+do_test (void)
+{
+  return 77;
+}
+#endif
 
 #include <support/test-driver.c>
diff --git a/math/test-matherr.c b/math/test-matherr.c
index 34856f1..23521c0 100644
--- a/math/test-matherr.c
+++ b/math/test-matherr.c
@@ -22,8 +22,11 @@
 
 #include <math-svid-compat.h>
 #include <shlib-compat.h>
-#undef matherr
-#undef _LIB_VERSION
+
+#if TEST_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
+
+# undef matherr
+# undef _LIB_VERSION
 compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
 compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
 
@@ -44,5 +47,12 @@ do_test (void)
   acos (2.0);
   return fail;
 }
+#else
+static int
+do_test (void)
+{
+  return 77;
+}
+#endif
 
 #include <support/test-driver.c>

-----------------------------------------------------------------------

Summary of changes:
 include/shlib-compat.h   |   10 +++++++
 malloc/tst-mallocstate.c |   62 +++++++++++++++++++++------------------------
 math/test-matherr-2.c    |   14 +++++++++-
 math/test-matherr.c      |   14 +++++++++-
 4 files changed, 63 insertions(+), 37 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]