One of the links Mark posted earlier addresses the "The compiler should issue warnings" issue. The short answer is because of macro expansion and other code-rearranging optimizations (inlining functions, loop unrolling, pulling expressions out of a loop, etc.), undefined code appears and is removed more often than you'd expect. Issuing a warning *every time* this happens would generate many confusing warnings that users wouldn't like.
Also, the deeper you get into the optimized code, the harder it is to issue meaningful source-level warnings. E.g. when the compiler optimizes: > static int decimate(x) { return x/10; } > int foo() { > int a=INT_MAX; > int b; > for(i=0; i<100; ++i) { b=max(i, decimate(a*10));} > return b; > } into > int foo() { return INT_MAX; } What warnings should appear for which lines? http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html (third page). --- Wade > On Nov 27, 2013, at 12:19, Octavio Alvarez <alvar...@alvarezp.ods.org> wrote: > >> On 26/11/13 11:37, Mark Haase wrote: >> Compiler developers, for better or worse, reserve the right to do >> whatever they want with undefined behavior, and it's up to the person >> writing the C code to not include undefined behavior in their own program. > > That's a fallacy. The fact that a compiler does not violate the standard does > not imply it is behaving sane. Thus, not violating the standard does not > imply not having a bug. > > Considering a programmer would not ever *ever* want to fall into undefined > behavior, the compiler should just issue warnings before making any kind of > assumptions based after undefined behavior. Those warnings could be silenced > with flags. This is a way of "yes, I'm sure of what I'm doing". > >> Therefore, a Linux distribution has 2 choices: (1) wait for upstream >> patches for bugs/vulnerabilities as they are found, or (2) recompile all >> packages with optimizations disabled. I don't think proposal #2 would >> get very far... > > What about adding cppcheck warnings and gcc -Wall -pedantic be added to > Lintian? > > Or what about changing debhelper to pass some -f flags by default? > > > -- > To UNSUBSCRIBE, email to debian-security-requ...@lists.debian.org > with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org > Archive: http://lists.debian.org/529653df.6010...@alvarezp.ods.org >