On 3/12/25 13:03, Philippe Mathieu-Daudé wrote:
Solaris defines FSCALE in <sys/param.h>:301 /* 302 * Scale factor for scaled integers used to count 303 * %cpu time and load averages. 304 */ 305 #define FSHIFT 8 /* bits to right of fixed binary point */ 306 #define FSCALE (1<<FSHIFT) When emulating the SVE FSCALE instruction, we defines the same name in decodetree format in target/arm/tcg/sve.decode: 1129:FSCALE 01100101 .. 00 1001 100 ... ..... ..... @rdn_pg_rm This leads to a definition clash: In file included from ../target/arm/tcg/translate-sve.c:21: ../target/arm/tcg/translate.h:875:17: error: pasting "trans_" and "(" does not give a valid preprocessing token 875 | static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ | ^~~~~~ ../target/arm/tcg/translate-sve.c:4205:5: note: in expansion of macro 'TRANS_FEAT' 4205 | TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, name##_zpzz_fns[a->esz], a) | ^~~~~~~~~~ ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 'DO_ZPZZ_FP' 4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) | ^~~~~~~~~~ ../target/arm/tcg/translate-sve.c:4249:12: error: expected declaration specifiers or '...' before numeric constant 4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) | ^~~~~~ ../target/arm/tcg/translate.h:875:25: note: in definition of macro 'TRANS_FEAT' 875 | static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ | ^~~~ ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 'DO_ZPZZ_FP' 4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) | ^~~~~~~~~~ ../target/arm/tcg/translate.h:875:47: error: pasting "arg_" and "(" does not give a valid preprocessing token 875 | static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ | ^~~~ ../target/arm/tcg/translate-sve.c:4205:5: note: in expansion of macro 'TRANS_FEAT' 4205 | TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, name##_zpzz_fns[a->esz], a) | ^~~~~~~~~~ ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 'DO_ZPZZ_FP' 4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) | ^~~~~~~~~~ In file included from ../target/arm/tcg/translate-sve.c:100: libqemu-aarch64-softmmu.a.p/decode-sve.c.inc:1227:13: warning: 'trans_FSCALE' used but never defined 1227 | static bool trans_FSCALE(DisasContext *ctx, arg_FSCALE *a); | ^~~~~~~~~~~~ ../target/arm/tcg/translate-sve.c:4249:30: warning: 'sve_fscalbn_zpzz_fns' defined but not used [-Wunused-const-variable=] 4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) | ^~~~~~~~~~~ ../target/arm/tcg/translate-sve.c:4201:42: note: in definition of macro 'DO_ZPZZ_FP' 4201 | static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] = { \ | ^~~~ As a kludge, undefine it globally in <qemu/osdep.h>. Suggested-by: Richard Henderson <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- include/qemu/osdep.h | 6 ++++++ 1 file changed, 6 insertions(+)
Per IRC: Reviewed-by: Richard Henderson <[email protected]>
