llvm-strings - print strings
============================

.. program:: llvm-strings

SYNOPSIS
--------

:program:`llvm-strings` [*options*] [*input...*]

DESCRIPTION
-----------

:program:`llvm-strings` is a tool intended as a drop-in replacement for GNU's
:program:`strings`, which looks for printable strings in files and writes them
to the standard output stream. A printable string is any sequence of four (by
default) or more printable ASCII characters. The end of the file, or any other
byte, terminates the current sequence.

:program:`llvm-strings` looks for strings in each ``input`` file specified.
Unlike GNU :program:`strings` it looks in the entire input file, regardless of
file format, rather than restricting the search to certain sections of object
files. If "``-``" is specified as an ``input``, or no ``input`` is specified,
the program reads from the standard input stream.

EXAMPLE
-------

.. code-block:: console

 $ cat input.txt
 bars
 foo
 wibble blob
 $ llvm-strings input.txt
 bars
 wibble blob

OPTIONS
-------

.. option:: --all, -a

 Silently ignored. Present for GNU :program:`strings` compatibility.

.. option:: --bytes=<length>, -n

 Set the minimum number of printable ASCII characters required for a sequence of
 bytes to be considered a string. The default value is 4.

.. option:: --help, -h

 Display a summary of command line options.

.. option:: --help-list

 Display an uncategorized summary of command line options.

.. option:: --print-file-name, -f

 Display the name of the containing file before each string.

 Example:

 .. code-block:: console

  $ llvm-strings --print-file-name test.o test.elf
  test.o: _Z5hellov
  test.o: some_bss
  test.o: test.cpp
  test.o: main
  test.elf: test.cpp
  test.elf: test2.cpp
  test.elf: _Z5hellov
  test.elf: main
  test.elf: some_bss

.. option:: --radix=<radix>, -t

 Display the offset within the file of each string, before the string and using
 the specified radix. Valid ``<radix>`` values are ``o``, ``d`` and ``x`` for
 octal, decimal and hexadecimal respectively.

 Example:

 .. code-block:: console

  $ llvm-strings --radix=o test.o
      1054 _Z5hellov
      1066 .rela.text
      1101 .comment
      1112 some_bss
      1123 .bss
      1130 test.cpp
      1141 main
  $ llvm-strings --radix=d test.o
      556 _Z5hellov
      566 .rela.text
      577 .comment
      586 some_bss
      595 .bss
      600 test.cpp
      609 main
  $ llvm-strings -t x test.o
      22c _Z5hellov
      236 .rela.text
      241 .comment
      24a some_bss
      253 .bss
      258 test.cpp
      261 main

.. option:: --version

 Display the version of the :program:`llvm-strings` executable.

.. option:: @<FILE>

 Read command-line options from response file ``<FILE>``.

EXIT STATUS
-----------

:program:`llvm-strings` exits with a non-zero exit code if there is an error.
Otherwise, it exits with code 0.

BUGS
----

To report bugs, please visit <https://bugs.llvm.org/>.
