Andrii Nakryiko 1fdfd30921 btf: resolve enum fwds in btf_dedup
GCC and clang support enum forward declarations as an extension. Such
forward-declared enums will be represented as normal BTF_KIND_ENUM types with
vlen=0. This patch adds ability to resolve such enums to their corresponding
fully defined enums. This helps to avoid duplicated BTF type graphs which only
differ by some types referencing forward-declared enum vs full enum.

One such example in kernel is enum irqchip_irq_state, defined in
include/linux/interrupt.h and forward-declared in include/linux/irq.h. This
causes entire struct task_struct and all referenced types to be duplicated in
btf_dedup output. This patch eliminates such duplication cases.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2019-03-19 12:17:19 -07:00
2019-03-19 12:17:19 -07:00
2019-03-19 12:17:19 -07:00

This is a mirror of bpf-next linux tree
(https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next)
bpf-next/tools/lib/bpf directory plus its supporting header files.

The following files will by sync'ed with bpf-next repo:
  src/ <-> bpf-next/tools/lib/bpf/
  include/uapi/linux/bpf_common.h <-> bpf-next/tools/include/uapi/linux/bpf_common.h
  include/uapi/linux/bpf.h <-> bpf-next/tools/include/uapi/linux/bpf.h
  include/uapi/linux/btf.h <-> bpf-next/tools/include/uapi/linux/btf.h
  include/uapi/linux/if_link.h <-> bpf-next/tools/include/uapi/linux/if_link.h
  include/uapi/linux/if_xdp.h <-> bpf-next/tools/include/uapi/linux/if_xdp.h
  include/uapi/linux/netlink.h <-> bpf-next/tools/include/uapi/linux/netlink.h
  include/tools/libc_compat.h <-> bpf-next/tools/include/tools/libc_compat.h

Other header files at this repo (include/linux/*.h) are reduced versions of
their counterpart files at bpf-next/tools/include/linux/*.h to make compilation
successful.

Build
=====

To build static library libbpf.a:
  cd src
  make

To build both static libbpf.a and shared libbpf.so libraries in directory
build/ and install them together with libbpf headers in a staging directory
root/:
  cd src
  mkdir build root
  BUILD_SHARED=y OBJDIR=build DESTDIR=root make install
Description
Automated upstream mirror for libbpf stand-alone build.
Readme 13 MiB
Languages
C 98.3%
Shell 1.4%
Makefile 0.3%