adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Eric Blake d220fbcd1d qapi: Test for various name collisions
Expose some weaknesses in the generator: we don't always forbid
the generation of structs that contain multiple members that map
to the same C or QMP name.  This has already been marked FIXME in
qapi.py in commit d90675f, but having more tests will make sure
future patches produce desired behavior; and updating existing
patches to better document things doesn't hurt, either.  Some of
these collisions are already caught in the old-style parser
checks, but ultimately we want all collisions to be caught in the
new-style QAPISchema*.check() methods.

This patch focuses on C struct members, and does not consider
collisions between commands and events (affecting C function
names), or even collisions between generated C type names with
user type names (for things like automatic FOOList struct
representing array types or FOOKind for an implicit enum).

There are two types of struct collisions we want to catch:
 1) Collision between two keys in a JSON object. qapi.py prevents
    that within a single struct (see test duplicate-key), but it is
    possible to have collisions between a type's members and its
    base type's members (existing tests struct-base-clash,
    struct-base-clash-deep), and its flat union variant members
    (renamed test flat-union-clash-member).
 2) Collision between two members of the C struct that is generated
    for a given QAPI type:
    a) Multiple QAPI names map to the same C name (new test
       args-name-clash)
    b) A QAPI name maps to a C name that is used for another purpose
       (new tests flat-union-clash-branch, struct-base-clash-base,
       union-clash-data). We already fixed some such cases in commit
       0f61af3e and 1e6c1616, but more remain.
    c) Two C names generated for other purposes clash
       (updated test alternate-clash, new test union-clash-branches,
       union-clash-type, flat-union-clash-type)

Ultimately, if we need to have a flat union where a tag value
clashes with a base member name, we could change the generator to
name the union (using 'foo.u.value' rather than 'foo.value') or
otherwise munge the C name corresponding to tag values.  But
unless such a need arises, it will probably be easier to just
forbid these collisions.

Some of these negative tests will be deleted later, and positive
tests added to qapi-schema-test.json in their place, when the
generator code is reworked to avoid particular code generation
collisions in class 2).

[Note that viewing this patch with git rename detection enabled
may see some confusion due to renaming some tests while adding
others, but where the content is similar enough that git picks
the wrong pre- and post-patch files to associate]

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1443565276-4535-6-git-send-email-eblake@redhat.com>
[Improve commit message and comments a bit, drop an unrelated test]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-10-12 18:44:54 +02:00
audio
backends qemu-char: Use g_new() & friends where that makes obvious sense 2015-09-16 17:33:33 +02:00
block block: switch from g_slice allocator to malloc 2015-10-12 11:17:45 +01:00
bsd-user s/cpu_get_real_ticks/cpu_get_host_ticks/ 2015-10-08 19:46:01 +03:00
crypto crypto: introduce new module for handling TLS sessions 2015-09-15 15:07:43 +01:00
default-configs icc_bus: drop the unused files 2015-10-02 16:22:02 -03:00
disas disas/cris: Fix typo in comment 2015-10-01 17:24:02 -07:00
docs docs: Move files from docs/qmp/ to docs/ 2015-10-12 18:44:53 +02:00
dtc@65cc4d2748
fpu
fsdev maint: remove unused include for dirent.h 2015-09-11 10:21:38 +03:00
gdb-xml s390x/gdb: expose virtualization specific registers 2015-10-02 13:31:52 +02:00
hw Pull request 2015-10-12 15:52:54 +01:00
include Pull request 2015-10-12 15:52:54 +01:00
libdecnumber typofixes - v4 2015-09-11 10:45:43 +03:00
linux-headers vhost: rename VHOST_RESET_OWNER to VHOST_RESET_DEVICE 2015-09-24 16:27:52 +03:00
linux-user linux-user: Remove type casts to union type 2015-10-08 19:46:47 +03:00
migration migration: Disambiguate MAX_THROTTLE 2015-09-30 09:42:04 +02:00
net netfilter: add a netbuffer filter 2015-10-12 13:31:28 +08:00
pc-bios pc-bios/s390-ccw: avoid floating point operations 2015-10-02 13:31:52 +02:00
pixman@87eea99e44
po Update language files for QEMU 2.4.0 2015-09-11 10:21:38 +03:00
qapi qapi: add missing @ 2015-10-08 19:46:47 +03:00
qga typofixes - v4 2015-09-11 10:45:43 +03:00
qobject
qom qom: Fix invalid error check in property_get_str() 2015-09-19 08:10:12 +02:00
roms pseries: Update SLOF firmware image to qemu-slof-20150813 2015-09-23 10:51:09 +10:00
scripts qapi: Clean up qapi.py per pep8 2015-10-12 18:44:54 +02:00
slirp slirp: Fix non blocking connect for w32 2015-09-24 20:52:28 +02:00
stubs monitor: remove target-specific code from monitor.c 2015-09-16 17:33:32 +02:00
target-alpha qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-arm qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-cris qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-i386 qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-lm32 qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-m68k qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-microblaze qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-mips qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-moxie qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-openrisc qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-ppc qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-s390x qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-sh4 qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-sparc qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-tilegx qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-tricore qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-unicore32 qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
target-xtensa qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
tcg tcg: Check for overflow via highwater mark 2015-10-07 20:36:53 +11:00
tests qapi: Test for various name collisions 2015-10-12 18:44:54 +02:00
trace
ui gtk/opengl: add opengl context and scanout support (GtkGLArea) 2015-10-08 10:34:53 +02:00
util oslib: allocate PROT_NONE pages on top of RAM 2015-10-01 16:16:52 +03:00
.dir-locals.el Add .dir-locals.el file to configure emacs coding style 2015-10-08 19:46:01 +03:00
.exrc
.gitignore libcacard: use the standalone project 2015-09-23 23:34:17 +02:00
.gitmodules
.mailmap
.travis.yml .travis.yml: Run make check for all targets, not just some 2015-10-08 19:46:47 +03:00
CODING_STYLE CODING_STYLE: update mixed declaration rules 2015-09-09 15:34:54 +02:00
COPYING
COPYING.LIB
Changelog
HACKING
LICENSE
MAINTAINERS MAINTAINERS: Specify QAPI include and test files 2015-10-12 18:44:53 +02:00
Makefile Makefile: fix build when VPATH is outside GIT tree 2015-09-25 12:04:41 +02:00
Makefile.objs libcacard: use the standalone project 2015-09-23 23:34:17 +02:00
Makefile.target * Linux header update and cleanup 2015-09-16 18:06:54 +01:00
README
VERSION Open 2.5 development tree 2015-08-11 23:15:55 +01:00
accel.c
aio-posix.c
aio-win32.c
arch_init.c smbios: move smbios code into a common folder 2015-08-13 14:08:30 +03:00
async.c AioContext: force event loop iteration using BH 2015-07-29 10:02:06 +01:00
balloon.c
block.c block: disable I/O limits at the beginning of bdrv_close() 2015-10-02 13:48:29 +02:00
blockdev-nbd.c
blockdev.c block: Drop drv parameter from bdrv_open() 2015-09-14 16:51:36 +02:00
blockjob.c
bootdevice.c
bt-host.c
bt-vhci.c
configure virtio-gpu: add 3d rendering support using virgl, misc fixes. 2015-10-09 17:30:03 +01:00
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-exec-common.c cpu-exec: Migrate some generic fns to cpu-exec-common 2015-09-16 17:33:33 +02:00
cpu-exec.c i386: partial revert of interrupt poll fix 2015-09-25 12:04:44 +02:00
cpus.c s/cpu_get_real_ticks/cpu_get_host_ticks/ 2015-10-08 19:46:01 +03:00
cputlb.c cputlb: Change tlb_set_dirty() arg to cpu 2015-09-16 17:33:33 +02:00
device-hotplug.c
device_tree.c
disas.c monitor: make monitor_fprintf and mon_get_cpu externally visible 2015-09-25 12:04:42 +02:00
dma-helpers.c
dump.c
exec.c exec: allocate PROT_NONE pages on top of RAM 2015-10-01 16:16:52 +03:00
gdbstub.c * Support for jemalloc 2015-09-14 16:13:16 +01:00
hmp-commands-info.hx hmp: added io apic dump state 2015-09-25 12:04:42 +02:00
hmp-commands.hx monitor: allow device_del to accept QOM paths 2015-09-22 11:31:56 +02:00
hmp.c qmp/hmp: Add throttle ratio to query-migrate and info migrate 2015-09-30 09:42:04 +02:00
hmp.h hmp: add info iothreads command 2015-09-04 13:26:26 +02:00
iohandler.c iohandler: Use aio API 2015-09-07 18:14:03 +02:00
ioport.c
iothread.c
kvm-all.c intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
kvm-stub.c
main-loop.c iohandler: Use aio API 2015-09-07 18:14:03 +02:00
memory.c memory: allow destroying a non-empty MemoryRegion 2015-10-09 15:25:56 +02:00
memory_mapping.c
module-common.c
monitor.c monitor: make monitor_fprintf and mon_get_cpu externally visible 2015-09-25 12:04:42 +02:00
nbd.c nbd: release exp->blk after all clients are closed 2015-09-16 17:33:33 +02:00
numa.c Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
os-posix.c
os-win32.c maint: remove unused include for signal.h 2015-09-11 10:21:38 +03:00
page_cache.c maint: remove unused include for strings.h 2015-09-11 10:21:38 +03:00
qapi-schema.json init/cleanup of netfilter object 2015-10-12 13:23:40 +08:00
qdev-monitor.c -----BEGIN PGP SIGNATURE----- 2015-10-12 14:29:29 +01:00
qdict-test-data.txt
qemu-bridge-helper.c
qemu-char.c qemu-char: Use g_new() & friends where that makes obvious sense 2015-09-16 17:33:33 +02:00
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-doc.texi monitor: added generation of documentation for hmp-commands-info.hx 2015-09-16 17:33:33 +02:00
qemu-ga.texi qga: start a man page 2015-09-01 13:16:26 -05:00
qemu-img-cmds.hx
qemu-img.c utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
qemu-img.texi maint: remove / fix many doubled words 2015-09-11 10:21:38 +03:00
qemu-io-cmds.c utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
qemu-io.c qemu-io: Remove duplicate 'open' error message 2015-09-14 16:51:36 +02:00
qemu-log.c
qemu-nbd.c qemu-nbd: convert to use the QAPI SocketAddress object 2015-09-25 12:04:40 +02:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx netfilter: add a netbuffer filter 2015-10-12 13:31:28 +08:00
qemu-seccomp.c
qemu-tech.texi doc: Refresh URLs in the qemu-tech documentation 2015-09-25 12:20:21 +02:00
qemu-timer.c
qemu.nsi nsis: Add QEMU version information to Windows registry 2015-09-24 20:52:28 +02:00
qemu.sasl
qjson.c
qmp-commands.hx monitor: allow device_del to accept QOM paths 2015-09-22 11:31:56 +02:00
qmp.c qdev: Protect device-list-properties against broken devices 2015-10-09 15:25:57 +02:00
qtest.c Init page sizes in qtest 2015-09-29 11:33:02 +05:30
rules.mak make: load only required dependency files. 2015-08-13 14:08:25 +03:00
softmmu_template.h softmmu: remove now unused functions 2015-09-11 08:16:05 -07:00
spice-qemu-char.c
tcg-runtime.c
tci.c tcg: Rename debug_insn_start to insn_start 2015-10-07 20:36:26 +11:00
thread-pool.c
thunk.c
tpm.c
trace-events virtio-gpu: add 3d rendering support using virgl, misc fixes. 2015-10-09 17:30:03 +01:00
translate-all.c tcg: Check for overflow via highwater mark 2015-10-07 20:36:53 +11:00
translate-all.h
translate-common.c translate: move real_host_page setting to -common 2015-09-16 17:33:33 +02:00
user-exec.c osdep.h: Remove qemu_printf 2015-08-19 16:29:53 +01:00
version.rc
vl.c -----BEGIN PGP SIGNATURE----- 2015-10-12 14:29:29 +01:00
xen-common-stub.c
xen-common.c migration: Fix regression for xenfv and pc,accel=xen machine. 2015-08-03 16:13:40 +00:00
xen-hvm-stub.c pc: Remove redundant arguments from xen_hvm_init() 2015-09-10 11:05:40 +03:00
xen-hvm.c Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
xen-mapcache.c maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00

README

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team