MINOR: pool/debug: create a new pool_alloc_flag() macro

This macro just serves as an intermediary for __pool_alloc() and forwards
the flag. When DEBUG_MEM_STATS is set, it will be used to collect all
pool allocations including those which need to pass an explicit flag.

It's now used by b_alloc() which previously couldn't be tracked by
DEBUG_MEM_STATS, causing some free() calls to have no corresponding
allocations.
diff --git a/include/haproxy/dynbuf.h b/include/haproxy/dynbuf.h
index 5e8ece2..45bd4cf 100644
--- a/include/haproxy/dynbuf.h
+++ b/include/haproxy/dynbuf.h
@@ -68,7 +68,7 @@
 		return buf;
 
 	*buf = BUF_WANTED;
-	area = __pool_alloc(pool_head_buffer, POOL_F_NO_POISON);
+	area = pool_alloc_flag(pool_head_buffer, POOL_F_NO_POISON);
 	if (unlikely(!area)) {
 		activity[tid].buf_wait++;
 		return NULL;
diff --git a/include/haproxy/pool.h b/include/haproxy/pool.h
index 8fd14b9..b6aa372 100644
--- a/include/haproxy/pool.h
+++ b/include/haproxy/pool.h
@@ -227,6 +227,12 @@
 #if !defined(DEBUG_MEM_STATS)
 
 /*
+ * Returns a pointer to an object from pool <pool> allocated using
+ * flags <flag> from the POOL_F_* set.
+ */
+#define pool_alloc_flag(pool, flag)  __pool_alloc((pool), (flag))
+
+/*
  * Returns a pointer to type <type> taken from the pool <pool_type> or
  * dynamically allocated. Memory poisonning is performed if enabled.
  */
@@ -272,8 +278,9 @@
 	}								\
 })
 
-#define pool_alloc(pool)  ({						\
+#define pool_alloc_flag(pool, flag)  ({					\
 	struct pool_head *__pool = (pool);				\
+	uint __flag = (flag);						\
 	size_t __x = __pool->size;					\
 	static struct mem_stats _ __attribute__((used,__section__("mem_stats"),__aligned__(sizeof(void*)))) = { \
 		.caller = {						\
@@ -287,26 +294,12 @@
 	HA_WEAK(__stop_mem_stats);					\
 	_HA_ATOMIC_INC(&_.calls);					\
 	_HA_ATOMIC_ADD(&_.size, __x);					\
-	__pool_alloc(__pool, 0);					\
+	__pool_alloc(__pool, __flag);					\
 })
 
-#define pool_zalloc(pool)  ({						\
-	struct pool_head *__pool = (pool);				\
-	size_t __x = __pool->size;					\
-	static struct mem_stats _ __attribute__((used,__section__("mem_stats"),__aligned__(sizeof(void*)))) = { \
-		.caller = {						\
-			.file = __FILE__, .line = __LINE__,		\
-			.what = MEM_STATS_TYPE_P_ALLOC,			\
-			.func = __func__,				\
-		},							\
-	};								\
-	_.extra = __pool;						\
-	HA_WEAK(__start_mem_stats);					\
-	HA_WEAK(__stop_mem_stats);					\
-	_HA_ATOMIC_INC(&_.calls);					\
-	_HA_ATOMIC_ADD(&_.size, __x);					\
-	__pool_alloc(__pool, POOL_F_MUST_ZERO);				\
-})
+#define pool_alloc(pool) pool_alloc_flag(pool, 0)
+
+#define pool_zalloc(pool) pool_alloc_flag(pool, POOL_F_MUST_ZERO)
 
 #endif /* DEBUG_MEM_STATS */