GNU bug report logs - #52054
clangd cannot find <stddef.h>

Previous Next

Package: guix;

Reported by: Ludovic Courtès <ludovic.courtes <at> inria.fr>

Date: Tue, 23 Nov 2021 10:09:02 UTC

Severity: normal

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#52054: closed (clangd cannot find <stddef.h>)
Date: Wed, 16 Feb 2022 15:59:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Wed, 16 Feb 2022 16:57:57 +0100
with message-id <87wnhuvm62.fsf <at> gnu.org>
and subject line Re: bug#52054: clangd cannot find <stddef.h>
has caused the debbugs.gnu.org bug report #52054,
regarding clangd cannot find <stddef.h>
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
52054: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=52054
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludovic.courtes <at> inria.fr>
To: bug-guix <at> gnu.org
Subject: clangd cannot find <stddef.h>
Date: Tue, 23 Nov 2021 11:08:24 +0100
Hello,

‘clangd’ fails to find <stddef.h>, as shown here:

--8<---------------cut here---------------start------------->8---
$ printf '#include <stdlib.h>\nint foo (int x) {return x+2; }' > t.c
$ guix shell -C -D hello --with-c-toolchain=hello=clang-toolchain clang:extra strace
guix shell: warning: transformation 'with-c-toolchain' had no effect on strace <at> 5.8
guix shell: warning: transformation 'with-c-toolchain' had no effect on clang <at> 12.0.1
[env]$ clang -c t.c
[env]$ clangd --check=t.c
I[10:02:40.349] clangd version 12.0.1
I[10:02:40.349] PID: 3
I[10:02:40.349] Working directory: /home/ludo/tmp/clangd-bug
I[10:02:40.349] argv[0]: clangd
I[10:02:40.349] argv[1]: --check=t.c
I[10:02:40.349] Entering check mode (no LSP server)
I[10:02:40.349] Testing on source file /home/ludo/tmp/clangd-bug/t.c
I[10:02:40.349] Loading compilation database...
I[10:02:40.349] Failed to find compilation database for /home/ludo/tmp/clangd-bug/t.c
I[10:02:40.349] Generic fallback command is: /gnu/store/nk5lp7wisgdlvds5camvcchgh19hnn23-clang-12.0.1/bin/clang /home/ludo/tmp/clangd-bug/t.c -fsyntax-only -resource-dir=/gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1
I[10:02:40.350] Parsing command...
I[10:02:40.352] internal (cc1) args are: -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name t.c -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1 -c-isystem /gnu/store/xl7wammzljnp0rg496n96h5m69y25isg-profile/include -cxx-isystem /gnu/store/xl7wammzljnp0rg496n96h5m69y25isg-profile/include -internal-isystem /usr/local/include -internal-isystem /gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1/include -internal-externc-isystem /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include -fdebug-compilation-dir /home/ludo/tmp/clangd-bug -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -x c /home/ludo/tmp/clangd-bug/t.c
I[10:02:40.352] Building preamble...
I[10:02:40.368] Indexing headers...
E[10:02:40.382] [pp_file_not_found] Line 1: in included file: 'stddef.h' file not found
I[10:02:40.382] Building AST...
I[10:02:40.386] Indexing AST...
I[10:02:40.386] Testing features at each token (may be slow in large files)
I[10:02:40.387] All checks completed, 1 errors
[env]$ ls /gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1
ls: cannot access '/gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1': No such file or directory
[env]$ readlink -f $(type -P clang)
/gnu/store/nk5lp7wisgdlvds5camvcchgh19hnn23-clang-12.0.1/bin/clang-12
[env]$ find -L /gnu/store/nk5lp7wisgdlvds5camvcchgh19hnn23-clang-12.0.1/ -name stddef.h
/gnu/store/nk5lp7wisgdlvds5camvcchgh19hnn23-clang-12.0.1/lib/clang/12.0.1/include/stddef.h
[env]$ exit
$ guix describe
Generacio 195	Nov 22 2021 00:37:58	(nuna)
  guix 24aa7b3
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 24aa7b3c21309b63cc6e8e18d6417d2cddccf6c6
--8<---------------cut here---------------end--------------->8---

Above, the directory passed as ‘-resource-dir’ does not exist: instead
of ‘…-clang-12.0.1-extra’ it should be ‘…-clang-12.0.1’.

This directory name is determined in ‘clangd/CompileCommands.cpp’:

--8<---------------cut here---------------start------------->8---
std::string detectStandardResourceDir() {
  static int Dummy; // Just an address in this process.
  return CompilerInvocation::GetResourcesPath("clangd", (void *)&Dummy);
}

[…]

CommandMangler CommandMangler::detect() {
  CommandMangler Result;
  Result.ClangPath = detectClangPath();
  Result.ResourceDir = detectStandardResourceDir();
  Result.Sysroot = detectSysroot();
  return Result;
}

[…]

  if (ResourceDir && !Has("-resource-dir"))
    Cmd.push_back(("-resource-dir=" + *ResourceDir));
--8<---------------cut here---------------end--------------->8---

We should either fix ‘GetResourcesPath’ or patch the file above so it
returns the Clang directory name known at build time.

Ludo’.


[Message part 3 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: 52054-done <at> debbugs.gnu.org
Cc: emmanuel.agullo <at> inria.fr
Subject: Re: bug#52054: clangd cannot find <stddef.h>
Date: Wed, 16 Feb 2022 16:57:57 +0100
Hi,

Ludovic Courtès <ludovic.courtes <at> inria.fr> skribis:

> ‘clangd’ fails to find <stddef.h>, as shown here:
>
> $ printf '#include <stdlib.h>\nint foo (int x) {return x+2; }' > t.c
> $ guix shell -C -D hello --with-c-toolchain=hello=clang-toolchain clang:extra strace
> guix shell: warning: transformation 'with-c-toolchain' had no effect on strace <at> 5.8
> guix shell: warning: transformation 'with-c-toolchain' had no effect on clang <at> 12.0.1
> [env]$ clang -c t.c
> [env]$ clangd --check=t.c
> I[10:02:40.349] clangd version 12.0.1
> I[10:02:40.349] PID: 3
> I[10:02:40.349] Working directory: /home/ludo/tmp/clangd-bug
> I[10:02:40.349] argv[0]: clangd
> I[10:02:40.349] argv[1]: --check=t.c
> I[10:02:40.349] Entering check mode (no LSP server)
> I[10:02:40.349] Testing on source file /home/ludo/tmp/clangd-bug/t.c
> I[10:02:40.349] Loading compilation database...
> I[10:02:40.349] Failed to find compilation database for /home/ludo/tmp/clangd-bug/t.c
> I[10:02:40.349] Generic fallback command is: /gnu/store/nk5lp7wisgdlvds5camvcchgh19hnn23-clang-12.0.1/bin/clang /home/ludo/tmp/clangd-bug/t.c -fsyntax-only -resource-dir=/gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1
> I[10:02:40.350] Parsing command...
> I[10:02:40.352] internal (cc1) args are: -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name t.c -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1 -c-isystem /gnu/store/xl7wammzljnp0rg496n96h5m69y25isg-profile/include -cxx-isystem /gnu/store/xl7wammzljnp0rg496n96h5m69y25isg-profile/include -internal-isystem /usr/local/include -internal-isystem /gnu/store/hnw2acjhfpj5l2zrazj5fvq5ksy002f1-clang-12.0.1-extra/lib/clang/12.0.1/include -internal-externc-isystem /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include -fdebug-compilation-dir /home/ludo/tmp/clangd-bug -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -x c /home/ludo/tmp/clangd-bug/t.c
> I[10:02:40.352] Building preamble...
> I[10:02:40.368] Indexing headers...
> E[10:02:40.382] [pp_file_not_found] Line 1: in included file: 'stddef.h' file not found
> I[10:02:40.382] Building AST...
> I[10:02:40.386] Indexing AST...
> I[10:02:40.386] Testing features at each token (may be slow in large files)
> I[10:02:40.387] All checks completed, 1 errors

Fixed with 35ea49daf6cdef5bf6156dd90add77cede364a4b (thanks, Greg!).

Ludo’.


This bug report was last modified 3 years and 96 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.