linux-hardened/tools
Andrey Ignatov 306b267cb3 libbpf: Verify versioned symbols
Since ABI versioning info is kept separately from the code it's easy to
forget to update it while adding a new API.

Add simple verification that all global symbols exported with LIBBPF_API
are versioned in libbpf.map version script.

The idea is to check that number of global symbols in libbpf-in.o, that
is the input to the linker, matches with number of unique versioned
symbols in libbpf.so, that is the output of the linker. If these numbers
don't match, it may mean some symbol was not versioned and make will
fail.

"Unique" means that if a symbol is present in more than one version of
ABI due to ABI changes, it'll be counted once.

Another option to calculate number of global symbols in the "input"
could be to count number of LIBBPF_ABI entries in C headers but it seems
to be fragile.

Example of output when a symbol is missing in version script:

    ...
    LD       libbpf-in.o
    LINK     libbpf.a
    LINK     libbpf.so
  Warning: Num of global symbols in libbpf-in.o (115) does NOT match
  with num of versioned symbols in libbpf.so (114). Please make sure all
  LIBBPF_API symbols are versioned in libbpf.map.
  make: *** [check_abi] Error 1

Signed-off-by: Andrey Ignatov <rdna@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2018-11-26 18:57:14 -08:00
..
accounting delayacct: track delays from thrashing cache pages 2018-10-26 16:26:32 -07:00
arch tools headers barrier: Fix arm64 tools build failure wrt smp_load_{acquire,release} 2018-11-01 10:07:43 -03:00
bpf libbpf: Name changing for btf_get_from_id 2018-11-26 18:57:14 -08:00
build Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-08-15 15:04:25 -07:00
cgroup
crypto crypto: tools - Add cryptostat userspace 2018-09-28 12:46:26 +08:00
firewire
gpio
hv tools: hv: fcopy: set 'error' in case an unknown operation was requested 2018-09-30 08:49:55 -07:00
iio iio: Add modifier for DUV light 2018-07-23 19:18:10 +01:00
include bpf: add skb->tstamp r/w access from tc clsact and cg skb progs 2018-11-22 15:47:28 -08:00
kvm/kvm_stat tools/kvm_stat: cut down decimal places in update interval dialog 2018-10-01 15:40:59 +02:00
laptop
leds
lib libbpf: Verify versioned symbols 2018-11-26 18:57:14 -08:00
memory-model tools/memory-model: Add more LKMM limitations 2018-10-02 10:28:04 +02:00
nfsd
objtool Merge branch 'core/urgent' into x86/urgent, to pick up objtool fix 2018-11-03 23:42:16 +01:00
pci tools: PCI: Change pcitest compiling process 2018-10-03 11:19:52 +01:00
pcmcia
perf perf/urgent improvements and fixes: 2018-11-06 20:03:11 +01:00
power tools cpupower: Override CFLAGS assignments 2018-11-06 08:54:16 -07:00
scripts
spi spi: spidev_test: Improve decoded text part of hex dump 2018-09-04 17:00:37 +01:00
testing libbpf: Name changing for btf_get_from_id 2018-11-26 18:57:14 -08:00
thermal/tmon
time
usb usbip: tools: fix atoi() on non-null terminated string 2018-10-18 19:44:39 +02:00
virtio tools/virtio: add kmalloc_array stub 2018-07-27 16:54:40 +03:00
vm tools/vm/page-types.c: fix "defined but not used" warning 2018-09-04 16:45:02 -07:00
wmi
Makefile tools: PCI: Change pcitest compiling process 2018-10-03 11:19:52 +01:00