[Bug libstdc++/70129] [6 Regression] stdlib.h: No such file or directory when using -isystem /usr/include

chuck at ece dot cmu.edu gcc-bugzilla@gcc.gnu.org
Tue Oct 31 18:33:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129

chuck cranor <chuck at ece dot cmu.edu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |chuck at ece dot cmu.edu

--- Comment #3 from chuck cranor <chuck at ece dot cmu.edu> ---
If the only difference between "-isystem" and "-I" was the change in the
handling of warnings, the #include_next of stdlib.h in libstdc++ would not be
a problem.

The real problem here is that "-isystem /usr/include" changes the include
search path in a way that is incompatible with "-I /usr/include" e.g.

% cat try.cc
#include <cstdlib>
% g++ -c try.cc
% g++ -I /usr/include -c try.cc
% g++ -isystem /usr/include -c try.cc
In file included from try.cc:1:0:
/proj/testbed/data/travis/cache/gcc/include/c++/6.2.0/cstdlib:75:25: fatal
error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
                         ^
compilation terminated.
% 

I think you'll find most build systems that do "-isystem /usr/include"
instead of "-I /usr/include" are only using "-isystem" for the change
in the warning behavior.  The change in the include path order is not
wanted...


More information about the Gcc-bugs mailing list