lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <F76FA81E-C173-418E-B44D-359850A0723A@joelfernandes.org>
Date:   Tue, 18 Apr 2023 23:45:37 +0200
From:   Joel Fernandes <joel@...lfernandes.org>
To:     Nick Desaulniers <ndesaulniers@...gle.com>, revest@...gle.com
Cc:     rcu@...r.kernel.org, nathan@...nel.org, trix@...hat.com,
        llvm@...ts.linux.dev, linux-kernel@...r.kernel.org,
        paulmck@...nel.org
Subject: Re: clangd cannot handle tree_nocb.h

Adding Florent as well since Nick added him to the other thread.

Thanks.

> On Apr 18, 2023, at 11:03 PM, Joel Fernandes <joel@...lfernandes.org> wrote:
> 
> Hi Nick,
> 
>> On Tue, Apr 18, 2023 at 01:46:40PM -0700, Nick Desaulniers wrote:
>>> On Tue, Apr 18, 2023 at 1:36 PM Joel Fernandes <joel@...lfernandes.org> wrote:
>>> 
>>> On Fri, Apr 14, 2023 at 03:47:51PM -0700, Nick Desaulniers wrote:
>>>> On Thu, Apr 13, 2023 at 5:53 PM Joel Fernandes <joel@...lfernandes.org> wrote:
>>>>> 
>>>>> Hello!
>>>>> 
>>>>> I have been trying to get clangd working properly with tree_nocb.h. clangd
>>>>> trips quite badly when trying to build tree_nocb.h to generate ASTs.
>>>> 
>>>> Hi Joel,
>>>> Thanks for the report.  What are you using clangd for? I'll bet
>>>> something interesting.
>>> 
>>> Thanks for the response and sorry for the late reply. I am at the OSPM
>>> conference. I use vim and vscode with clangd. In vim, YCM uses it to
>>> highlight compiler errors live while editing, I am pretty happy with it so
>>> far and has been a huge time saver. Enough that now I want to use it for
>>> everything...
>> 
>> Cool! I use vim, can you share more info about your set up for this?
>> I'll have to try it.
> 
> This is how I installed YCM:
> 
> # Install YouCompleteMe for vim
> # cd ~/.vim/bundle
> # git clone https://github.com/Valloric/YouCompleteMe.git
> # cd YouCompleteMe/
> # git submodule update --init --recursive
> # python3 install.py --clang-completer
> 
> Then install and run bear in the kernel sources to generate
> compile_compands.json:
> bear -- make -j99 CC=clang
> 
> However, there's also the script:
> scripts/clang-tools/gen_compile_commands.py
> 
> This generates the .json from an existing build. Thank God because we can
> probably make this generate better .json files which may make clangd better.
> 
> You don't need YCM to reproduce the issue though if you just use vscode with
> the clangd plugin.
> 
>>> I first came across clangd when developing Chrome userspace code which is C++
>>> :). In Chrome, ninja builds can be made to output compile_commands.json.
>>> However, now I noticed the support in the kernel and was like, wow I need to
>>> try it. Further, YCM seems to work much better with it than without :)
>>> 
>>>> I've never used it myself, so I don't know where to even begin with
>>>> how to reproduce the issue.
>>> 
>>> Ah ok. :). When I ran get_maintainer on the script, your name popped up and
>>> someone also suggested that you're the goto person for clang on the kernel
>>> (which I kind of already knew ;)
>> 
>> You've cc'ed the right set of folks.  We might not have the expertise
>> related to clangd specifically, but we can point you in the right
>> direction.
> 
> Sure, thanks! And thanks for CC'ing the right folks.
> 
>>>> It might be worth filing a bug upstream at
>>>> https://github.com/llvm/llvm-project/issues
>>>> or internally under the component
>>>> Language Platforms > C++ > Clang > Tools > Clangd
>>>> with detailed steps to reproduce (and what the observed error actually
>>>> is). Feel free to cc me, though I don't know the first thing about
>>>> clangd.
>>> 
>>> Ok I will consider doing this if needed. One thing I do observe is lack of
>>> good support for header files and it is a known clangd issue [1].
>>> 
>>> However, the fixes I was proposing can purely be done in the kernel itself
>>> since all it'd require is generating compile_compands.json with the -D<macro>
>>> and editing files to keep clangd happy. I guess one question is, how welcome
>>> would such changes to header files be since they're for tooling and isn't
>>> code that will be compiled outside of clangd.
>> 
>> Specifically your patch sites some log print that doesn't look
>> indicative of a failure:
>> https://github.com/llvm/llvm-project/blob/53430bfd5c9d0074dd6de06dccea366e1d40bce4/clang-tools-extra/clangd/TUScheduler.cpp#L903-L906
>> so something else is going on here. Just trying to make sure we root cause this.
>> 
> 
> Right, so clangd's log does not show failure, the failure is when it displays
> in the code editor that your code has compiler errors when in fact it does
> not.
> 
> So if you open up tree_nocb.h in vscode, for example, you'll see squiggles
> saying 'undefined reference to rcu_data', etc. That makes clangd stop working
> at the error. Sorry to not make the failure mode clear earlier.
> 
> thanks,
> 
> - Joel
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ