In an attempt to build qemu with hardened gcc compiler options, we specified the -ftrapv switch rather than the -fwrapv switch. The switches define the behavior of integer overflows. -ftrapv causes an abort on integer overflow, -fwrapv causes overflows to simply wrap without any error indication. Wrapping overflows can result in unexpected behavior and therefore, hardenened builds typically recommend trapping overflows.
The abort occurs when running the “test-string-input-verifier” test and begins at line 129 of the source: v = visitor_input_test_init(data, “-9223372036854775808, 9223372036854775807”); check_ilist(v, expect3, ARRAY_SIZE(expect3); Where expect3 is declared as: int64_t expect3[] = { INT64_MIN, INT64_MAX }; The actual abort occurs in “string-input-visitor.c” line 209: *obj = siv->rangeNext.i64++; The test, as coded, will generate an overflow. Using the -fwrapv compiler option hides the overflow. My question, is it the intent of the qemu community to rely on the overflow wrap behavior or should this be considered an issue and added as such in gitlab’s issue list? Rich
smime.p7s
Description: S/MIME cryptographic signature