Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-21722

Clang CodeModel not working with cross GCC-8

    XMLWordPrintable

Details

    • Linux/X11

    Description

      The clang code model does not work using a CMake-Project using cross GCC 8.1 as compiler. Using a cross GCC 5 works as expected.

      The reason for the issue is caused due to a change in GCCs header files:

      GCC5: cstdlib -> #include <stdlib.h>
      GCC8: cstdlib -> #include_next <stdlib.h>

      I'm using buildroot which provides an CMake-Toolchain-File to set up cross compilation. This file sets CMAKE_SYSROOT which in turn issues --sysroot option to GCC.
       
      This option doesn't seem to be forwarded to Clang in the right way. More precisely: The sysroot directory (and/or it's derived usr/include) is missing in the clang header search path.

      The CCM debug output for an example file looks then like this:

      #include "..." search starts here:
      #include <...> search starts here:
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/configs/i5016-zf-imx6}}
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/.}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/../../../mkspecs/devices/linux-buildroot-g++}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui}}
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/../external}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/opencv}}
      {{ /tmp/QtCreator-PwmxQC/clang-uiheader-SkaZdL}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/backward}}
      {{ /home/khschneider/opt/qtcreator-4.8.0/libexec/qtcreator/clang/lib/clang/7.0.0/include}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include-fixed}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include}}
      End of search list.
      /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/bits/os_defines.h:39:10: fatal error: 'features.h' file not found
      /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/bits/os_defines.h:44:5: error: function-like macro '__GLIBC_PREREQ' is not defined
      /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/iosfwd:76:48: error: no template named 'char_traits'
      /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/iosfwd:79:48: error: no template named 'char_traits'
      ...
      much more errors

      As a workaround, I have found the option QTC_CLANG_NO_DIAGNOSTIC_CHECK=1 and add the option  -isystem {sysroot}/usr/include manually. (in My case -isystem /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include)

      After adding the CCM Option the completion works as excpected:

      #include "..." search starts here:
      #include <...> search starts here:
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/configs/i5016-zf-imx6}}
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/.}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/../../../mkspecs/devices/linux-buildroot-g++}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui}}
      {{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/../external}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/opencv}}
      {{ /tmp/QtCreator-PwmxQC/clang-uiheader-SkaZdL}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/backward}}
      {{ /home/khschneider/opt/qtcreator-4.8.0/libexec/qtcreator/clang/lib/clang/7.0.0/include}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include-fixed}}
      {{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include}}
      {{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include}}
      End of search list.

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            hunger Tobias Hunger
            k-h.sch Karl-Heinz Schneider
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes