]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
helper/log: Fix build using _DEBUG_FREE_SPACE_
authorAntonio Borneo <borneo.antonio@gmail.com>
Tue, 20 Feb 2024 02:11:07 +0000 (20:11 -0600)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 25 Jan 2025 10:36:51 +0000 (10:36 +0000)
The glibc API 'mallinfo' is deprecated and the new 'mallinfo2'
should be used from glibc 2.33 (2021-02-01).

Throw an error when '--enable-malloc-logging' is used on systems
that compile without glibc.
Detect the glibc version and, for backward compatibility, define
'mallinfo2' as the old 'mallinfo'. Define a macro for the format
of 'fordblks'.

Change-Id: I68bff7b1b58f0ec2669db0b911f19c1c5a26ed30
Reported-by: Steven J. Hill <steven.hill@konsulko.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8589
Tested-by: jenkins
src/helper/log.c

index e02556b6dbde5d73bfdeb158105db64ce2ed55e9..8f7ab00397f98eaed2b293046f1250d7dd594267 100644 (file)
 #else
 #error "malloc.h is required to use --enable-malloc-logging"
 #endif
+
+#ifdef __GLIBC__
+#if __GLIBC_PREREQ(2, 33)
+#define FORDBLKS_FORMAT " %zu"
+#else
+/* glibc older than 2.33 (2021-02-01) use mallinfo(). Overwrite it */
+#define mallinfo2 mallinfo
+#define FORDBLKS_FORMAT " %d"
+#endif
+#else
+#error "GNU glibc is required to use --enable-malloc-logging"
+#endif
 #endif
 
 int debug_level = LOG_LVL_INFO;
@@ -105,12 +117,11 @@ static void log_puts(enum log_levels level,
                /* print with count and time information */
                int64_t t = timeval_ms() - start;
 #ifdef _DEBUG_FREE_SPACE_
-               struct mallinfo info;
-               info = mallinfo();
+               struct mallinfo2 info = mallinfo2();
 #endif
                fprintf(log_output, "%s%d %" PRId64 " %s:%d %s()"
 #ifdef _DEBUG_FREE_SPACE_
-                       " %d"
+                       FORDBLKS_FORMAT
 #endif
                        ": %s", log_strings[level + 1], count, t, file, line, function,
 #ifdef _DEBUG_FREE_SPACE_