All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Vehlow <lkml@jv-coder.de>
To: ltp@lists.linux.it
Subject: [LTP] [RFC PATCH v2 0/2] Libclang based analyzer
Date: Mon, 7 Jun 2021 13:34:56 +0200	[thread overview]
Message-ID: <52c808d5-c5d7-3a79-122b-428fe2802957@jv-coder.de> (raw)
In-Reply-To: <87bl8i563x.fsf@suse.de>

Hi Richard,

On 6/7/2021 12:20 PM, Richard Palethorpe wrote:
> Hello Joerg,
>
> On ubuntu 20.04, this file is part of libclang-dev, but installing it
> did not help either, because it is installed to an include path not
> know to gcc (/usr/lib/llvm-10/include/clang-c).
> Is part of this path the same that 'clang -print-resource-dir' prints?
>
> Either way I guess we can search for this during configuration. LLVM has
> a CMake module (or w/e) which probably finds all this automatically.
resource dir is /usr/lib/llvm-12/lib/clang/12.0.1.

The llvm-config tool can be used to find the locations of the include 
and lib directory.
On my ubuntu, I installed clang-12 from apt.llvm.org and clang-10 from 
ubuntu repos.
In the path there is the llvm-config tool from ubuntu pointing to 
/usr/lib/llvm-10/bin/llvm-config and llvm-config-10 and llvm-config-12 
pointing to the respective llvm-config tool.

I guess using llvm-config from the path to detect the correct include 
and library path would be the best way to go.
If someone wants to use a different version, he can still set prepend it 
to the path during configuration:

$ llvm-config --includedir
/usr/lib/llvm-10/include

$ llvm-config --libdir
/usr/lib/llvm-10/lib

$ PATH="/usr/lib/llvm-12/bin:$PATH" llvm-config --includedir
/usr/lib/llvm-12/include


Both includedir and libdir are required, to correctly link libclang. In 
the default library search paths, there are only versioned versiones of 
libclang (eg. libclang-12.so).

>> I added it to the include path and it was found, but the next problem
>> is, that some used functions (like clang_Cursor_getVarDeclInitializer)
>> are only available starting with libclang 12.
>>
> I guess that we could replace that function by recursing further into
> the AST to find the initializer ourselves.
>
> Probably we can restrict ourselves to only use functions from before
> libclang 11.
Sounds good, but how to force this? I don't think there is a "allow only 
libclang 10 symbols"...
>
>> So in conclusion, I do not think we can assume libclang to be
>> available for all developers and installing it is probably more work,
>> at least when newer functions from libclang are used, than installing
>> coccinelle.
> IIRC Cyril said the Coccinelle package on Gentoo is not maintained
> anymore. AFAICT it exists, but it is on an old version. I don't think
> many people are interested in or want to maintain Ocaml
> stuff. LLVM/Clang OTOH looks to be very active.
Right, it actually is removed now from gentoo portage tree ([1]). But is 
it used by the kernel developers?

J?rg

[1] 
https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=58395d3a0c06e060a0a40182fff4bf39f1910529

  reply	other threads:[~2021-06-07 11:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-04 11:14 [LTP] [RFC PATCH v2 0/2] Libclang based analyzer Richard Palethorpe
2021-06-04 11:14 ` [LTP] [RFC PATCH v2 1/2] Add 'make check' and clang-check to build system Richard Palethorpe
2021-06-04 14:10   ` Petr Vorel
2021-06-04 14:11     ` Cyril Hrubis
2021-06-04 14:28     ` Richard Palethorpe
2021-06-04 14:33       ` Cyril Hrubis
2021-06-07  9:18   ` Joerg Vehlow
2021-06-07  9:12     ` Cyril Hrubis
2021-06-11 13:49   ` Petr Vorel
2021-06-11 14:17     ` Petr Vorel
2021-06-14 11:09       ` Richard Palethorpe
2021-06-04 11:14 ` [LTP] [RFC PATCH v2 2/2] Start libclang based analyzer and TEST() check Richard Palethorpe
2021-06-04 12:52 ` [LTP] [RFC PATCH v2 0/2] Libclang based analyzer Cyril Hrubis
2021-06-04 13:50   ` Richard Palethorpe
2021-06-07  8:37 ` Joerg Vehlow
2021-06-07  9:14   ` Cyril Hrubis
2021-06-07 10:20   ` Richard Palethorpe
2021-06-07 11:34     ` Joerg Vehlow [this message]
2021-06-07 13:42       ` Cyril Hrubis
2021-06-07 13:49       ` Richard Palethorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52c808d5-c5d7-3a79-122b-428fe2802957@jv-coder.de \
    --to=lkml@jv-coder.de \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.