[PATCH v2] Use correct type for glibc.malloc.perturb in tst-tunconf1.c

Stefan Liebler <[email protected]>
Newsgroups gmane.comp.lib.glibc.alpha
Message-ID <[email protected]>
On s390x the test elf/tunconf1 fails with:
tst-tunconf1.c:41: numeric comparison failure (widths 64 and 32)
   left: 180388626436 (0x2a00000004); from: (long)perturb
  right: 42 (0x2a); from: 42

According to elf/dl-tunables.list, glibc.malloc.perturb is of type int32_t (4byte)
and not size_t (8byte) which was used for TUNABLE_GET_FULL inside the testcase.
Therefore the correct 32bit value 0x2a=42 is written to the to the wrong place
and leads to the comparison failure.

The printf format specifiers for size_t were also adjusted.
---
 elf/tst-tunconf1.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/elf/tst-tunconf1.c b/elf/tst-tunconf1.c
index 74f596d913..227314182a 100644
--- a/elf/tst-tunconf1.c
+++ b/elf/tst-tunconf1.c
@@ -16,6 +16,7 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <inttypes.h>
 #include <stdio.h>
 #include <support/check.h>
 
@@ -26,28 +27,28 @@ do_test (void)
 {
   size_t tcache_count = TUNABLE_GET_FULL (glibc, malloc, tcache_count, size_t, NULL);
   size_t tcache_max = TUNABLE_GET_FULL (glibc, malloc, tcache_max, size_t, NULL);
-  size_t perturb = TUNABLE_GET_FULL (glibc, malloc, perturb, size_t, NULL);
+  int32_t perturb = TUNABLE_GET_FULL (glibc, malloc, perturb, int32_t, NULL);
   size_t mmap_threshold = TUNABLE_GET_FULL (glibc, malloc, mmap_threshold, size_t, NULL);
   size_t trim_threshold = TUNABLE_GET_FULL (glibc, malloc, trim_threshold, size_t, NULL);
 
-  printf("tcache count is %ld (should be 5, from env)\n", (long)tcache_count);
+  printf("tcache count is %zu (should be 5, from env)\n", tcache_count);
   TEST_COMPARE ((long)tcache_count, 5);
-  printf("tcache max is %ld (should be 4, from /etc)\n", (long)tcache_max);
+  printf("tcache max is %zu (should be 4, from /etc)\n", tcache_max);
   TEST_COMPARE ((long)tcache_max, 4);
 
   /* This is set by the environment but blocked by the config.  */
-  printf("perturb is %ld (should be 42, from /etc)\n",
-	 (long)perturb);
-  TEST_COMPARE ((long)perturb, 42);
+  printf("perturb is %" PRId32 " (should be 42, from /etc)\n",
+	 perturb);
+  TEST_COMPARE (perturb, 42);
 
   /* This is blocked by the general config, enabled by filter, set in env.  */
-  printf("mmap_threshold is %ld (should be 10002, from env)\n",
-	 (long)mmap_threshold);
+  printf("mmap_threshold is %zu (should be 10002, from env)\n",
+	 mmap_threshold);
   TEST_COMPARE ((long)mmap_threshold, 10002);
 
   /* This is allowed by the general config, blocked by filter, set in env.  */
-  printf("trim_threshold is %ld (should be 10001, from filter)\n",
-	 (long)trim_threshold);
+  printf("trim_threshold is %zu (should be 10001, from filter)\n",
+	 trim_threshold);
   TEST_COMPARE ((long)trim_threshold, 10001);
 
   return 0;
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.