Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp3224658rwl; Thu, 13 Apr 2023 18:18:31 -0700 (PDT) X-Google-Smtp-Source: AKy350aTv5M1Q4DN3xJUXRuGku4CvzokYAkdkgfKuUyIJ/Qj7iA+xnADiTP6MF6z6LhA+fPF/21H X-Received: by 2002:a17:902:cec1:b0:1a1:e33f:d567 with SMTP id d1-20020a170902cec100b001a1e33fd567mr1085500plg.52.1681435110763; Thu, 13 Apr 2023 18:18:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681435110; cv=none; d=google.com; s=arc-20160816; b=OB6quf9Pp1e9L1IkmI+0HnYP8MYUajl2b0edZOmKfU18QGN8yZF/Uw2vx0HbLzyo5k Zs9ERwo9q61gXRxkqLxble34wqvZlJUwssaO1fqqkYtTmOlGCl3jRysu8drYbi9lEOjI viAMU4lZuIETTKdTT60xHkT7tLvK3dOXjvDo0mnIxFLu+ycKBhAfgTSJaiIRaLbU6Fj/ 7k764qWc+BYv4HUM9/FJqVJIc4H60PhZLWnYB/7QYnDfIv1qpVoIQP8q2VbgI2AdmkVJ B1ig5aeeMNqF5B4F3HgI2YnP9d6OVAVpIwxaMSESHZMTBW34prCYEEguPFH7WvkuCg0w YtXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:to:subject:message-id :date:from:in-reply-to:references:mime-version:dkim-signature; bh=LNHtFxDJlWhvI6wADsECZUb5iqPCc6WyyTDSQpHBCP4=; b=wV4ogoXSszLshZFRCBxJfB1uEK5R8UUZ6FjaIL7EYs6sgbTiVVWMnTS8UTaL+pu3iW 0hDpSwaqGfdnzB8pv+TDZgaCBDCW7lsVJyM0jQs/yCEyr+ZInKu74RhHcUVk1aZ3toLm IWMy97liN9xD7/WiYhLn+xsse0Me0UBfuChpqubbeTCxxaEHcIAnfYvWMo9FF+EECk2i D1TDrc6L9ByhlpK39ZnaICWSIDMSJ3p8gIwF9udkKhv4IhwmPpwQapnlMJ28BwbwsAro NXFLvBLY5VtFApYdk6s7lt6TXcXLjrEB0XgiCCbXI8XCgL4nO5Ji/PicOTibyRUwNKEA U/0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=AGAi6TcU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m1-20020a170902db0100b001a656596b9esi3493917plx.608.2023.04.13.18.18.17; Thu, 13 Apr 2023 18:18:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=AGAi6TcU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229618AbjDNBQP (ORCPT + 99 others); Thu, 13 Apr 2023 21:16:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229469AbjDNBQO (ORCPT ); Thu, 13 Apr 2023 21:16:14 -0400 Received: from mail-yb1-xb2f.google.com (mail-yb1-xb2f.google.com [IPv6:2607:f8b0:4864:20::b2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 715DD30FA for ; Thu, 13 Apr 2023 18:16:13 -0700 (PDT) Received: by mail-yb1-xb2f.google.com with SMTP id v7so15901501ybi.0 for ; Thu, 13 Apr 2023 18:16:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; t=1681434972; x=1684026972; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=LNHtFxDJlWhvI6wADsECZUb5iqPCc6WyyTDSQpHBCP4=; b=AGAi6TcUOpevNguQX5VZI/MKtP4++I+3zkSwEmzDDxo9XWXMyKlWljGtjFrMosS1ZO uZXXsmrdKYKfzjuq0gnJNKrjhb0bL2H08FOfpniz9xMFNPbB0Kz/VYjYRYAhzhD++4nX 7nsMbZzLiTMhlpWhwuK0RE5X7x6rlS/J+nzxA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681434972; x=1684026972; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LNHtFxDJlWhvI6wADsECZUb5iqPCc6WyyTDSQpHBCP4=; b=Iu0Bm/5l7P9NRu3R0G8QqoidTfGb1cyYMHMdRPClBIVvPK67nFJu8QWO9/WkIC74Qd HA9s3TcjpZzEjcLMYLXQZ1UruBfkL1H01mPSBXDqsYlbS8+FmQKXsU/jYkkmqnJVJ0cd GP1VwUmKTXGhmIUjNM3qAUdGA9ebwo3jEmoi4DcQtC6LDDIBY67q5XsnJEP6Fid5egor dzDPPFY3qS6/CRtJgWEKIBIVTDv6KBpnPrSNbGXOJ0Geoiq3gnYIxoSNgtf6iFX1Gg2B sLK9Hwkl3z5p+u5H7ytpjW63dWsZ2J7CiD7etLcORg7ZdbawmuyvjMniM0E+ZeVHILn4 qTgw== X-Gm-Message-State: AAQBX9fW5gJeQTFiJy/ww0bmyRV573s1krgJyAlQxN2yBAUIvXcmRp1z QuXMnTVcc38TDr+JovOH4K/Cr5JcXwv9VQGtp/1Z8A== X-Received: by 2002:a25:748b:0:b0:b8f:6ab7:9328 with SMTP id p133-20020a25748b000000b00b8f6ab79328mr977997ybc.2.1681434972610; Thu, 13 Apr 2023 18:16:12 -0700 (PDT) MIME-Version: 1.0 References: <20230414005309.GA2198310@google.com> In-Reply-To: From: Joel Fernandes Date: Thu, 13 Apr 2023 21:16:01 -0400 Message-ID: Subject: Re: clangd cannot handle tree_nocb.h To: rcu@vger.kernel.org, ndesaulniers@google.com, nathan@kernel.org, trix@redhat.com, llvm@lists.linux.dev, linux-kernel@vger.kernel.org, paulmck@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 13, 2023 at 9:11=E2=80=AFPM Joel Fernandes wrote: > > Hello, > > One way to fix this could be to add this to the beginning of tree_nocb.h > > /* Make clangd understand tree_nocb.h */ > +#ifdef CLANGD_PARSER_ACTIVE > +#define TREE_NOCB_H_CLANGD > +#include "tree.c" > +#endif > > And then at the end of tree.c, do this to prevent recursion: > +#ifndef TREE_NOCB_H_CLANGD > #include "tree_nocb.h" > -#include "tree_plugin.h" > +#endif > +#include "tree_plugin.h" > > Then in scripts/clang-tools/gen_compile_commands.py, we can just make > it add "-DCLANGD_PARSER_ACTIVE" to all compile command entries in the > JSON file. > Ah and even that will not fully work, because there is no entry for tree_nocb.h in compile_commands.json to begin with :-(. However, that also can be fixed. Here's how: We can just add metadata to tree_nocb.h , something like: /* clangd_infer_from: tree.c */ Then we make scripts/clang-tools/gen_compile_commands.py duplicate the compile command JSON entry for tree.c but for tree_nocb.h. Lastly, we add -DDCLANGD_PARSER_ACTIVE to all entries (including the duplic= ate). - Joel