Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: fix URL for git clone

...

  1. Setup a RHEL 6.3 (or 6.4, or 6.5) image capable of building the kernel and Lustre source code. Use a disk image with at least 24 GB.
    1. gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4). gcc that is packaged with EL 6.5 also works.
    2. install git
  2. Install Clang and LLVM. RPMs are available from elrepo. Clang/LLVM version 3.0 has good parity with gcc-4.4. Parity with gcc-4.4 is important as gcc is used during the analysis.
    • llvm-devel-3.0-5.el6.elrepo.x86_64

    • llvm-libs-3.0-5.el6.elrepo.x86_64
    • llvm-doc-3.0-5.el6.elrepo.noarch
    • llvm-3.0-5.el6.elrepo.x86_64
    • clang-devel-3.0-5.el6.elrepo.x86_64
    • clang-3.0-5.el6.elrepo.x86_64
    • clang-analyzer-3.0-5.el6.elrepo.x86_64
    • clang-doc-3.0-5.el6.elrepo.noarch

      Info
      titleelrepo-extras

      Once elrepo is available as a repo, only the main channel is available by default. To install llvm and clang you need the elrepo-extras repo. This can be enabled by including

           --enablerepo=elrepo-extras

      in your yum command.

  3. Download lustre-static-analysis Clang plugin sources
         git clone httpclone ssh://git<user>@review.whamcloud.com:29418/tools/lustre-static-analysis.git
  4. Make the contents of Endian, DeclUse and Utils directories.

...

For the purposes of static analysis provided by the Clang plugin, the file.o._Ref are intermediate file and not of general interest. The files of interest are contained in the directory DeclUse-2.5.60-40-g*/ . Useful file include:

File nameDescription
ErrErrors reported by the Clang compiler.
GetOnlyStructure members that are read somewhere but never set.
MacroUnusedMacros that are never used.
SetOnlyStructure members that are set somewhere but never read.
UndefinedVariables that are never defined.

Gotchas

  • The static usage tracker is confused by disconnected declarations.