[klibc] [PATCH v1 3/3] Kbuild: use an enum to silence a clang warning

Bill Wendling morbo at google.com
Mon Nov 9 14:13:36 PST 2020


Clang emits a warning when constant forlding variable length arrays:

    usr/kinit/nfsmount/dummypmap.c:156:8: warning: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
                char payload[MAX_UDP_PACKET + offsetof(struct rpc_header, udp)];
                     ^
    1 error generated.

Using an enum bypasses the constant folding issue.

Signed-off-by: Bill Wendling <morbo at google.com>
---
 usr/kinit/nfsmount/dummypmap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/usr/kinit/nfsmount/dummypmap.c b/usr/kinit/nfsmount/dummypmap.c
index a4e80147..07210c56 100644
--- a/usr/kinit/nfsmount/dummypmap.c
+++ b/usr/kinit/nfsmount/dummypmap.c
@@ -148,12 +148,13 @@ static int check_vrf(struct rpc_auth *vrf)
 
 static int dummy_portmap(int sock, FILE *portmap_file)
 {
+	enum { PAYLOAD_SIZE = MAX_UDP_PACKET + offsetof(struct rpc_header, udp) };
 	struct sockaddr_in sin;
 	int pktlen, addrlen;
 	union {
 		struct rpc_call rpc;
 		/* Max UDP packet size + unused TCP fragment size */
-		char payload[MAX_UDP_PACKET + offsetof(struct rpc_header, udp)];
+		char payload[PAYLOAD_SIZE];
 	} pkt;
 	struct rpc_call *rpc = &pkt.rpc;
 	struct rpc_auth *cred;
-- 
2.29.2.222.g5d2a92d10f8-goog



More information about the klibc mailing list