On 09/07/2015 09:59 PM, Jonathan Wakely wrote:
> On 07/09/15 21:31 +0200, Florian Weimer wrote:
>> * Jonathan Wakely:
>>
>>> This patch adds the "debug mode lite" we've been talking about, by
>>> changing __glibcxx_assert to be activated by _GLIBCXX_ASSERTIONS
>>> instead of _GLIBCXX_DEBUG (and making the latter imply the former).
>>
>> Interesting.  Is this mode ABI-compatible with the default mode?
> 
> Yes, that's the main reason I want to make this change.

Good.  Past discussions of similar proposals indicated that these
#ifdefs are still ODR violations.

>> Should _FORTIFY_SOURCE imply _GLIBCXX_ASSERTIONS?
> 
> Yes, I think it should.
> 
> You can read my notes on these "debug mode lite" checks at
> https://gcc.gnu.org/wiki/LibstdcxxDebugMode (including "This should be
> discussed with Glibc and security teams" and I specifically had you in
> mind when I wrote that :-)

I doubt we can achieve the complexity goals in all cases.  I expect that

  for (int i = 0; i < 10000; ++i) {
    vector[i];
  }

is optimized away in default mode, but with _GLIBCXX_ASSERTIONS, it is not.

The last time I looked at this, GCC was unable to move bounds checks out
of loops.

-- 
Florian Weimer / Red Hat Product Security

Reply via email to