---
name: "semind"
section: "1"
platform: "linux"
package: "sparse"
version: "0.6.5+rc1-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/semind"
---

# semind(1)

Semantic Indexer for C

## NAME

semind - Semantic Indexer for C

## SYNOPSIS

**semind** \[*options*\]\
 **semind** \[*options*\] *add* \[*command options*\] \[*--*\] \[*compiler options*\] \[*files...*\]\
 **semind** \[*options*\] *rm* \[*command options*\] *pattern*\
 **semind** \[*options*\] *search* \[*command options*\] \[*pattern*\]\
 **semind \[*options*\] *search* \[*command options*\] (*-e*\|*-l*) *filename*:*linenr*:*column***\

## DESCRIPTION

semind is the simple to use cscope-like tool based on sparse/dissect.  Unlike cscope it runs after pre-processor and thus it can't index the code filtered out by ifdef's, but otoh it understands how the symbol is used and it can track the usage of struct members.

## SUBCOMMANDS

- **add**

  generates or updates semantic index file.

- **rm**

  removes files from the index by *pattern*. The *pattern* is a [**glob**(7)](/glob/7.md) wildcard pattern.

- **search**

  queries information about symbol by *pattern*. The *pattern* is a [**glob**(7)](/glob/7.md) wildcard pattern.

## COMMON OPTIONS

- **-D**, **--database=FILE**

  specify database file (default: ./semind.sqlite).

- **-v**, **--verbose**

  show information about what is being done.

- **-h**, **--help**

  show this text and exit.

## ADD OPTIONS

- **--include-local-syms**

  include into the index local symbols.

## SEARCH OPTIONS

- **-f**, **--format=STRING**

  specify an output format. Default: '(%m) %f\\t%l\\t%c\\t%C\\t%s' (see **FORMAT** below).

- **-p**, **--path=PATTERN**

  search symbols only in specified directories.

- **-m**, **--mode=MODE**

  search only the specified type of access (see **MODE** below).

- **-k**, **--kind=KIND**

  specify a kind of symbol (see **KIND** below).

- **-e**, **--explain**

  Show what happens in the specified file position;

- **-l**, **--location**

  Show usage of symbols from a specific file position;

- **-v**, **--verbose**

  show information about what is being done;

- **-h**, **--help**

  show this text and exit.

## FORMAT

- **%m**

  access mode in human readable form (see **MODE** below).

- **%f**

  file name.

- **%l**

  line number.

- **%c**

  column number.

- **%C**

  the name of the function in which the symbol occurs.

- **%n**

  symbol name.

- **%s**

  source code line. Indexer does not save source code lines. They are read from the file during the search.

## KIND

- **f**

  function

- **s**

  strict

- **m**

  struct member

## MODE

The **MODE** is dumped as a 3-letter string. The first letter denotes address of part, 2-nd - access by value, 3-rd - access by pointer. A special value '*def*' means a symbol definition.

- **r**

  read

- **w**

  write

- **m**

  read and write

## SEE ALSO

[**sparse**(1)](/sparse/1.md)

## HOMEPAGE

https://sparse.docs.kernel.org

## MAILING LIST

linux-sparse@vger.kernel.org
