diff mbox series

op_helper: fix some compile warnings

Message ID 20200420054959.8082-1-pannengyuan@huawei.com
State New
Headers show
Series op_helper: fix some compile warnings | expand

Commit Message

Pan Nengyuan April 20, 2020, 5:49 a.m. UTC
We got the following compile-time warnings(gcc7.3):
/mnt/sdb//qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
/mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     env->psw_c = (tmp0 >= tmp1);
                  ~~~~~~^~~~~~~~
/mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
/mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
/mnt/sdb/qemu/target/rx/op_helper.c:299:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     env->psw_c = (tmp <= env->regs[2]);
                  ~~~~~^~~~~~~~~~~~~~~~
/mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
/mnt/sdb/qemu/target/rx/op_helper.c:318:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     env->psw_c = (tmp <= env->regs[2]);

Actually, it looks like a false-positive because it will enter the body of while loop and init it for the first time.
Let's change 'while' to 'do .. while' to avoid it.

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
---
 target/rx/op_helper.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Comments

no-reply@patchew.org April 20, 2020, 3:13 a.m. UTC | #1
Patchew URL: https://patchew.org/QEMU/20200420054959.8082-1-pannengyuan@huawei.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

PASS 1 fdc-test /x86_64/fdc/cmos
PASS 2 fdc-test /x86_64/fdc/no_media_on_start
PASS 3 fdc-test /x86_64/fdc/read_without_media
==6162==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 fdc-test /x86_64/fdc/media_change
PASS 5 fdc-test /x86_64/fdc/sense_interrupt
PASS 6 fdc-test /x86_64/fdc/relative_seek
---
PASS 32 test-opts-visitor /visitor/opts/range/beyond
PASS 33 test-opts-visitor /visitor/opts/dict/unvisited
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" 
==6198==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6198==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc2178c000; bottom 0x7fc08d0c6000; size: 0x003b946c6000 (255893200896)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-coroutine /basic/no-dangling-access
---
PASS 12 fdc-test /x86_64/fdc/read_no_dma_19
PASS 13 fdc-test /x86_64/fdc/fuzz-registers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" 
==6213==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 test-aio /aio/timer/schedule
PASS 15 test-aio /aio/coroutine/queue-chaining
PASS 16 test-aio /aio-gsource/flush
---
PASS 25 test-aio /aio-gsource/event/wait
PASS 26 test-aio /aio-gsource/event/flush
PASS 27 test-aio /aio-gsource/event/wait/no-flush-cb
==6221==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ide-test /x86_64/ide/identify
==6227==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ide-test /x86_64/ide/flush
==6233==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 28 test-aio /aio-gsource/timer/schedule
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" 
PASS 3 ide-test /x86_64/ide/bmdma/simple_rw
==6240==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-aio-multithread /aio/multi/lifecycle
==6242==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ide-test /x86_64/ide/bmdma/trim
PASS 2 test-aio-multithread /aio/multi/schedule
==6259==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-aio-multithread /aio/multi/mutex/contended
PASS 4 test-aio-multithread /aio/multi/mutex/handoff
PASS 5 test-aio-multithread /aio/multi/mutex/mcs
PASS 6 test-aio-multithread /aio/multi/mutex/pthread
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" 
==6288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-throttle /throttle/leak_bucket
PASS 2 test-throttle /throttle/compute_wait
PASS 3 test-throttle /throttle/init
---
PASS 14 test-throttle /throttle/config/max
PASS 15 test-throttle /throttle/config/iops_size
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" 
==6292==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-thread-pool /thread-pool/submit
PASS 2 test-thread-pool /thread-pool/submit-aio
PASS 3 test-thread-pool /thread-pool/submit-co
PASS 4 test-thread-pool /thread-pool/submit-many
==6285==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 test-thread-pool /thread-pool/cancel
PASS 6 test-thread-pool /thread-pool/cancel-async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" 
---
PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium
PASS 29 test-hbitmap /hbitmap/truncate/shrink/large
PASS 30 test-hbitmap /hbitmap/serialize/align
==6367==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 test-hbitmap /hbitmap/serialize/basic
PASS 32 test-hbitmap /hbitmap/serialize/part
PASS 33 test-hbitmap /hbitmap/serialize/zeroes
---
PASS 39 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4
PASS 40 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_after_truncate
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" 
==6374==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-drain /bdrv-drain/nested
PASS 2 test-bdrv-drain /bdrv-drain/multiparent
PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context
---
PASS 41 test-bdrv-drain /bdrv-drain/bdrv_drop_intermediate/poll
PASS 42 test-bdrv-drain /bdrv-drain/replace_child/mid-drain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" 
==6413==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree
PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" 
==6417==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob /blockjob/ids
PASS 2 test-blockjob /blockjob/cancel/created
PASS 3 test-blockjob /blockjob/cancel/running
---
PASS 7 test-blockjob /blockjob/cancel/pending
PASS 8 test-blockjob /blockjob/cancel/concluded
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" 
==6421==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-blockjob-txn /single/success
PASS 2 test-blockjob-txn /single/failure
PASS 3 test-blockjob-txn /single/cancel
---
PASS 6 test-blockjob-txn /pair/cancel
PASS 7 test-blockjob-txn /pair/fail-cancel-race
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" 
==6425==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-backend /block-backend/drain_aio_error
PASS 2 test-block-backend /block-backend/drain_all_aio_error
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" 
==6429==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-block-iothread /sync-op/pread
PASS 2 test-block-iothread /sync-op/pwrite
PASS 3 test-block-iothread /sync-op/load_vmstate
---
PASS 15 test-block-iothread /propagate/diamond
PASS 16 test-block-iothread /propagate/mirror
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" 
==6449==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-image-locking /image-locking/basic
PASS 2 test-image-locking /image-locking/set-perm-abort
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" 
---
PASS 9 test-int128 /int128/int128_gt
PASS 10 test-int128 /int128/int128_rshift
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/rcutorture -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="rcutorture" 
==6471==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 rcutorture /rcu/torture/1reader
PASS 2 rcutorture /rcu/torture/10readers
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" 
---
PASS 2 test-rcu-list /rcu/qlist/short-few
PASS 3 test-rcu-list /rcu/qlist/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" 
==6540==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded
PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few
PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" 
PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded
PASS 2 test-rcu-tailq /rcu/qtailq/short-few
==6612==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 test-rcu-tailq /rcu/qtailq/long-many
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-rcu-slist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-slist" 
PASS 1 test-rcu-slist /rcu/qslist/single-threaded
---
PASS 7 test-qdist /qdist/binning/expand
PASS 8 test-qdist /qdist/binning/shrink
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" 
==6651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6664==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6670==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qht /qht/mode/default
PASS 2 test-qht /qht/mode/resize
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" 
---
PASS 1 check-qom-interface /qom/interface/direct_impl
PASS 2 check-qom-interface /qom/interface/intermediate_impl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/check-qom-proplist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="check-qom-proplist" 
==6694==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 check-qom-proplist /qom/proplist/createlist
PASS 2 check-qom-proplist /qom/proplist/createv
PASS 3 check-qom-proplist /qom/proplist/createcmdline
---
PASS 8 check-qom-proplist /qom/proplist/delchild
PASS 9 check-qom-proplist /qom/resolve/partial
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qemu-opts -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qemu-opts" 
==6694==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff7d779000; bottom 0x7fb4857fe000; size: 0x004af7f7b000 (321987784704)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 6 ide-test /x86_64/ide/bmdma/no_busmaster
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" 
PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver
PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient
==6757==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ide-test /x86_64/ide/flush/empty_drive
PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1
PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2
==6767==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 ide-test /x86_64/ide/flush/retry_pci
PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3
PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1
PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2
PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3
==6773==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1
PASS 10 ide-test /x86_64/ide/flush/retry_isa
==6779==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 ide-test /x86_64/ide/cdrom/pio
PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2
PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3
==6785==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4
PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5
PASS 12 ide-test /x86_64/ide/cdrom/pio_large
---
PASS 32 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive1
PASS 33 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive2
PASS 34 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/inactive3
==6791==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 ide-test /x86_64/ide/cdrom/dma
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" 
==6805==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 ahci-test /x86_64/ahci/sanity
==6811==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 ahci-test /x86_64/ahci/pci_spec
PASS 35 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain1
PASS 36 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/chain2
---
PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver
PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" 
==6817==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 ahci-test /x86_64/ahci/pci_enable
==6827==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 ahci-test /x86_64/ahci/hba_spec
PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk
==6833==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca
PASS 5 ahci-test /x86_64/ahci/hba_enable
PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca
==6839==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 ahci-test /x86_64/ahci/identify
PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1
PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2
==6845==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 ahci-test /x86_64/ahci/max
PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3
==6851==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 ahci-test /x86_64/ahci/reset
PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4
PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5
==6857==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6
==6857==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdd7e85000; bottom 0x7fe017dfe000; size: 0x001dc0087000 (127775830016)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero
PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1
==6863==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6863==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe4f5c1000; bottom 0x7ff9451fe000; size: 0x00050a3c3000 (21646553088)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2
PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low
PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3
==6869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4
==6869==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff643e6000; bottom 0x7f26ceffe000; size: 0x00d8953e8000 (930216837120)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high
==6875==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6875==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffc629b000; bottom 0x7f6fc7ffe000; size: 0x008ffe29d000 (618444476416)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5
PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6
PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero
==6881==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6881==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffc8188000; bottom 0x7f19973fe000; size: 0x00e630d8a000 (988661981184)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low
PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" 
==6887==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6887==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef4f85000; bottom 0x7f97017fe000; size: 0x0067f3787000 (446466387968)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high
==6901==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-qga /qga/sync-delimited
PASS 2 test-qga /qga/sync
PASS 3 test-qga /qga/ping
---
PASS 15 test-qga /qga/invalid-cmd
PASS 16 test-qga /qga/invalid-args
PASS 17 test-qga /qga/fsfreeze-status
==6901==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7075d000; bottom 0x7f91beb24000; size: 0x006cb1c39000 (466838851584)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero
==6910==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==6910==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffca1b68000; bottom 0x7ff8339fe000; size: 0x00046e16a000 (19026845696)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 18 test-qga /qga/blacklist
---
PASS 20 test-qga /qga/guest-exec
PASS 21 test-qga /qga/guest-exec-invalid
PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low
==6928==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 22 test-qga /qga/guest-get-osinfo
PASS 23 test-qga /qga/guest-get-host-name
PASS 24 test-qga /qga/guest-get-timezone
PASS 25 test-qga /qga/guest-get-users
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-timed-average -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-timed-average" 
==6928==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffffccb6000; bottom 0x7f1e3c9fe000; size: 0x00e1c02b8000 (969591717888)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 1 test-timed-average /timed-average/average
---
PASS 2 test-authz-list /auth/list/add-remove
PASS 3 test-authz-list /auth/list/default/deny
PASS 4 test-authz-list /auth/list/default/allow
==6952==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 test-authz-list /auth/list/explicit/deny
PASS 6 test-authz-list /auth/list/explicit/allow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-authz-listfile -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-authz-listfile" 
---
PASS 8 test-io-channel-socket /io/channel/socket/unix-fd-pass
PASS 9 test-io-channel-socket /io/channel/socket/unix-listen-cleanup
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-file -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-file" 
==6972==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-channel-file /io/channel/file
PASS 2 test-io-channel-file /io/channel/file/rdwr
PASS 3 test-io-channel-file /io/channel/file/fd
---
PASS 3 test-io-channel-command /io/channel/command/echo/sync
PASS 4 test-io-channel-command /io/channel/command/echo/async
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-io-channel-buffer -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-buffer" 
==7034==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-io-channel-buffer /io/channel/buf
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-base64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-base64" 
PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high
---
PASS 8 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c
PASS 9 test-crypto-ivgen /crypto/ivgen/essiv/1f2e3d4c5b6a7988
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-afsplit -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-afsplit" 
==7051==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-crypto-afsplit /crypto/afsplit/sha256/5
PASS 2 test-crypto-afsplit /crypto/afsplit/sha256/5000
PASS 3 test-crypto-afsplit /crypto/afsplit/sha256/big
PASS 4 test-crypto-afsplit /crypto/afsplit/sha1/1000
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-xts -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-xts" 
==7051==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd98ed7000; bottom 0x7ff7e73fe000; size: 0x0005b1ad9000 (24455778304)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-crypto-block -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-block" 
PASS 1 test-crypto-block /crypto/block/qcow
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-logging -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-logging" 
==7073==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-logging /logging/parse_range
PASS 2 test-logging /logging/parse_path
PASS 3 test-logging /logging/logfile_write_path
PASS 4 test-logging /logging/logfile_lock_path
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" 
==7073==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc818db000; bottom 0x7fe1169fe000; size: 0x001b6aedd000 (117758087168)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low
==7088==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-replication /replication/primary/read
PASS 2 test-replication /replication/primary/write
==7091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7091==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe0b2d2000; bottom 0x7f2ab43fe000; size: 0x00d356ed4000 (907696488448)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high
---
PASS 4 test-replication /replication/primary/stop
PASS 5 test-replication /replication/primary/do_checkpoint
PASS 6 test-replication /replication/primary/get_error_all
==7098==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7098==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffc0209000; bottom 0x7fb8599fe000; size: 0x00476680b000 (306662387712)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 7 test-replication /replication/secondary/read
PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero
==7104==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7104==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff626f2000; bottom 0x7f75499fe000; size: 0x008a18cf4000 (593121722368)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 8 test-replication /replication/secondary/write
PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low
==7110==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7110==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7b3ea000; bottom 0x7f5e659fe000; size: 0x00a0159ec000 (687557492736)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high
==7088==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff91584000; bottom 0x7f96b4fdd000; size: 0x0068dc5a7000 (450373513216)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 9 test-replication /replication/secondary/start
==7117==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7117==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff7ce69000; bottom 0x7f2a239fe000; size: 0x00d55946b000 (916325838848)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero
==7151==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7151==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff07b15000; bottom 0x7f91fd97c000; size: 0x006d0a199000 (468320882688)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low
==7157==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7157==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc85052000; bottom 0x7f708eb7c000; size: 0x008bf64d6000 (601132720128)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 10 test-replication /replication/secondary/stop
PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high
==7163==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero
==7169==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low
PASS 11 test-replication /replication/secondary/continuous_replication
==7175==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high
==7181==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented
==7187==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 test-replication /replication/secondary/do_checkpoint
PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry
==7193==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 test-replication /replication/secondary/get_error_all
PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" 
==7199==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low
==7208==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high
==7214==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero
==7220==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low
==7226==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high
==7232==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7232==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc05fba000; bottom 0x7fcb153fd000; size: 0x0030f0bbd000 (210197270528)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero
==7239==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7239==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff54b84000; bottom 0x7ff66f7fd000; size: 0x0008e5387000 (38205419520)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low
==7246==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7246==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffccb800000; bottom 0x7f8c59b23000; size: 0x007071cdd000 (482945650688)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high
==7253==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero
==7259==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low
==7265==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high
==7271==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero
==7277==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low
==7283==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high
==7289==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero
==7295==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low
==7301==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high
==7307==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7307==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdc807d000; bottom 0x7f711c323000; size: 0x008cabd5a000 (604178325504)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero
==7314==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7314==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdb47f8000; bottom 0x7f2fccbfd000; size: 0x00cde7bfb000 (884356395008)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low
==7321==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7321==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdc657e000; bottom 0x7f1a4a5fd000; size: 0x00e37bf81000 (977037430784)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high
==7328==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero
==7334==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low
==7340==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high
==7346==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 59 ahci-test /x86_64/ahci/io/ncq/simple
==7352==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 60 ahci-test /x86_64/ahci/io/ncq/retry
==7358==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 61 ahci-test /x86_64/ahci/flush/simple
==7364==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 62 ahci-test /x86_64/ahci/flush/retry
==7370==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7376==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 test-bufferiszero /cutils/bufferiszero
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  tests/test-uuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-uuid" 
PASS 1 test-uuid /uuid/is_null
---
PASS 22 test-qgraph /qgraph/test_test_in_path
PASS 23 test-qgraph /qgraph/test_double_edge
PASS 63 ahci-test /x86_64/ahci/flush/migrate
==7397==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7403==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 64 ahci-test /x86_64/ahci/migrate/sanity
==7411==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7417==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple
==7425==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7431==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted
==7439==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7445==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple
==7453==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7459==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted
==7467==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 69 ahci-test /x86_64/ahci/cdrom/eject
==7472==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single
==7478==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi
==7484==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single
==7490==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7490==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef35a7000; bottom 0x7fd3f23dc000; size: 0x002b011cb000 (184702251008)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi
==7496==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" 
PASS 1 hd-geo-test /x86_64/hd-geo/ide/none
==7510==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0
==7516==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank
==7522==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba
==7528==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs
==7534==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank
==7540==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba
==7546==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs
==7552==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs
==7557==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst
==7563==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7567==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7571==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7575==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7579==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7583==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7587==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7591==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7594==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 hd-geo-test /x86_64/hd-geo/override/ide
==7601==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7605==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7609==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7613==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7617==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7621==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7625==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7629==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7632==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 hd-geo-test /x86_64/hd-geo/override/scsi
==7639==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7643==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7647==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7655==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7659==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7663==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7667==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7670==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 hd-geo-test /x86_64/hd-geo/override/scsi_2_controllers
==7677==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7681==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7685==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7689==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7692==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 hd-geo-test /x86_64/hd-geo/override/virtio_blk
==7699==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7703==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7706==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 hd-geo-test /x86_64/hd-geo/override/zero_chs
==7713==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7717==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7721==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7725==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7728==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 hd-geo-test /x86_64/hd-geo/override/scsi_hot_unplug
==7735==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7739==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7743==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7747==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
==7750==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 17 hd-geo-test /x86_64/hd-geo/override/virtio_hot_unplug
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" 
PASS 1 boot-order-test /x86_64/boot-order/pc
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7819==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP'
Using expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7825==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP'
Using expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7831==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.bridge'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7837==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7843==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.cphp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7850==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.memhp'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7856==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.numamem'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7862==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7871==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/pc/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/pc/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7878==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.bridge'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7884==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.mmio64'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7890==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7896==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.cphp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7903==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.memhp'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7909==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.numamem'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7915==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==7924==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!

Looking for expected file 'tests/data/acpi/q35/FACP.acpihmat'
Looking for expected file 'tests/data/acpi/q35/FACP'
---
PASS 1 i440fx-test /x86_64/i440fx/defaults
PASS 2 i440fx-test /x86_64/i440fx/pam
PASS 3 i440fx-test /x86_64/i440fx/firmware/bios
==8016==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" 
PASS 1 fw_cfg-test /x86_64/fw_cfg/signature
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" 
PASS 1 drive_del-test /x86_64/drive_del/without-dev
PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add
==8109==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" 
PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause
---
PASS 1 usb-hcd-uhci-test /x86_64/uhci/pci/init
PASS 2 usb-hcd-uhci-test /x86_64/uhci/pci/port1
PASS 3 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug
==8304==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug/usb-storage
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/usb-hcd-ehci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="usb-hcd-ehci-test" 
PASS 1 usb-hcd-ehci-test /x86_64/ehci/pci/uhci-port-1
---
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/usb-hcd-xhci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="usb-hcd-xhci-test" 
PASS 1 usb-hcd-xhci-test /x86_64/xhci/pci/init
PASS 2 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug
==8322==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-uas
PASS 4 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-ccid
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/cpu-plug-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="cpu-plug-test" 
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8458==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 1 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8464==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 2 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid-auto
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8470==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 vmgenid-test /x86_64/vmgenid/vmgenid/query-monitor
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}  QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qtest/tpm-crb-swtpm-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="tpm-crb-swtpm-test" 
SKIP 1 tpm-crb-swtpm-test /x86_64/tpm/crb-swtpm/test # SKIP swtpm not in PATH or missing --tpm2 support
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8569==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8575==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 3 migration-test /x86_64/migration/fd_proto
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8582==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8588==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 4 migration-test /x86_64/migration/validate_uuid
PASS 5 migration-test /x86_64/migration/validate_uuid_error
PASS 6 migration-test /x86_64/migration/validate_uuid_src_not_set
---
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8638==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8644==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 8 migration-test /x86_64/migration/auto_converge
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8652==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8658==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 9 migration-test /x86_64/migration/postcopy/unix
PASS 10 migration-test /x86_64/migration/postcopy/recovery
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8687==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8693==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 11 migration-test /x86_64/migration/precopy/unix
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8701==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8707==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 12 migration-test /x86_64/migration/precopy/tcp
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8715==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8721==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 13 migration-test /x86_64/migration/xbzrle/unix
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8729==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8735==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 14 migration-test /x86_64/migration/multifd/tcp/none
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8853==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 15 migration-test /x86_64/migration/multifd/tcp/cancel
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8909==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8915==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
PASS 16 migration-test /x86_64/migration/multifd/tcp/zlib
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8971==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory
qemu-system-x86_64: falling back to tcg
==8977==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
**
ERROR:/tmp/qemu-test/src/tests/qtest/migration-test.c:354:migrate_set_parameter_int: assertion failed: (qdict_haskey(rsp, "return"))
ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/qtest/migration-test.c:354:migrate_set_parameter_int: assertion failed: (qdict_haskey(rsp, "return"))
/tmp/qemu-test/src/tests/qtest/libqtest.c:166: kill_qemu() tried to terminate QEMU process but encountered exit status 1 (expected 0)
make: *** [/tmp/qemu-test/src/tests/Makefile.include:636: check-qtest-x86_64] Error 1
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 664, in <module>
    sys.exit(main())
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=e447026e5bd848bda619c9b3393753aa', '-u', '1001', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=x86_64-softmmu', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-bla7zzvi/src/docker-src.2020-04-19-22.30.57.27203:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-debug']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=e447026e5bd848bda619c9b3393753aa
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-bla7zzvi/src'
make: *** [docker-run-test-debug@fedora] Error 2

real    42m52.370s
user    0m9.249s


The full log is available at
http://patchew.org/logs/20200420054959.8082-1-pannengyuan@huawei.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Yoshinori Sato April 20, 2020, 8:50 a.m. UTC | #2
On Mon, 20 Apr 2020 14:49:59 +0900,
Pan Nengyuan wrote:
> 
> We got the following compile-time warnings(gcc7.3):
> /mnt/sdb//qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>      env->psw_c = (tmp0 >= tmp1);
>                   ~~~~~~^~~~~~~~
> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
> /mnt/sdb/qemu/target/rx/op_helper.c:299:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>      env->psw_c = (tmp <= env->regs[2]);
>                   ~~~~~^~~~~~~~~~~~~~~~
> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
> /mnt/sdb/qemu/target/rx/op_helper.c:318:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>      env->psw_c = (tmp <= env->regs[2]);
> 
> Actually, it looks like a false-positive because it will enter the body of while loop and init it for the first time.
> Let's change 'while' to 'do .. while' to avoid it.

OK.

> Reported-by: Euler Robot <euler.robot@huawei.com>
> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
> ---
>  target/rx/op_helper.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
> index f89d294f2b..b612ab1da8 100644
> --- a/target/rx/op_helper.c
> +++ b/target/rx/op_helper.c
> @@ -201,14 +201,14 @@ void helper_scmpu(CPURXState *env)
>      if (env->regs[3] == 0) {
>          return;
>      }
> -    while (env->regs[3] != 0) {
> +    do {
>          tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
>          tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
>          env->regs[3]--;
>          if (tmp0 != tmp1 || tmp0 == '\0') {
>              break;
>          }
> -    }
> +    } while (env->regs[3] != 0);
>      env->psw_z = tmp0 - tmp1;
>      env->psw_c = (tmp0 >= tmp1);
>  }
> @@ -287,14 +287,14 @@ void helper_suntil(CPURXState *env, uint32_t sz)
>      if (env->regs[3] == 0) {
>          return ;
>      }
> -    while (env->regs[3] != 0) {
> +    do {
>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>          env->regs[1] += 1 << sz;
>          env->regs[3]--;
>          if (tmp == env->regs[2]) {
>              break;
>          }
> -    }
> +    } while (env->regs[3] != 0);
>      env->psw_z = tmp - env->regs[2];
>      env->psw_c = (tmp <= env->regs[2]);
>  }
> @@ -306,14 +306,14 @@ void helper_swhile(CPURXState *env, uint32_t sz)
>      if (env->regs[3] == 0) {
>          return ;
>      }
> -    while (env->regs[3] != 0) {
> +    do {
>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>          env->regs[1] += 1 << sz;
>          env->regs[3]--;
>          if (tmp != env->regs[2]) {
>              break;
>          }
> -    }
> +    } while (env->regs[3] != 0);
>      env->psw_z = env->regs[3];
>      env->psw_c = (tmp <= env->regs[2]);
>  }
> -- 
> 2.18.2
> 
> 

It looks different result in env->regs[3] is zero.
In such a case, nothing changes.

I think that the warning of the uninitialized variable
will disappear by fixing as follows.

From 5de0c54a970e01e96b41870252d0ea54ec61c540 Mon Sep 17 00:00:00 2001
From: Yoshinori Sato <ysato@users.sourceforge.jp>
Date: Mon, 20 Apr 2020 17:41:04 +0900
Subject: [PATCH] target/rx/op_helper: Fix uninitialized warning.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 target/rx/op_helper.c | 101 ++++++++++++++++++++----------------------
 1 file changed, 49 insertions(+), 52 deletions(-)

diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
index f89d294f2b..f84f6c706c 100644
--- a/target/rx/op_helper.c
+++ b/target/rx/op_helper.c
@@ -284,38 +284,36 @@ void helper_suntil(CPURXState *env, uint32_t sz)
 {
     uint32_t tmp;
     tcg_debug_assert(sz < 3);
-    if (env->regs[3] == 0) {
-        return ;
-    }
-    while (env->regs[3] != 0) {
-        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
-        env->regs[1] += 1 << sz;
-        env->regs[3]--;
-        if (tmp == env->regs[2]) {
-            break;
+    if (env->regs[3] > 0) {
+        while (env->regs[3] != 0) {
+            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
+            env->regs[1] += 1 << sz;
+            env->regs[3]--;
+            if (tmp == env->regs[2]) {
+                break;
+            }
         }
+        env->psw_z = tmp - env->regs[2];
+        env->psw_c = (tmp <= env->regs[2]);
     }
-    env->psw_z = tmp - env->regs[2];
-    env->psw_c = (tmp <= env->regs[2]);
 }
 
 void helper_swhile(CPURXState *env, uint32_t sz)
 {
     uint32_t tmp;
     tcg_debug_assert(sz < 3);
-    if (env->regs[3] == 0) {
-        return ;
-    }
-    while (env->regs[3] != 0) {
-        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
-        env->regs[1] += 1 << sz;
-        env->regs[3]--;
-        if (tmp != env->regs[2]) {
-            break;
+    if (env->regs[3] > 0) {
+        while (env->regs[3] != 0) {
+            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
+            env->regs[1] += 1 << sz;
+            env->regs[3]--;
+            if (tmp != env->regs[2]) {
+                break;
+            }
         }
+        env->psw_z = env->regs[3];
+        env->psw_c = (tmp <= env->regs[2]);
     }
-    env->psw_z = env->regs[3];
-    env->psw_c = (tmp <= env->regs[2]);
 }
 
 /* accumlator operations */
@@ -325,40 +323,39 @@ void helper_rmpa(CPURXState *env, uint32_t sz)
     int32_t result_h;
     int64_t tmp0, tmp1;
 
-    if (env->regs[3] == 0) {
-        return;
-    }
-    result_l = env->regs[5];
-    result_l <<= 32;
-    result_l |= env->regs[4];
-    result_h = env->regs[6];
-    env->psw_o = 0;
+    if (env->regs[3] > 0) {
+        result_l = env->regs[5];
+        result_l <<= 32;
+        result_l |= env->regs[4];
+        result_h = env->regs[6];
+        env->psw_o = 0;
 
-    while (env->regs[3] != 0) {
-        tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
-        tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
-        tmp0 *= tmp1;
-        prev = result_l;
-        result_l += tmp0;
-        /* carry / bollow */
-        if (tmp0 < 0) {
-            if (prev > result_l) {
-                result_h--;
-            }
-        } else {
-            if (prev < result_l) {
-                result_h++;
+        while (env->regs[3] != 0) {
+            tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
+            tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
+            tmp0 *= tmp1;
+            prev = result_l;
+            result_l += tmp0;
+            /* carry / bollow */
+            if (tmp0 < 0) {
+                if (prev > result_l) {
+                    result_h--;
+                }
+            } else {
+                if (prev < result_l) {
+                    result_h++;
+                }
             }
-        }
 
-        env->regs[1] += 1 << sz;
-        env->regs[2] += 1 << sz;
+            env->regs[1] += 1 << sz;
+            env->regs[2] += 1 << sz;
+        }
+        env->psw_s = result_h;
+        env->psw_o = (result_h != 0 && result_h != -1) << 31;
+        env->regs[6] = result_h;
+        env->regs[5] = result_l >> 32;
+        env->regs[4] = result_l & 0xffffffff;
     }
-    env->psw_s = result_h;
-    env->psw_o = (result_h != 0 && result_h != -1) << 31;
-    env->regs[6] = result_h;
-    env->regs[5] = result_l >> 32;
-    env->regs[4] = result_l & 0xffffffff;
 }
 
 void helper_racw(CPURXState *env, uint32_t imm)
Pan Nengyuan April 20, 2020, 9:18 a.m. UTC | #3
On 4/20/2020 4:50 PM, Yoshinori Sato wrote:
> On Mon, 20 Apr 2020 14:49:59 +0900,
> Pan Nengyuan wrote:
>>
>> We got the following compile-time warnings(gcc7.3):
>> /mnt/sdb//qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
>> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>      env->psw_c = (tmp0 >= tmp1);
>>                   ~~~~~~^~~~~~~~
>> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
>> /mnt/sdb/qemu/target/rx/op_helper.c:299:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>      env->psw_c = (tmp <= env->regs[2]);
>>                   ~~~~~^~~~~~~~~~~~~~~~
>> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
>> /mnt/sdb/qemu/target/rx/op_helper.c:318:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>      env->psw_c = (tmp <= env->regs[2]);
>>
>> Actually, it looks like a false-positive because it will enter the body of while loop and init it for the first time.
>> Let's change 'while' to 'do .. while' to avoid it.
> 
> OK.
> 
>> Reported-by: Euler Robot <euler.robot@huawei.com>
>> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
>> ---
>>  target/rx/op_helper.c | 12 ++++++------
>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
>> index f89d294f2b..b612ab1da8 100644
>> --- a/target/rx/op_helper.c
>> +++ b/target/rx/op_helper.c
>> @@ -201,14 +201,14 @@ void helper_scmpu(CPURXState *env)
>>      if (env->regs[3] == 0) {
>>          return;
>>      }
>> -    while (env->regs[3] != 0) {
>> +    do {
>>          tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
>>          tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
>>          env->regs[3]--;
>>          if (tmp0 != tmp1 || tmp0 == '\0') {
>>              break;
>>          }
>> -    }
>> +    } while (env->regs[3] != 0);
>>      env->psw_z = tmp0 - tmp1;
>>      env->psw_c = (tmp0 >= tmp1);
>>  }
>> @@ -287,14 +287,14 @@ void helper_suntil(CPURXState *env, uint32_t sz)
>>      if (env->regs[3] == 0) {
>>          return ;
>>      }
>> -    while (env->regs[3] != 0) {
>> +    do {
>>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>          env->regs[1] += 1 << sz;
>>          env->regs[3]--;
>>          if (tmp == env->regs[2]) {
>>              break;
>>          }
>> -    }
>> +    } while (env->regs[3] != 0);
>>      env->psw_z = tmp - env->regs[2];
>>      env->psw_c = (tmp <= env->regs[2]);
>>  }
>> @@ -306,14 +306,14 @@ void helper_swhile(CPURXState *env, uint32_t sz)
>>      if (env->regs[3] == 0) {
>>          return ;
>>      }
>> -    while (env->regs[3] != 0) {
>> +    do {
>>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>          env->regs[1] += 1 << sz;
>>          env->regs[3]--;
>>          if (tmp != env->regs[2]) {
>>              break;
>>          }
>> -    }
>> +    } while (env->regs[3] != 0);
>>      env->psw_z = env->regs[3];
>>      env->psw_c = (tmp <= env->regs[2]);
>>  }
>> -- 
>> 2.18.2
>>
>>
> 
> It looks different result in env->regs[3] is zero.

If env->regs[3] is zero, it will return at the begin of these functions:

  if (env->regs[3] == 0) {
      return;
  }

Thus, the while loop will not be reached.
In this case, I think 'while' and 'do .. while' will get the same result and it will disappear the warnings.

> In such a case, nothing changes.
> 
> I think that the warning of the uninitialized variable
> will disappear by fixing as follows.
> 

Yes, it also can fix these warnings.

Thanks.

>>From 5de0c54a970e01e96b41870252d0ea54ec61c540 Mon Sep 17 00:00:00 2001
> From: Yoshinori Sato <ysato@users.sourceforge.jp>
> Date: Mon, 20 Apr 2020 17:41:04 +0900
> Subject: [PATCH] target/rx/op_helper: Fix uninitialized warning.
> 
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  target/rx/op_helper.c | 101 ++++++++++++++++++++----------------------
>  1 file changed, 49 insertions(+), 52 deletions(-)
> 
> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
> index f89d294f2b..f84f6c706c 100644
> --- a/target/rx/op_helper.c
> +++ b/target/rx/op_helper.c
> @@ -284,38 +284,36 @@ void helper_suntil(CPURXState *env, uint32_t sz)
>  {
>      uint32_t tmp;
>      tcg_debug_assert(sz < 3);
> -    if (env->regs[3] == 0) {
> -        return ;
> -    }
> -    while (env->regs[3] != 0) {
> -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> -        env->regs[1] += 1 << sz;
> -        env->regs[3]--;
> -        if (tmp == env->regs[2]) {
> -            break;
> +    if (env->regs[3] > 0) {
> +        while (env->regs[3] != 0) {
> +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> +            env->regs[1] += 1 << sz;
> +            env->regs[3]--;
> +            if (tmp == env->regs[2]) {
> +                break;
> +            }
>          }
> +        env->psw_z = tmp - env->regs[2];
> +        env->psw_c = (tmp <= env->regs[2]);
>      }
> -    env->psw_z = tmp - env->regs[2];
> -    env->psw_c = (tmp <= env->regs[2]);
>  }
>  
>  void helper_swhile(CPURXState *env, uint32_t sz)
>  {
>      uint32_t tmp;
>      tcg_debug_assert(sz < 3);
> -    if (env->regs[3] == 0) {
> -        return ;
> -    }
> -    while (env->regs[3] != 0) {
> -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> -        env->regs[1] += 1 << sz;
> -        env->regs[3]--;
> -        if (tmp != env->regs[2]) {
> -            break;
> +    if (env->regs[3] > 0) {
> +        while (env->regs[3] != 0) {
> +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> +            env->regs[1] += 1 << sz;
> +            env->regs[3]--;
> +            if (tmp != env->regs[2]) {
> +                break;
> +            }
>          }
> +        env->psw_z = env->regs[3];
> +        env->psw_c = (tmp <= env->regs[2]);
>      }
> -    env->psw_z = env->regs[3];
> -    env->psw_c = (tmp <= env->regs[2]);
>  }
>  
>  /* accumlator operations */
> @@ -325,40 +323,39 @@ void helper_rmpa(CPURXState *env, uint32_t sz)
>      int32_t result_h;
>      int64_t tmp0, tmp1;
>  
> -    if (env->regs[3] == 0) {
> -        return;
> -    }
> -    result_l = env->regs[5];
> -    result_l <<= 32;
> -    result_l |= env->regs[4];
> -    result_h = env->regs[6];
> -    env->psw_o = 0;
> +    if (env->regs[3] > 0) {
> +        result_l = env->regs[5];
> +        result_l <<= 32;
> +        result_l |= env->regs[4];
> +        result_h = env->regs[6];
> +        env->psw_o = 0;
>  
> -    while (env->regs[3] != 0) {
> -        tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
> -        tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
> -        tmp0 *= tmp1;
> -        prev = result_l;
> -        result_l += tmp0;
> -        /* carry / bollow */
> -        if (tmp0 < 0) {
> -            if (prev > result_l) {
> -                result_h--;
> -            }
> -        } else {
> -            if (prev < result_l) {
> -                result_h++;
> +        while (env->regs[3] != 0) {
> +            tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
> +            tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
> +            tmp0 *= tmp1;
> +            prev = result_l;
> +            result_l += tmp0;
> +            /* carry / bollow */
> +            if (tmp0 < 0) {
> +                if (prev > result_l) {
> +                    result_h--;
> +                }
> +            } else {
> +                if (prev < result_l) {
> +                    result_h++;
> +                }
>              }
> -        }
>  
> -        env->regs[1] += 1 << sz;
> -        env->regs[2] += 1 << sz;
> +            env->regs[1] += 1 << sz;
> +            env->regs[2] += 1 << sz;
> +        }
> +        env->psw_s = result_h;
> +        env->psw_o = (result_h != 0 && result_h != -1) << 31;
> +        env->regs[6] = result_h;
> +        env->regs[5] = result_l >> 32;
> +        env->regs[4] = result_l & 0xffffffff;
>      }
> -    env->psw_s = result_h;
> -    env->psw_o = (result_h != 0 && result_h != -1) << 31;
> -    env->regs[6] = result_h;
> -    env->regs[5] = result_l >> 32;
> -    env->regs[4] = result_l & 0xffffffff;
>  }
>  
>  void helper_racw(CPURXState *env, uint32_t imm)
>
Yoshinori Sato April 20, 2020, 9:49 a.m. UTC | #4
On Mon, 20 Apr 2020 18:18:39 +0900,
Pan Nengyuan wrote:
> 
> 
> 
> On 4/20/2020 4:50 PM, Yoshinori Sato wrote:
> > On Mon, 20 Apr 2020 14:49:59 +0900,
> > Pan Nengyuan wrote:
> >>
> >> We got the following compile-time warnings(gcc7.3):
> >> /mnt/sdb//qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
> >> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >>      env->psw_c = (tmp0 >= tmp1);
> >>                   ~~~~~~^~~~~~~~
> >> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
> >> /mnt/sdb/qemu/target/rx/op_helper.c:299:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >>      env->psw_c = (tmp <= env->regs[2]);
> >>                   ~~~~~^~~~~~~~~~~~~~~~
> >> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
> >> /mnt/sdb/qemu/target/rx/op_helper.c:318:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >>      env->psw_c = (tmp <= env->regs[2]);
> >>
> >> Actually, it looks like a false-positive because it will enter the body of while loop and init it for the first time.
> >> Let's change 'while' to 'do .. while' to avoid it.
> > 
> > OK.
> > 
> >> Reported-by: Euler Robot <euler.robot@huawei.com>
> >> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
> >> ---
> >>  target/rx/op_helper.c | 12 ++++++------
> >>  1 file changed, 6 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
> >> index f89d294f2b..b612ab1da8 100644
> >> --- a/target/rx/op_helper.c
> >> +++ b/target/rx/op_helper.c
> >> @@ -201,14 +201,14 @@ void helper_scmpu(CPURXState *env)
> >>      if (env->regs[3] == 0) {
> >>          return;
> >>      }
> >> -    while (env->regs[3] != 0) {
> >> +    do {
> >>          tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
> >>          tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
> >>          env->regs[3]--;
> >>          if (tmp0 != tmp1 || tmp0 == '\0') {
> >>              break;
> >>          }
> >> -    }
> >> +    } while (env->regs[3] != 0);
> >>      env->psw_z = tmp0 - tmp1;
> >>      env->psw_c = (tmp0 >= tmp1);
> >>  }
> >> @@ -287,14 +287,14 @@ void helper_suntil(CPURXState *env, uint32_t sz)
> >>      if (env->regs[3] == 0) {
> >>          return ;
> >>      }
> >> -    while (env->regs[3] != 0) {
> >> +    do {
> >>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> >>          env->regs[1] += 1 << sz;
> >>          env->regs[3]--;
> >>          if (tmp == env->regs[2]) {
> >>              break;
> >>          }
> >> -    }
> >> +    } while (env->regs[3] != 0);
> >>      env->psw_z = tmp - env->regs[2];
> >>      env->psw_c = (tmp <= env->regs[2]);
> >>  }
> >> @@ -306,14 +306,14 @@ void helper_swhile(CPURXState *env, uint32_t sz)
> >>      if (env->regs[3] == 0) {
> >>          return ;
> >>      }
> >> -    while (env->regs[3] != 0) {
> >> +    do {
> >>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> >>          env->regs[1] += 1 << sz;
> >>          env->regs[3]--;
> >>          if (tmp != env->regs[2]) {
> >>              break;
> >>          }
> >> -    }
> >> +    } while (env->regs[3] != 0);
> >>      env->psw_z = env->regs[3];
> >>      env->psw_c = (tmp <= env->regs[2]);
> >>  }
> >> -- 
> >> 2.18.2
> >>
> >>
> > 
> > It looks different result in env->regs[3] is zero.
> 
> If env->regs[3] is zero, it will return at the begin of these functions:
> 
>   if (env->regs[3] == 0) {
>       return;
>   }
> 
> Thus, the while loop will not be reached.
> In this case, I think 'while' and 'do .. while' will get the same result and it will disappear the warnings.

Oh. Sorry. I misunderstood.

Since the pseudo code described in the manual uses while,
I think it's easier for everyone to understand by following
the description.

> > In such a case, nothing changes.
> > 
> > I think that the warning of the uninitialized variable
> > will disappear by fixing as follows.
> > 
> 
> Yes, it also can fix these warnings.

OK. Thanks.

> Thanks.
> 
> >>From 5de0c54a970e01e96b41870252d0ea54ec61c540 Mon Sep 17 00:00:00 2001
> > From: Yoshinori Sato <ysato@users.sourceforge.jp>
> > Date: Mon, 20 Apr 2020 17:41:04 +0900
> > Subject: [PATCH] target/rx/op_helper: Fix uninitialized warning.
> > 
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > ---
> >  target/rx/op_helper.c | 101 ++++++++++++++++++++----------------------
> >  1 file changed, 49 insertions(+), 52 deletions(-)
> > 
> > diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
> > index f89d294f2b..f84f6c706c 100644
> > --- a/target/rx/op_helper.c
> > +++ b/target/rx/op_helper.c
> > @@ -284,38 +284,36 @@ void helper_suntil(CPURXState *env, uint32_t sz)
> >  {
> >      uint32_t tmp;
> >      tcg_debug_assert(sz < 3);
> > -    if (env->regs[3] == 0) {
> > -        return ;
> > -    }
> > -    while (env->regs[3] != 0) {
> > -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> > -        env->regs[1] += 1 << sz;
> > -        env->regs[3]--;
> > -        if (tmp == env->regs[2]) {
> > -            break;
> > +    if (env->regs[3] > 0) {
> > +        while (env->regs[3] != 0) {
> > +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> > +            env->regs[1] += 1 << sz;
> > +            env->regs[3]--;
> > +            if (tmp == env->regs[2]) {
> > +                break;
> > +            }
> >          }
> > +        env->psw_z = tmp - env->regs[2];
> > +        env->psw_c = (tmp <= env->regs[2]);
> >      }
> > -    env->psw_z = tmp - env->regs[2];
> > -    env->psw_c = (tmp <= env->regs[2]);
> >  }
> >  
> >  void helper_swhile(CPURXState *env, uint32_t sz)
> >  {
> >      uint32_t tmp;
> >      tcg_debug_assert(sz < 3);
> > -    if (env->regs[3] == 0) {
> > -        return ;
> > -    }
> > -    while (env->regs[3] != 0) {
> > -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> > -        env->regs[1] += 1 << sz;
> > -        env->regs[3]--;
> > -        if (tmp != env->regs[2]) {
> > -            break;
> > +    if (env->regs[3] > 0) {
> > +        while (env->regs[3] != 0) {
> > +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
> > +            env->regs[1] += 1 << sz;
> > +            env->regs[3]--;
> > +            if (tmp != env->regs[2]) {
> > +                break;
> > +            }
> >          }
> > +        env->psw_z = env->regs[3];
> > +        env->psw_c = (tmp <= env->regs[2]);
> >      }
> > -    env->psw_z = env->regs[3];
> > -    env->psw_c = (tmp <= env->regs[2]);
> >  }
> >  
> >  /* accumlator operations */
> > @@ -325,40 +323,39 @@ void helper_rmpa(CPURXState *env, uint32_t sz)
> >      int32_t result_h;
> >      int64_t tmp0, tmp1;
> >  
> > -    if (env->regs[3] == 0) {
> > -        return;
> > -    }
> > -    result_l = env->regs[5];
> > -    result_l <<= 32;
> > -    result_l |= env->regs[4];
> > -    result_h = env->regs[6];
> > -    env->psw_o = 0;
> > +    if (env->regs[3] > 0) {
> > +        result_l = env->regs[5];
> > +        result_l <<= 32;
> > +        result_l |= env->regs[4];
> > +        result_h = env->regs[6];
> > +        env->psw_o = 0;
> >  
> > -    while (env->regs[3] != 0) {
> > -        tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
> > -        tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
> > -        tmp0 *= tmp1;
> > -        prev = result_l;
> > -        result_l += tmp0;
> > -        /* carry / bollow */
> > -        if (tmp0 < 0) {
> > -            if (prev > result_l) {
> > -                result_h--;
> > -            }
> > -        } else {
> > -            if (prev < result_l) {
> > -                result_h++;
> > +        while (env->regs[3] != 0) {
> > +            tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
> > +            tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
> > +            tmp0 *= tmp1;
> > +            prev = result_l;
> > +            result_l += tmp0;
> > +            /* carry / bollow */
> > +            if (tmp0 < 0) {
> > +                if (prev > result_l) {
> > +                    result_h--;
> > +                }
> > +            } else {
> > +                if (prev < result_l) {
> > +                    result_h++;
> > +                }
> >              }
> > -        }
> >  
> > -        env->regs[1] += 1 << sz;
> > -        env->regs[2] += 1 << sz;
> > +            env->regs[1] += 1 << sz;
> > +            env->regs[2] += 1 << sz;
> > +        }
> > +        env->psw_s = result_h;
> > +        env->psw_o = (result_h != 0 && result_h != -1) << 31;
> > +        env->regs[6] = result_h;
> > +        env->regs[5] = result_l >> 32;
> > +        env->regs[4] = result_l & 0xffffffff;
> >      }
> > -    env->psw_s = result_h;
> > -    env->psw_o = (result_h != 0 && result_h != -1) << 31;
> > -    env->regs[6] = result_h;
> > -    env->regs[5] = result_l >> 32;
> > -    env->regs[4] = result_l & 0xffffffff;
> >  }
> >  
> >  void helper_racw(CPURXState *env, uint32_t imm)
> >
Pan Nengyuan April 20, 2020, 11:04 a.m. UTC | #5
On 4/20/2020 5:49 PM, Yoshinori Sato wrote:
> On Mon, 20 Apr 2020 18:18:39 +0900,
> Pan Nengyuan wrote:
>>
>>
>>
>> On 4/20/2020 4:50 PM, Yoshinori Sato wrote:
>>> On Mon, 20 Apr 2020 14:49:59 +0900,
>>> Pan Nengyuan wrote:
>>>>
>>>> We got the following compile-time warnings(gcc7.3):
>>>> /mnt/sdb//qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
>>>> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>>      env->psw_c = (tmp0 >= tmp1);
>>>>                   ~~~~~~^~~~~~~~
>>>> /mnt/sdb/qemu/target/rx/op_helper.c:213:24: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
>>>> /mnt/sdb/qemu/target/rx/op_helper.c:299:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>>      env->psw_c = (tmp <= env->regs[2]);
>>>>                   ~~~~~^~~~~~~~~~~~~~~~
>>>> /mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
>>>> /mnt/sdb/qemu/target/rx/op_helper.c:318:23: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>>      env->psw_c = (tmp <= env->regs[2]);
>>>>
>>>> Actually, it looks like a false-positive because it will enter the body of while loop and init it for the first time.
>>>> Let's change 'while' to 'do .. while' to avoid it.
>>>
>>> OK.
>>>
>>>> Reported-by: Euler Robot <euler.robot@huawei.com>
>>>> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
>>>> ---
>>>>  target/rx/op_helper.c | 12 ++++++------
>>>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>>>
>>>> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
>>>> index f89d294f2b..b612ab1da8 100644
>>>> --- a/target/rx/op_helper.c
>>>> +++ b/target/rx/op_helper.c
>>>> @@ -201,14 +201,14 @@ void helper_scmpu(CPURXState *env)
>>>>      if (env->regs[3] == 0) {
>>>>          return;
>>>>      }
>>>> -    while (env->regs[3] != 0) {
>>>> +    do {
>>>>          tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
>>>>          tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
>>>>          env->regs[3]--;
>>>>          if (tmp0 != tmp1 || tmp0 == '\0') {
>>>>              break;
>>>>          }
>>>> -    }
>>>> +    } while (env->regs[3] != 0);
>>>>      env->psw_z = tmp0 - tmp1;
>>>>      env->psw_c = (tmp0 >= tmp1);
>>>>  }
>>>> @@ -287,14 +287,14 @@ void helper_suntil(CPURXState *env, uint32_t sz)
>>>>      if (env->regs[3] == 0) {
>>>>          return ;
>>>>      }
>>>> -    while (env->regs[3] != 0) {
>>>> +    do {
>>>>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>>>          env->regs[1] += 1 << sz;
>>>>          env->regs[3]--;
>>>>          if (tmp == env->regs[2]) {
>>>>              break;
>>>>          }
>>>> -    }
>>>> +    } while (env->regs[3] != 0);
>>>>      env->psw_z = tmp - env->regs[2];
>>>>      env->psw_c = (tmp <= env->regs[2]);
>>>>  }
>>>> @@ -306,14 +306,14 @@ void helper_swhile(CPURXState *env, uint32_t sz)
>>>>      if (env->regs[3] == 0) {
>>>>          return ;
>>>>      }
>>>> -    while (env->regs[3] != 0) {
>>>> +    do {
>>>>          tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>>>          env->regs[1] += 1 << sz;
>>>>          env->regs[3]--;
>>>>          if (tmp != env->regs[2]) {
>>>>              break;
>>>>          }
>>>> -    }
>>>> +    } while (env->regs[3] != 0);
>>>>      env->psw_z = env->regs[3];
>>>>      env->psw_c = (tmp <= env->regs[2]);
>>>>  }
>>>> -- 
>>>> 2.18.2
>>>>
>>>>
>>>
>>> It looks different result in env->regs[3] is zero.
>>
>> If env->regs[3] is zero, it will return at the begin of these functions:
>>
>>   if (env->regs[3] == 0) {
>>       return;
>>   }
>>
>> Thus, the while loop will not be reached.
>> In this case, I think 'while' and 'do .. while' will get the same result and it will disappear the warnings.
> 
> Oh. Sorry. I misunderstood.
> 
> Since the pseudo code described in the manual uses while,
> I think it's easier for everyone to understand by following
> the description.
> 
>>> In such a case, nothing changes.
>>>
>>> I think that the warning of the uninitialized variable
>>> will disappear by fixing as follows.
>>>
>>
>> Yes, it also can fix these warnings.

Oh, I'm sorry for my mistake, it can't disappear the warnings:

/mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_scmpu’:
/mnt/sdb/qemu/target/rx/op_helper.c:211:28: error: ‘tmp1’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         env->psw_c = (tmp0 >= tmp1);
                      ~~~~~~^~~~~~~~
/mnt/sdb/qemu/target/rx/op_helper.c:211:28: error: ‘tmp0’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  CC      ppc64abi32-linux-user/target/ppc/translate.o
  CC      ppc64le-linux-user/target/ppc/translate.o
  CC      ppc64-linux-user/target/ppc/translate.o
  CC      ppc-linux-user/target/ppc/translate.o
/mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_suntil’:
/mnt/sdb/qemu/target/rx/op_helper.c:296:27: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         env->psw_c = (tmp <= env->regs[2]);
                      ~~~~~^~~~~~~~~~~~~~~~
/mnt/sdb/qemu/target/rx/op_helper.c: In function ‘helper_swhile’:
/mnt/sdb/qemu/target/rx/op_helper.c:314:27: error: ‘tmp’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         env->psw_c = (tmp <= env->regs[2]);
                      ~~~~~^~~~~~~~~~~~~~~~

If we want to use 'while' as the pseudo code described in the manual, can we init the tmp variable at the beginning? like that:

     uint32_t tmp = 0;

> 
> OK. Thanks.
> 
>> Thanks.
>>
>>> >From 5de0c54a970e01e96b41870252d0ea54ec61c540 Mon Sep 17 00:00:00 2001
>>> From: Yoshinori Sato <ysato@users.sourceforge.jp>
>>> Date: Mon, 20 Apr 2020 17:41:04 +0900
>>> Subject: [PATCH] target/rx/op_helper: Fix uninitialized warning.
>>>
>>> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
>>> ---
>>>  target/rx/op_helper.c | 101 ++++++++++++++++++++----------------------
>>>  1 file changed, 49 insertions(+), 52 deletions(-)
>>>
>>> diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
>>> index f89d294f2b..f84f6c706c 100644
>>> --- a/target/rx/op_helper.c
>>> +++ b/target/rx/op_helper.c
>>> @@ -284,38 +284,36 @@ void helper_suntil(CPURXState *env, uint32_t sz)
>>>  {
>>>      uint32_t tmp;
>>>      tcg_debug_assert(sz < 3);
>>> -    if (env->regs[3] == 0) {
>>> -        return ;
>>> -    }
>>> -    while (env->regs[3] != 0) {
>>> -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>> -        env->regs[1] += 1 << sz;
>>> -        env->regs[3]--;
>>> -        if (tmp == env->regs[2]) {
>>> -            break;
>>> +    if (env->regs[3] > 0) {
>>> +        while (env->regs[3] != 0) {
>>> +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>> +            env->regs[1] += 1 << sz;
>>> +            env->regs[3]--;
>>> +            if (tmp == env->regs[2]) {
>>> +                break;
>>> +            }
>>>          }
>>> +        env->psw_z = tmp - env->regs[2];
>>> +        env->psw_c = (tmp <= env->regs[2]);
>>>      }
>>> -    env->psw_z = tmp - env->regs[2];
>>> -    env->psw_c = (tmp <= env->regs[2]);
>>>  }
>>>  
>>>  void helper_swhile(CPURXState *env, uint32_t sz)
>>>  {
>>>      uint32_t tmp;
>>>      tcg_debug_assert(sz < 3);
>>> -    if (env->regs[3] == 0) {
>>> -        return ;
>>> -    }
>>> -    while (env->regs[3] != 0) {
>>> -        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>> -        env->regs[1] += 1 << sz;
>>> -        env->regs[3]--;
>>> -        if (tmp != env->regs[2]) {
>>> -            break;
>>> +    if (env->regs[3] > 0) {
>>> +        while (env->regs[3] != 0) {
>>> +            tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
>>> +            env->regs[1] += 1 << sz;
>>> +            env->regs[3]--;
>>> +            if (tmp != env->regs[2]) {
>>> +                break;
>>> +            }
>>>          }
>>> +        env->psw_z = env->regs[3];
>>> +        env->psw_c = (tmp <= env->regs[2]);
>>>      }
>>> -    env->psw_z = env->regs[3];
>>> -    env->psw_c = (tmp <= env->regs[2]);
>>>  }
>>>  
>>>  /* accumlator operations */
>>> @@ -325,40 +323,39 @@ void helper_rmpa(CPURXState *env, uint32_t sz)
>>>      int32_t result_h;
>>>      int64_t tmp0, tmp1;
>>>  
>>> -    if (env->regs[3] == 0) {
>>> -        return;
>>> -    }
>>> -    result_l = env->regs[5];
>>> -    result_l <<= 32;
>>> -    result_l |= env->regs[4];
>>> -    result_h = env->regs[6];
>>> -    env->psw_o = 0;
>>> +    if (env->regs[3] > 0) {
>>> +        result_l = env->regs[5];
>>> +        result_l <<= 32;
>>> +        result_l |= env->regs[4];
>>> +        result_h = env->regs[6];
>>> +        env->psw_o = 0;
>>>  
>>> -    while (env->regs[3] != 0) {
>>> -        tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
>>> -        tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
>>> -        tmp0 *= tmp1;
>>> -        prev = result_l;
>>> -        result_l += tmp0;
>>> -        /* carry / bollow */
>>> -        if (tmp0 < 0) {
>>> -            if (prev > result_l) {
>>> -                result_h--;
>>> -            }
>>> -        } else {
>>> -            if (prev < result_l) {
>>> -                result_h++;
>>> +        while (env->regs[3] != 0) {
>>> +            tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
>>> +            tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
>>> +            tmp0 *= tmp1;
>>> +            prev = result_l;
>>> +            result_l += tmp0;
>>> +            /* carry / bollow */
>>> +            if (tmp0 < 0) {
>>> +                if (prev > result_l) {
>>> +                    result_h--;
>>> +                }
>>> +            } else {
>>> +                if (prev < result_l) {
>>> +                    result_h++;
>>> +                }
>>>              }
>>> -        }
>>>  
>>> -        env->regs[1] += 1 << sz;
>>> -        env->regs[2] += 1 << sz;
>>> +            env->regs[1] += 1 << sz;
>>> +            env->regs[2] += 1 << sz;
>>> +        }
>>> +        env->psw_s = result_h;
>>> +        env->psw_o = (result_h != 0 && result_h != -1) << 31;
>>> +        env->regs[6] = result_h;
>>> +        env->regs[5] = result_l >> 32;
>>> +        env->regs[4] = result_l & 0xffffffff;
>>>      }
>>> -    env->psw_s = result_h;
>>> -    env->psw_o = (result_h != 0 && result_h != -1) << 31;
>>> -    env->regs[6] = result_h;
>>> -    env->regs[5] = result_l >> 32;
>>> -    env->regs[4] = result_l & 0xffffffff;
>>>  }
>>>  
>>>  void helper_racw(CPURXState *env, uint32_t imm)
>>>
>
diff mbox series

Patch

diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
index f89d294f2b..b612ab1da8 100644
--- a/target/rx/op_helper.c
+++ b/target/rx/op_helper.c
@@ -201,14 +201,14 @@  void helper_scmpu(CPURXState *env)
     if (env->regs[3] == 0) {
         return;
     }
-    while (env->regs[3] != 0) {
+    do {
         tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
         tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
         env->regs[3]--;
         if (tmp0 != tmp1 || tmp0 == '\0') {
             break;
         }
-    }
+    } while (env->regs[3] != 0);
     env->psw_z = tmp0 - tmp1;
     env->psw_c = (tmp0 >= tmp1);
 }
@@ -287,14 +287,14 @@  void helper_suntil(CPURXState *env, uint32_t sz)
     if (env->regs[3] == 0) {
         return ;
     }
-    while (env->regs[3] != 0) {
+    do {
         tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
         env->regs[1] += 1 << sz;
         env->regs[3]--;
         if (tmp == env->regs[2]) {
             break;
         }
-    }
+    } while (env->regs[3] != 0);
     env->psw_z = tmp - env->regs[2];
     env->psw_c = (tmp <= env->regs[2]);
 }
@@ -306,14 +306,14 @@  void helper_swhile(CPURXState *env, uint32_t sz)
     if (env->regs[3] == 0) {
         return ;
     }
-    while (env->regs[3] != 0) {
+    do {
         tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
         env->regs[1] += 1 << sz;
         env->regs[3]--;
         if (tmp != env->regs[2]) {
             break;
         }
-    }
+    } while (env->regs[3] != 0);
     env->psw_z = env->regs[3];
     env->psw_c = (tmp <= env->regs[2]);
 }