From fc52eea5e29a8fbcb12e40098ce7822188a0e197 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 3 Mar 2018 23:07:15 -0500 Subject: [PATCH] tcg: Expand glue macros before stringifying helper names Backports commit 44368ac62dc5ba014b68b2c1a8ec6fedc3242a5d from qemu --- qemu/include/exec/helper-tcg.h | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/qemu/include/exec/helper-tcg.h b/qemu/include/exec/helper-tcg.h index 978fb13f..ca265e40 100644 --- a/qemu/include/exec/helper-tcg.h +++ b/qemu/include/exec/helper-tcg.h @@ -6,31 +6,35 @@ #include "exec/helper-head.h" +/* Need one more level of indirection before stringification + to get all the macros expanded first. */ +#define str(s) #s + #define DEF_HELPER_FLAGS_0(NAME, FLAGS, ret) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) }, #define DEF_HELPER_FLAGS_1(NAME, FLAGS, ret, t1) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) | dh_sizemask(t1, 1) }, #define DEF_HELPER_FLAGS_2(NAME, FLAGS, ret, t1, t2) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | dh_sizemask(t2, 2) }, #define DEF_HELPER_FLAGS_3(NAME, FLAGS, ret, t1, t2, t3) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) }, #define DEF_HELPER_FLAGS_4(NAME, FLAGS, ret, t1, t2, t3, t4) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) }, #define DEF_HELPER_FLAGS_5(NAME, FLAGS, ret, t1, t2, t3, t4, t5) \ - { HELPER(NAME), #NAME, FLAGS, \ + { HELPER(NAME), str(#NAME), FLAGS, \ dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) \ | dh_sizemask(t5, 5) }, @@ -38,6 +42,7 @@ #include "helper.h" #include "tcg-runtime.h" +#undef str #undef DEF_HELPER_FLAGS_0 #undef DEF_HELPER_FLAGS_1 #undef DEF_HELPER_FLAGS_2