pahole:

- Allow encoding BTF to a separate BTF file (detached) instead of to a new
  ".BTF" ELF section in the file being encoded (vmlinux usually).

- Introduce -j/--jobs option to specify the number of threads to use. Without
  arguments means one thread per CPU. So far used for the DWARF loader, will
  be used as well for the BTF encoder.

- Show all different types with the same name, not just the first one found.

- Introduce sorted type output (--sort), needed with multithreaded DWARF loading,
  to use with things like 'btfdiff' that expects the output from DWARF and BTF
  types to be comparable using 'diff'.

- Stop assuming that reading from stdin means pretty printing as this broke
  pre-existing scripts, introduce a explicit --prettify command line option.

- Improve type resolution for the --header command line option.

- Disable incomplete CTF encoder, this needs to be done using the external
  libctf library.

- Do not consider the ftrace filter when encoding BTF for kernel functions.

- Add --kabi_prefix to avoid deduplication woes when using _RH_KABI_REPLACE(),

- Add --with_flexible_array to show just types with flexible arrays.

DWARF Loader:

- Multithreaded loading, requires elfutils >= 0.178.

- Lock calls to non-thread safe elfutils' libdw functions (dwarf_decl_file()
  and dwarf_decl_line())

- Change hash table size to one that performs better with current typical
  vmlinux files.

- Allow tweaking the hash table size from the command line.

- Stop allocating memory for strings obtained from libdw, just defer freeing
  the Dwfl handler so that references to its strings can be safely kept.

- Use a frontend cache for the latest lookup result.

- Allow ignoring some DWARF tags when loading for encoding BTF, as BTF doesn't
  have equivalents for things like DW_TAG_inline_expansion and DW_TAG_label.

- Allow ignoring some DWARF tag attributes, such as DW_AT_alignment, not used
  when encoding BTF.

- Do not query for non-C attributes when loading a C language CU (compilation unit).

BTF encoder:

- Preparatory work for multithreaded encoding, the focus for 1.23.

btfdiff:

- Support diffing against a detached BTF file, e.g.: 'btfdiff vmlinux vmlinux.btf'

- Support multithreaded DWARF loading, using the new pahole --sort option to have
  the output from both BTF and DWARF sorted and thus comparable via 'diff'.

Build:

- Support building with libc libraries lacking either obstacks or argp, such
  as Alpine Linux's musl libc.

- Support systems without getconf() to obtain the data cacheline size, such
  as musl libc.

- Add a buildcmd.sh for test builds, tested using the same set of containers
  used for testing the Linux kernel perf tools.

- Enable selecting building with a shared libdwarves library or statically.

- Allow to use the libbpf package found in distributions instead of with the
  accompanying libbpf git submodule.

Cleanups:

- Address lots of compiler warnings accumulated by not using -Wextra, it'll
  be added in the next release after allowing not to use it to build libbpf.

- Address covscan report issues.

Documentation:

- Improve the --nr_methods/-m pahole man page entry.

- Clarify that currently --nr_methods doesn't work together witn -C.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
