[cfe-dev] clang confused by GCC 8

Dmitry Babokin via cfe-dev cfe-dev at lists.llvm.org
Wed Dec 6 11:06:46 PST 2017


Not sure if there's a difference between GCC8 and previous versions. And
not sure what this difference is. In my case GCC8 install path is not a
standard system location, so I have to use it anyway.

If you what to find out why the behaviour is different in your case, it
should not be difficult. The code in driver responsible for that it's very
complex.

On Wed, Dec 6, 2017 at 2:30 AM, Csaba Raduly <rcsaba at gmail.com> wrote:

> Why would this be necessary for GCC8, when it wasn't necessary for
> previous versions ?
>
> On Mon, Dec 4, 2017 at 11:14 PM, Dmitry Babokin <babokin at gmail.com> wrote:
> > I build with --gcc-toolchain set to directory with gcc8 installation and
> it
> > works well for me.
> >
> > On Tue, Nov 28, 2017 at 1:27 AM, Csaba Raduly via cfe-dev
> > <cfe-dev at lists.llvm.org> wrote:
> >>
> >> Hi all,
> >>
> >> After building and installing GCC trunk (GCC 8), clang doesn't find
> >> the Standard C++ Library any more:
> >>
> >> /tmp$ cat > strm.cpp
> >> #include <iostream>
> >> ^D
> >>
> >> /tmp$ /usr/local/bin/clang++ -v strm.cpp
> >> clang version 6.0.0 (trunk 319018)
> >> Target: x86_64-unknown-linux-gnu
> >> Thread model: posix
> >> InstalledDir: /usr/local/bin
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.2.0
> >> Found candidate GCC installation:
> >> /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.0.0
> >> Selected GCC installation:
> >> /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.0.0
> >> Candidate multilib: .;@m64
> >> Candidate multilib: 32;@m32
> >> Selected multilib: .;@m64
> >>  "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu
> >> -emit-obj -mrelax-all -disable-free -main-file-name strm.cpp
> >> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
> >> -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables
> >> -fuse-init-array -target-cpu x86-64 -dwarf-column-info
> >> -debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0
> >> -internal-isystem /usr/local/include -internal-isystem
> >> /usr/local/lib/clang/6.0.0/include -internal-externc-isystem
> >> /usr/include/x86_64-linux-gnu -internal-externc-isystem /include
> >> -internal-externc-isystem /usr/include -fdeprecated-macro
> >> -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271
> >> -fobjc-runtime=gcc -fcxx-exceptions -fexceptions
> >> -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-ba92aa.o -x
> >> c++ strm.cpp
> >> clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target
> >> x86_64-unknown-linux-gnu
> >> ignoring nonexistent directory "/include"
> >> #include "..." search starts here:
> >> #include <...> search starts here:
> >>  /usr/local/include
> >>  /usr/local/lib/clang/6.0.0/include
> >>  /usr/include/x86_64-linux-gnu
> >>  /usr/include
> >> End of search list.
> >> strm.cpp:1:10: fatal error: 'iostream' file not found
> >> #include <iostream>
> >>          ^~~~~~~~~~
> >>
> >> For some reason, GCC8's include directories are not used, despite
> >> "Selected GCC installation:
> >> /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.0.0". Not even
> >> ``ignoring nonexistent directory`` is printed (unless the ``ignoring
> >> nonexistent directory "/include" `` was clang's attempt to use the
> >> GCC8 installation).
> >>
> >> $ find /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/ -name iostream
> >> /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/include/c++/iostream
> >>
> >>
> >> If I hide /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0 (to simulate
> >> the state before I built and installed GCC 8), then it works:
> >>
> >> /tmp$ /usr/local/bin/clang++ -v strm.cpp
> >> clang version 6.0.0 (trunk 319018)
> >> Target: x86_64-unknown-linux-gnu
> >> Thread model: posix
> >> InstalledDir: /usr/local/bin
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
> >> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.2.0
> >> Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.2.0
> >> Candidate multilib: .;@m64
> >> Candidate multilib: 32;@m32
> >> Candidate multilib: x32;@mx32
> >> Selected multilib: .;@m64
> >>  "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu
> >> -emit-obj -mrelax-all -disable-free -main-file-name strm.cpp
> >> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
> >> -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables
> >> -fuse-init-array -target-cpu x86-64 -dwarf-column-info
> >> -debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0
> >> -internal-isystem
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0
> >> -internal-isystem
> >>
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/x86_
> 64-linux-gnu/c++/7.2.0
> >> -internal-isystem
> >>
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/x86_
> 64-linux-gnu/c++/7.2.0
> >> -internal-isystem
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/
> 7.2.0/backward
> >> -internal-isystem /usr/local/include -internal-isystem
> >> /usr/local/lib/clang/6.0.0/include -internal-externc-isystem
> >> /usr/include/x86_64-linux-gnu -internal-externc-isystem /include
> >> -internal-externc-isystem /usr/include -fdeprecated-macro
> >> -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271
> >> -fobjc-runtime=gcc -fcxx-exceptions -fexceptions
> >> -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-c79a25.o -x
> >> c++ strm.cpp
> >> clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target
> >> x86_64-unknown-linux-gnu
> >> ignoring nonexistent directory "/include"
> >> ignoring duplicate directory
> >>
> >> "/usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/
> x86_64-linux-gnu/c++/7.2.0"
> >> #include "..." search starts here:
> >> #include <...> search starts here:
> >>  /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0
> >>
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/x86_
> 64-linux-gnu/c++/7.2.0
> >>
> >> /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/
> 7.2.0/backward
> >>  /usr/local/include
> >>  /usr/local/lib/clang/6.0.0/include
> >>  /usr/include/x86_64-linux-gnu
> >>  /usr/include
> >> End of search list.
> >> (success)
> >>
> >>
> >> I tried passing --gcc-toolchain set to the directory selected in the
> >> absence of GCC 8, but it didn't work. The only effect seems to be to
> >> stop searching for GCC installations :
> >>
> >> /tmp$ /usr/local/bin/clang++
> >> --gcc-toolchain=/usr/lib/gcc/x86_64-linux-gnu/7.2.0 -v strm.cpp
> >> clang version 6.0.0 (trunk 319018)
> >> Target: x86_64-unknown-linux-gnu
> >> Thread model: posix
> >> InstalledDir: /usr/local/bin
> >>  "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu
> >> -emit-obj -mrelax-all -disable-free -main-file-name strm.cpp
> >> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
> >> -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables
> >> -fuse-init-array -target-cpu x86-64 -dwarf-column-info
> >> -debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0
> >> -internal-isystem /usr/local/include -internal-isystem
> >> /usr/local/lib/clang/6.0.0/include -internal-externc-isystem
> >> /usr/include/x86_64-linux-gnu -internal-externc-isystem /include
> >> -internal-externc-isystem /usr/include -fdeprecated-macro
> >> -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271
> >> -fobjc-runtime=gcc -fcxx-exceptions -fexceptions
> >> -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-241a36.o -x
> >> c++ strm.cpp
> >> clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target
> >> x86_64-unknown-linux-gnu
> >> ignoring nonexistent directory "/include"
> >> #include "..." search starts here:
> >> #include <...> search starts here:
> >>  /usr/local/include
> >>  /usr/local/lib/clang/6.0.0/include
> >>  /usr/include/x86_64-linux-gnu
> >>  /usr/include
> >> End of search list.
> >> strm.cpp:1:10: fatal error: 'iostream' file not found
> >> #include <iostream>
> >>          ^~~~~~~~~~
> >>
> >>
> >> This is an Ubuntu 17.10 machine whose system compiler is GCC 7.2:
> >>
> >> /tmp$ g++ -v
> >> Using built-in specs.
> >> COLLECT_GCC=g++
> >> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
> >> OFFLOAD_TARGET_NAMES=nvptx-none
> >> OFFLOAD_TARGET_DEFAULT=1
> >> Target: x86_64-linux-gnu
> >> Configured with: ../src/configure -v --with-pkgversion='Ubuntu
> >> 7.2.0-8ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
> >> --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++
> >> --prefix=/usr --with-gcc-major-version-only --program-suffix=-7
> >> --program-prefix=x86_64-linux-gnu- --enable-shared
> >> --enable-linker-build-id --libexecdir=/usr/lib
> >> --without-included-gettext --enable-threads=posix --libdir=/usr/lib
> >> --enable-nls --with-sysroot=/ --enable-clocale=gnu
> >> --enable-libstdcxx-debug --enable-libstdcxx-time=yes
> >> --with-default-libstdcxx-abi=new --enable-gnu-unique-object
> >> --disable-vtable-verify --enable-libmpx --enable-plugin
> >> --enable-default-pie --with-system-zlib --with-target-system-zlib
> >> --enable-objc-gc=auto --enable-multiarch --disable-werror
> >> --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32
> >> --enable-multilib --with-tune=generic
> >> --enable-offload-targets=nvptx-none --without-cuda-driver
> >> --enable-checking=release --build=x86_64-linux-gnu
> >> --host=x86_64-linux-gnu --target=x86_64-linux-gnu
> >> Thread model: posix
> >> gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)
> >>
> >>
> >> This is how GCC 8 was configured:
> >>
> >> /tmp$ g++-8 -v
> >> Using built-in specs.
> >> COLLECT_GCC=g++-8
> >>
> >> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-
> linux-gnu/8.0.0/lto-wrapper
> >> Target: x86_64-pc-linux-gnu
> >> Configured with: ../trunk/configure --program-suffix=-8
> >> --enable-version-specific-runtime-libs --enable-languages=c,c++,lto :
> >> (reconfigured) ../trunk/configure --program-suffix=-8
> >> --enable-version-specific-runtime-libs --enable-languages=c,c++,lto
> >> Thread model: posix
> >> gcc version 8.0.0 20171124 (experimental) (GCC)
> >>
> >> Any ideas?
> >>
> >> Csaba
> >> --
> >> GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
> >> The Tao of math: The numbers you can count are not the real numbers.
> >> Life is complex, with real and imaginary parts.
> >> "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus
> >> Torvalds
> >> "People disagree with me. I just ignore them." -- Linus Torvalds
> >> _______________________________________________
> >> cfe-dev mailing list
> >> cfe-dev at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> >
> >
>
>
>
> --
> GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
> The Tao of math: The numbers you can count are not the real numbers.
> Life is complex, with real and imaginary parts.
> "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus
> Torvalds
> "People disagree with me. I just ignore them." -- Linus Torvalds
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171206/69d543a1/attachment.html>


More information about the cfe-dev mailing list