Message ID | 20231005173812.966264-1-berrange@redhat.com |
---|---|
Headers | show |
Series | topic: meson: add more compiler hardening flags | expand |
On 05/10/2023 19.38, Daniel P. Berrangé wrote: ... > > I also tested enabling -ftrapv, to change signed integer > overflow from wrapping, to trapping instead. This exposed a > bug in the string-input-visitor which overflows when parsing > ranges, and exposed the test-int128 code as (harmlessly) > overflowing during its testing. Both can be fixed, but I'm > not entirely sure whether -ftrapv is viable or not. I was > wondering about TCG and whether it has a need to intentionally > allow integer overflow for any of its instruction emulation > requirements ? I'm not an expert when it comes to this question, but as far as I understood, we are using -fwrapv (with "w", not "t") on purpose, see meson.build: # We use -fwrapv to tell the compiler that we require a C dialect where # left shift of signed integers is well defined and has the expected # 2s-complement style results. (Both clang and gcc agree that it # provides these semantics.) And according to the man-page of gcc: The options -ftrapv and -fwrapv override each other, so using -ftrapv -fwrapv on the command-line results in -fwrapv being effective. If I got that right, this means you cannot use -ftrapv with QEMU. Thomas
On Mon, Oct 09, 2023 at 09:21:01AM +0200, Thomas Huth wrote: > On 05/10/2023 19.38, Daniel P. Berrangé wrote: > ... > > > > I also tested enabling -ftrapv, to change signed integer > > overflow from wrapping, to trapping instead. This exposed a > > bug in the string-input-visitor which overflows when parsing > > ranges, and exposed the test-int128 code as (harmlessly) > > overflowing during its testing. Both can be fixed, but I'm > > not entirely sure whether -ftrapv is viable or not. I was > > wondering about TCG and whether it has a need to intentionally > > allow integer overflow for any of its instruction emulation > > requirements ? > I'm not an expert when it comes to this question, but as far as I > understood, we are using -fwrapv (with "w", not "t") on purpose, see > meson.build: > > # We use -fwrapv to tell the compiler that we require a C dialect where > # left shift of signed integers is well defined and has the expected > # 2s-complement style results. (Both clang and gcc agree that it > # provides these semantics.) > > And according to the man-page of gcc: > > The options -ftrapv and -fwrapv override each other, > so using -ftrapv -fwrapv on the command-line results > in -fwrapv being effective. > > If I got that right, this means you cannot use -ftrapv with QEMU. Opps, I didn't notice we had -fwrapv in our flags, that is clearly mutually exclusive with -ftrapv, so nothing further to do here. With regards, Daniel