The code in tcg/tci.c reads some data from TCI bytecode through pointer dereferencing. As far as I know unaligned reads in such a way are undefined behavior and compiling with -fsanitize=undefined enumerated them as such at run-time.
I have replaced such reads with invocations of ld{l,q}_he_p. A comment in include/qemu/bswap.h:310 suggests they should be properly translated by the compiler. I didn't added signed/unsigned casts since bswap.h does contain separate signed/unsigned versions for 16-bit integers but does not for 32- and 64-bit ones, so I supposed the developers of the bswap.h already arranged everything so integer promotions don't mess things up. I can add casts in case I'm not right about it. Anatoly Trosinenko (1): tci: eliminate UB due to unaligned reads tcg/tci.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) -- 2.14.1