unicorn/qemu/target/i386
Laszlo Ersek 40c04c73b0 target/i386: floatx80: avoid compound literals in static initializers
Quoting ISO C99 6.7.8p4, "All the expressions in an initializer for an
object that has static storage duration shall be constant expressions or
string literals".

The compound literal produced by the make_floatx80() macro is not such a
constant expression, per 6.6p7-9. (An implementation may accept it,
according to 6.6p10, but is not required to.)

Therefore using "floatx80_zero" and make_floatx80() for initializing
"f2xm1_table" and "fpatan_table" is not portable. And gcc-4.8 in RHEL-7.6
actually chokes on them:

> target/i386/fpu_helper.c:871:5: error: initializer element is not constant
> { make_floatx80(0xbfff, 0x8000000000000000ULL),
> ^

We've had the make_floatx80_init() macro for this purpose since commit
3bf7e40ab914 ("softfloat: fix for C99", 2012-03-17), so let's use that
macro again.

Fixes: eca30647fc0 ("target/i386: reimplement f2xm1 using floatx80 operations")
Fixes: ff57bb7b632 ("target/i386: reimplement fpatan using floatx80 operations")

Backports commit 163b3d1af2552845a60967979aca8d78a6b1b088 from qemu
2021-02-25 23:38:54 -05:00
..
arch_memory_mapping.c target/i386: enable A20 automatically in system management mode 2018-03-03 14:33:09 -05:00
bpt_helper.c target/i386: Use env_cpu, env_archcpu 2019-06-12 11:46:35 -04:00
cc_helper.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
cc_helper_template.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
cpu-param.h tcg: Split out target/arch/cpu-param.h 2019-06-10 19:35:46 -04:00
cpu-qom.h i386: Register versioned CPU models 2019-08-08 19:01:35 -04:00
cpu.c target/i386: add fast short REP MOV support 2021-02-25 23:31:42 -05:00
cpu.h target/i386: add fast short REP MOV support 2021-02-25 23:31:42 -05:00
excp_helper.c target/i386: Use env_cpu, env_archcpu 2019-06-12 11:46:35 -04:00
fpu_helper.c target/i386: floatx80: avoid compound literals in static initializers 2021-02-25 23:38:54 -05:00
helper.c target/i386: fix IEEE SSE floating-point exception raising 2021-02-25 23:21:32 -05:00
helper.h target/i386: fix IEEE SSE floating-point exception raising 2021-02-25 23:21:32 -05:00
int_helper.c target/i386: Implement CPUID_EXT_RDRAND 2019-05-23 15:12:50 -04:00
Makefile.objs target/i386: add the CONFIG_TCG into Makefiles 2018-03-03 21:57:22 -05:00
mem_helper.c cpu: Replace ENV_GET_CPU with env_cpu 2019-06-12 11:16:16 -04:00
misc_helper.c target/i386: Fix OUTL debug output 2020-06-15 12:56:33 -04:00
mpx_helper.c target/i386: move cpu_sync_bndcs_hflags() function 2018-03-03 21:41:26 -05:00
ops_sse.h target/i386: fix IEEE SSE floating-point exception raising 2021-02-25 23:21:32 -05:00
ops_sse_header.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
seg_helper.c check arguments, return error instead of raising exceptions. (#1125) 2020-01-14 09:00:11 -05:00
shift_helper_template.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
smm_helper.c target/i386: Use env_cpu, env_archcpu 2019-06-12 11:46:35 -04:00
svm.h target-i386: Add NPT support 2018-07-03 19:52:56 -04:00
svm_helper.c target/i386: Use env_cpu, env_archcpu 2019-06-12 11:46:35 -04:00
topology.h i386: Update new x86_apicid parsing rules with die_offset support 2019-08-08 18:22:03 -04:00
translate.c target/i386: Save cc_op before loop insns 2021-02-25 23:36:43 -05:00
unicorn.c check arguments, return error instead of raising exceptions. (#1125) 2020-01-14 09:00:11 -05:00
unicorn.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00