BTF encoder:

  - Improve ELF error reporting using elf_errmsg(elf_errno()).

  - Improve objcopy error handling.

  - Fix handling of 'restrict' qualifier, that was being treated as a 'const'.

  - Support SHN_XINDEX in st_shndx symbol indexes, to handle ELF objects with
    more than 65534 sections, for instance, which happens with kernels built
    with 'KCFLAGS="-ffunction-sections -fdata-sections", Other cases may
    include when using FG-ASLR, LTO.

  - Cope with functions without a name, as seen sometimes when building kernel
    images with some versions of clang, when a SEGFAULT was taking place.

  - Fix BTF variable generation for kernel modules, not skipping variables at
    offset zero.

  - Fix address size to match what is in the ELF file being processed, to fix using
    a 64-bit pahole binary to generate BTF for a 32-bit vmlinux image.

  - Use kernel module ftrace addresses when finding which functions to encode,
    which increases the number of functions encoded.

libbpf:

  - Allow use of packaged version, for distros wanting to dynamically link with
    the system's libbpf package instead of using the libbpf git submodule shipped
    in pahole's source code.

DWARF loader:

  - Support DW_AT_data_bit_offset
    
    This appeared in DWARF4 but is supported only in gcc's -gdwarf-5,
    support it in a way that makes the output be the same for both cases.
    
      $ gcc -gdwarf-5 -c examples/dwarf5/bf.c
      $ pahole bf.o
      struct pea {
            long int                   a:1;                  /*     0: 0  8 */
            long int                   b:1;                  /*     0: 1  8 */
            long int                   c:1;                  /*     0: 2  8 */
    
            /* XXX 29 bits hole, try to pack */
            /* Bitfield combined with next fields */
    
            int                        after_bitfield;       /*     4     4 */
    
            /* size: 8, cachelines: 1, members: 4 */
            /* sum members: 4 */
            /* sum bitfield members: 3 bits, bit holes: 1, sum bit holes: 29 bits */
            /* last cacheline: 8 bytes */
      };

  - DW_FORM_implicit_const in attr_numeric() and attr_offset()

  - Support DW_TAG_GNU_call_site, its the standardized rename of the previously supported
    DW_TAG_GNU_call_site.

build:

    - Fix compilation on 32-bit architectures.

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