<div dir="ltr"><div dir="ltr">clang can't find your STL headers, I guess. You probably have some GCC libraries installed in /usr/lib for some recent version of GCC (8.N), but no headers for that same version. Clang's GCC installation detection logic will find the libraries, and use the corresponding version to calculate standard library include paths.<div><br></div><div>The easiest fix is probably to run `sudo apt-get install libstdc++-8-dev`, assuming you have some libraries for libstdc++8 but no headers.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 19, 2019 at 5:58 PM Aaron Jacobs via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi llvm-dev,<br>
<br>
I'm trying to figure out how to contribute to LLVM, in particular a followup to<br>
kcc's commit 6bde702a in sanitzer_suppressions.cc. However I can't find a way<br>
to get the tests to run before I even change anything.<br>
<br>
The relevant unit test is<br>
compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cc, so I<br>
expect I want `ninja check-asan` (right?). Here's what I tried, on my Debian<br>
machine, following (and adjusting) the outdated llvm documentation about<br>
setting up a GCC toolchain:<br>
<br>
    # Install the GCC toolchain.<br>
    # See <a href="http://llvm.org/docs/GettingStarted.html#getting-a-modern-host-c-toolchain" rel="noreferrer" target="_blank">http://llvm.org/docs/GettingStarted.html#getting-a-modern-host-c-toolchain</a><br>
    # Adjusted for GCC 7.4.0, which doesn't ship in a bzip2 archive.<br>
    gcc_version=7.4.0<br>
    wget <a href="https://ftp.gnu.org/gnu/gcc/gcc-$%7Bgcc_version%7D/gcc-$%7Bgcc_version%7D.tar.gz" rel="noreferrer" target="_blank">https://ftp.gnu.org/gnu/gcc/gcc-${gcc_version}/gcc-${gcc_version}.tar.gz</a><br>
    wget <a href="https://ftp.gnu.org/gnu/gcc/gcc-$%7Bgcc_version%7D/gcc-$%7Bgcc_version%7D.tar.gz.sig" rel="noreferrer" target="_blank">https://ftp.gnu.org/gnu/gcc/gcc-${gcc_version}/gcc-${gcc_version}.tar.gz.sig</a><br>
    wget <a href="https://ftp.gnu.org/gnu/gnu-keyring.gpg" rel="noreferrer" target="_blank">https://ftp.gnu.org/gnu/gnu-keyring.gpg</a><br>
    signature_invalid=`gpg --verify --no-default-keyring --keyring<br>
./gnu-keyring.gpg gcc-${gcc_version}.tar.gz.sig`<br>
    if [ $signature_invalid ]; then echo "Invalid signature" ; exit 1 ; fi<br>
    tar -xvzf gcc-${gcc_version}.tar.gz<br>
    cd gcc-${gcc_version}<br>
    ./contrib/download_prerequisites<br>
    cd ..<br>
    mkdir gcc-${gcc_version}-build<br>
    cd gcc-${gcc_version}-build<br>
    mkdir -p $HOME/toolchains<br>
    $PWD/../gcc-${gcc_version}/configure --prefix=$HOME/toolchains<br>
--enable-languages=c,c++<br>
    make -j$(nproc)<br>
    make install<br>
<br>
    # Clone llvm and try to test it.<br>
    mkdir -p ~/clients<br>
    cd ~/clients<br>
    git clone <a href="https://github.com/llvm/llvm-project.git" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project.git</a><br>
    # Get a coffee<br>
    cd llvm-project<br>
    mkdir build<br>
    cd build<br>
    CC=$HOME/toolchains/bin/gcc CXX=$HOME/toolchains/bin/g++ \<br>
      cmake -G Ninja<br>
-DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/toolchains/lib64<br>
-L$HOME/toolchains/lib64"<br>
-DLLVM_ENABLE_PROJECTS='clang;compiler-rt;libcxx;libcxxabi' ../llvm<br>
    ninja check-asan<br>
    # Get another coffee<br>
<br>
After about 30 minutes, the ninja command fails with an error about how the<br>
string header isn't found:<br>
<br>
    FAILED: projects/compiler-rt/lib/asan/tests/ASAN_NOINST_TEST_<a href="http://OBJECTS.asan_noinst_test.cc" target="_blank">OBJECTS.asan_noinst_test.cc</a>.x86_64-inline.o<br>
    cd /usr/local/google/home/jacobsa/clients/llvm-project/build/projects/compiler-rt/lib/asan/tests<br>
&& /usr/local/google/home/jacobsa/clients/llvm-project/build/./bin/clang<br>
-fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall<br>
-Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual<br>
-Wno-missing-field-initializers -pedantic -Wno-long-long<br>
-Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-noexcept-type<br>
-Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -Wall<br>
-std=c++11 -Wno-unused-parameter -Wno-unknown-warning-option<br>
-DGTEST_NO_LLVM_RAW_OSTREAM=1 -DGTEST_HAS_RTTI=0<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/llvm/utils/unittest/googletest/include<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/llvm/utils/unittest/googletest<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/include<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/asan<br>
-I/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/sanitizer_common/tests<br>
-fno-rtti -O2 -Wno-format -Werror=sign-compare -Wno-non-virtual-dtor<br>
-Wno-variadic-macros -gline-tables-only -DASAN_HAS_BLACKLIST=1<br>
-DASAN_HAS_EXCEPTIONS=1 -DASAN_UAR=0 -m64 -c -o<br>
ASAN_NOINST_TEST_OBJECTS.asan_noinst_test.cc.x86_64-inline.o<br>
/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/asan/tests/asan_noinst_test.cc<br>
    In file included from<br>
/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/asan/tests/asan_noinst_test.cc:17:<br>
    In file included from<br>
/usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/asan/tests/asan_test_utils.h:18:<br>
    /usr/local/google/home/jacobsa/clients/llvm-project/compiler-rt/lib/asan/tests/asan_test_config.h:19:10:<br>
fatal error: 'string' file not found<br>
    #include <string><br>
             ^~~~~~~~<br>
    1 error generated.<br>
<br>
This doesn't happen for `ninja check-all` (but despite its name that target<br>
doesn't seem to run the test), so I wonder if it's a hermeticism issue in the<br>
asan tests? It's also very possible I've just done it wrong. Help?<br>
<br>
Thanks,<br>
Aaron<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>