unicorn/qemu
Markus Armbruster 389afaa743
qapi: Generate a nicer struct for flat unions
The struct generated for a flat union is weird: the members of its
base are at the end, except for the union tag, which is at the
beginning.

Example: qapi-schema-test.json has

{ 'struct': 'UserDefUnionBase',
'data': { 'string': 'str', 'enum1': 'EnumOne' } }

{ 'union': 'UserDefFlatUnion',
'base': 'UserDefUnionBase',
'discriminator': 'enum1',
'data': { 'value1' : 'UserDefA',
'value2' : 'UserDefB',
'value3' : 'UserDefB' } }

We generate:

struct UserDefFlatUnion
{
EnumOne enum1;
union {
void *data;
UserDefA *value1;
UserDefB *value2;
UserDefB *value3;
};
char *string;
};

Change to put all base members at the beginning, unadulterated. Not
only is this easier to understand, it also permits casting the flat
union to its base, if that should become useful.

We now generate:

struct UserDefFlatUnion
{
/* Members inherited from UserDefUnionBase: */
char *string;
EnumOne enum1;
/* Own members: */
union { /* union tag is @enum1 */
void *data;
UserDefA *value1;
UserDefB *value2;
UserDefB *value3;
};
};

Backports commit 1e6c1616a91cdcbe9a8387541f7689b8c11632aa from qemu
2018-02-19 16:14:51 -05:00
..
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu all: Clean up includes 2018-02-19 01:34:28 -05:00
hw x86: Clean up includes 2018-02-19 01:00:09 -05:00
include qom: Make enum string tables const-correct 2018-02-19 16:02:23 -05:00
qapi qom: Make enum string tables const-correct 2018-02-19 16:02:23 -05:00
qobject qobject: Clean up includes 2018-02-19 01:30:42 -05:00
qom qom: Clean up includes 2018-02-19 01:31:35 -05:00
scripts qapi: Generate a nicer struct for flat unions 2018-02-19 16:14:51 -05:00
target-arm tcg: Remove lingering references to gen_opc_buf 2018-02-19 01:42:55 -05:00
target-i386 tcg: Remove lingering references to gen_opc_buf 2018-02-19 01:42:55 -05:00
target-m68k m68k: Clean up includes 2018-02-19 01:06:05 -05:00
target-mips mips: Clean up includes 2018-02-19 00:45:08 -05:00
target-sparc sparc: Clean up includes 2018-02-19 00:52:41 -05:00
tcg tcg: Introduce temp_load 2018-02-19 11:44:01 -05:00
util util: Clean up includes 2018-02-19 01:27:55 -05:00
aarch64.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
aarch64eb.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
accel.c all: Clean up includes 2018-02-19 01:34:28 -05:00
arm.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
armeb.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
CODING_STYLE
configure tcg: Drop ia64 host support 2018-02-04 18:33:02 -05:00
COPYING
COPYING.LIB
cpu-exec-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpu-exec.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpus.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cputlb.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
exec.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c crypto: introduce new module for computing hash digests 2018-02-17 15:23:17 -05:00
HACKING
header_gen.py target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
ioport.c all: Clean up includes 2018-02-19 01:34:28 -05:00
LICENSE
m68k.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
Makefile qapi: Turn generators' mandatory option -i into an argument 2018-02-19 15:22:27 -05:00
Makefile.objs crypto: move crypto objects out of libqemuutil.la 2018-02-17 15:23:50 -05:00
Makefile.target tcg: split tcg_op_defs to -common 2018-02-17 15:23:51 -05:00
memory_mapping.c all: Clean up includes 2018-02-19 01:34:28 -05:00
memory.c memory: Silence unused variable warning 2018-02-18 17:52:03 -05:00
mips64.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
mips64el.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
mips.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
mipsel.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
powerpc.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
qapi-schema.json qapi: Use 'struct' instead of 'type' in schema 2018-02-19 14:22:13 -05:00
qemu-log.c all: Clean up includes 2018-02-19 01:34:28 -05:00
qemu-timer.c all: Clean up includes 2018-02-19 01:34:28 -05:00
rules.mak
softmmu_template.h exec.c: Pass MemTxAttrs to iotlb_to_region so it uses the right AS 2018-02-17 23:19:00 -05:00
sparc64.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
sparc.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
tcg-runtime.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.h translate-all: remove unnecessary argument to tb_invalidate_phys_range 2018-02-13 09:04:51 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION
vl.c vl.c: Remove periods and exclamation points from error messages 2018-02-17 15:24:14 -05:00
vl.h
x86_64.h target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00