This is the version 3 of patch 4/4. In this version, setup_kfail_for_target is used to KFAIL the same fail to different PRs according to target triplet, same as what I did in patch 3/4. Run callfuncs.exp with this patch applied on three different targets. Note that there is one extra FAIL in i686-pc-linux-gnu and armv7l-unknown-linux-gnueabi, caused by these KFAILs. i686-pc-linux-gnu: KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex (PRMS: gdb/12783) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex (PRMS: gdb/12783) FAIL: gdb.base/callfuncs.exp: gdb function calls preserve register contents armv7l-unknown-linux-gnueabi: KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex (PRMS: gdb/12797) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex (PRMS: gdb/12797) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex (PRMS: gdb/12797) FAIL: gdb.base/callfuncs.exp: gdb function calls preserve register contents x86_64-pc-linux-gnu: KFAIL: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2) (PRMS: gdb/12798) KFAIL: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4) (PRMS: gdb/12800) KFAIL: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2) (PRMS: gdb/12798) KFAIL: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4) (PRMS: gdb/12800) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex (PRMS: gdb/12796) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex (PRMS: gdb/12796) KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex (GDB internal error) (PRMS: gdb/12796) -- Yao (齐尧)