public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-2553] libstdc++: mallinfo deprecated, use mallinfo2 when glibc => 2.33
@ 2022-09-08 19:21 Franथईois Dumont
  0 siblings, 0 replies; only message in thread
From: Franथईois Dumont @ 2022-09-08 19:21 UTC (permalink / raw)
  To: gcc-cvs, libstdc++-cvs

https://gcc.gnu.org/g:a0f83501182de68ff038f3c69da549e6c80bb6bd

commit r13-2553-ga0f83501182de68ff038f3c69da549e6c80bb6bd
Author: François Dumont <fdumont@gcc.gnu.org>
Date:   Thu Sep 8 06:55:20 2022 +0200

    libstdc++: mallinfo deprecated, use mallinfo2 when glibc => 2.33
    
    glibc mallinfo is now deprecated resulting in make check-performance
    failure. When glibc => 2.33 prefer mallinfo2.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/util/testsuite_performance.h (__gnu_test::MallocInfo): New.
            (__gnu_test::malloc_info): New, replace mallinfo on current platform
            supporting it and use mallinfo2 when glibc >= 2.33.

Diff:
---
 .../testsuite/util/testsuite_performance.h         | 63 +++++++++++-----------
 1 file changed, 30 insertions(+), 33 deletions(-)

diff --git a/libstdc++-v3/testsuite/util/testsuite_performance.h b/libstdc++-v3/testsuite/util/testsuite_performance.h
index 2e05bef8460..4f8b1eab8b9 100644
--- a/libstdc++-v3/testsuite/util/testsuite_performance.h
+++ b/libstdc++-v3/testsuite/util/testsuite_performance.h
@@ -36,42 +36,39 @@
 #include <testsuite_common_types.h>
 
 #if defined (__linux__) || defined (__GLIBC__)
-#include <malloc.h>
-#elif defined (__FreeBSD__)
-extern "C"
-{
-  struct mallinfo
-  {
-    int uordblks;
-    int hblkhd;
-  };
+#include <malloc.h> // For mallinfo.
+#endif
 
-  struct mallinfo
-  mallinfo(void)
-  {
-    struct mallinfo m = { (((std::size_t) sbrk (0) + 1023) / 1024), 0 };
-    return m;
-  }
-}
-#elif !defined (__hpux__)
-extern "C"
+namespace __gnu_test
 {
-  struct mallinfo
+  struct MallocInfo
   {
-    int uordblks;
-    int hblkhd;
-  };
+    MallocInfo() : uordblks(0), hblkhd(0) { }
+    MallocInfo(std::size_t uordblocks, std::size_t hblockhd)
+      : uordblks(uordblocks), hblkhd(hblockhd)
+    { }
 
-  struct mallinfo empty = { 0, 0 };
+    std::size_t uordblks;
+    std::size_t hblkhd;
+  };
 
-  struct mallinfo
-  mallinfo(void)
-  { return empty; }
-}
+  MallocInfo
+  malloc_info()
+  {
+#if defined (__linux__) || defined (__hpux__) || defined (__GLIBC__)
+#if __GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 33
+    struct mallinfo2 mi = mallinfo2();
+#else
+    struct mallinfo mi = mallinfo();
+#endif
+    return MallocInfo(mi.uordblks, mi.hblkhd);
+#elif defined (__FreeBSD__)
+    return MallocInfo((((std::size_t) sbrk (0) + 1023) / 1024), 0);
+#else
+    return MallocInfo();
 #endif
+  }
 
-namespace __gnu_test
-{
   class time_counter
   {
   private:
@@ -146,8 +143,8 @@ namespace __gnu_test
     int                 who;
     rusage	        rusage_begin;
     rusage	        rusage_end;
-    struct mallinfo  	allocation_begin;
-    struct mallinfo  	allocation_end;
+    MallocInfo  	allocation_begin;
+    MallocInfo  	allocation_end;
 
   public:
     resource_counter(int i = RUSAGE_SELF) : who(i)
@@ -168,7 +165,7 @@ namespace __gnu_test
       if (getrusage(who, &rusage_begin) != 0 )
 	memset(&rusage_begin, 0, sizeof(rusage_begin));
       void* p __attribute__((unused)) = malloc(0); // Needed for some implementations.
-      allocation_begin = mallinfo();
+      allocation_begin = malloc_info();
     }
 
     void
@@ -176,7 +173,7 @@ namespace __gnu_test
     {
       if (getrusage(who, &rusage_end) != 0 )
 	memset(&rusage_end, 0, sizeof(rusage_end));
-      allocation_end = mallinfo();
+      allocation_end = malloc_info();
     }
 
     int

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-08 19:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08 19:21 [gcc r13-2553] libstdc++: mallinfo deprecated, use mallinfo2 when glibc => 2.33 Franथईois Dumont

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).