From b67e1558955c1c88dc2a3530322802ce3710bc88 Mon Sep 17 00:00:00 2001 From: Christian Ruppert Date: Mon, 9 Nov 2020 09:15:21 +0100 Subject: [PATCH] BUILD: hpack: hpack-tbl-t.h uses VAR_ARRAY but does not include compiler.h This fixes building hpack from contrib, which failed because of the undeclared VAR_ARRAY: make -C contrib/hpack ... cc -O2 -Wall -g -I../../include -fwrapv -fno-strict-aliasing -c -o gen-enc.o gen-enc.c In file included from gen-enc.c:18: ../../include/haproxy/hpack-tbl-t.h:105:23: error: 'VAR_ARRAY' undeclared here (not in a function) 105 | struct hpack_dte dte[VAR_ARRAY]; /* dynamic table entries */ ... As discussed in the thread below, let's redefine VAR_ARRAY in this file so that it remains self-sustaining: https://www.mail-archive.com/haproxy@formilux.org/msg39212.html --- include/haproxy/hpack-tbl-t.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/haproxy/hpack-tbl-t.h b/include/haproxy/hpack-tbl-t.h index 344f665dd..4e5d53673 100644 --- a/include/haproxy/hpack-tbl-t.h +++ b/include/haproxy/hpack-tbl-t.h @@ -83,6 +83,17 @@ * data bytes, which is larger than the 4064 the protocol requires (4096 - 32). */ +/* + * Gcc before 3.0 needs [0] to declare a variable-size array + */ +#ifndef VAR_ARRAY +#if defined(__GNUC__) && (__GNUC__ < 3) +#define VAR_ARRAY 0 +#else +#define VAR_ARRAY +#endif +#endif + /* One dynamic table entry descriptor */ struct hpack_dte { uint32_t addr; /* storage address, relative to the dte address */