bpf/arm: fix clang build
authorRuifeng Wang <ruifeng.wang@arm.com>
Fri, 15 Nov 2019 06:47:54 +0000 (14:47 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 20 Nov 2019 23:30:39 +0000 (00:30 +0100)
Clang has different prototype for __builtin___clear_cache().
It requires 'char *' parameters while gcc requires 'void *'.

Clang version 8.0 was used.
Warning messages during build:
../lib/librte_bpf/bpf_jit_arm64.c:1438:26: warning: incompatible pointer
types passing 'uint32_t *' (aka 'unsigned int *') to parameter of type
'char *' [-Wincompatible-pointer-types]
        __builtin___clear_cache(ctx.ins, ctx.ins + ctx.idx);
                                ^~~~~~~
../lib/librte_bpf/bpf_jit_arm64.c:1438:35: warning: incompatible pointer
types passing 'uint32_t *' (aka 'unsigned int *') to parameter of type
'char *' [-Wincompatible-pointer-types]
        __builtin___clear_cache(ctx.ins, ctx.ins + ctx.idx);
                                         ^~~~~~~~~~~~~~~~~

Fixes: f3e516772464 ("bpf/arm: add prologue and epilogue")
Cc: jerinj@marvell.com
Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
lib/librte_bpf/bpf_jit_arm64.c

index 8882fee..a5a5d46 100644 (file)
@@ -1435,7 +1435,7 @@ bpf_jit_arm64(struct rte_bpf *bpf)
        }
 
        /* Flush the icache */
-       __builtin___clear_cache(ctx.ins, ctx.ins + ctx.idx);
+       __builtin___clear_cache((char *)ctx.ins, (char *)(ctx.ins + ctx.idx));
 
        bpf->jit.func = (void *)ctx.ins;
        bpf->jit.sz = size;