Before: [acme@five pahole]$ git log --oneline -4 25753e0396abea25 pfunct: Use load stealer to speed up --class aa8fb8c091446467 man-pages: Add entry for -J/--btf_encode to pahole's man page ace05ba9414c1fe4 btf: Add support for split BTF loading and encoding 7290d08b4a6e5876 libbpf: Update libbpf submodule reference to latest master [acme@five pahole]$ [acme@five pahole]$ pahole -J vmlinux [acme@five pahole]$ pfunct -F btf vmlinux | sort > before.pfunct [acme@five pahole]$ bpftool btf dump file ./vmlinux | grep 'FUNC '| head [1163] FUNC 'vc_no_ghcb' type_id=89 linkage=static [1164] FUNC 'vc_boot_ghcb' type_id=89 linkage=static [1165] FUNC 'x86_early_init_platform_quirks' type_id=89 linkage=static [1166] FUNC '__read_overflow2' type_id=89 linkage=static [1168] FUNC 'clear_page_erms' type_id=1167 linkage=static [1169] FUNC 'clear_page_rep' type_id=1167 linkage=static [1170] FUNC 'clear_page_orig' type_id=1167 linkage=static [1171] FUNC 'idt_setup_early_handler' type_id=89 linkage=static [1173] FUNC 'early_fixup_exception' type_id=1172 linkage=static [1175] FUNC 'handle_vc_boot_ghcb' type_id=1174 linkage=static [acme@five pahole]$ bpftool btf dump file ./vmlinux | grep 'FUNC '| cut -d\' -f2 | head vc_no_ghcb vc_boot_ghcb x86_early_init_platform_quirks __read_overflow2 clear_page_erms clear_page_rep clear_page_orig idt_setup_early_handler early_fixup_exception handle_vc_boot_ghcb [acme@five pahole]$ bpftool btf dump file ./vmlinux | grep 'FUNC '| cut -d\' -f2 | sort > before.bpftool [acme@five pahole]$ head before.pfunct abort abort_creds abort_creds __absent_pages_in_range __absent_pages_in_range absent_pages_in_range ac6_proc_exit ac6_proc_init access_process_vm __access_remote_vm [acme@five pahole]$ head before.bpftool abort abort_creds abort_creds __absent_pages_in_range __absent_pages_in_range absent_pages_in_range ac6_proc_exit ac6_proc_init access_process_vm __access_remote_vm [acme@five pahole]$ [acme@five pahole]$ wc -l before.pfunct 28829 before.pfunct [acme@five pahole]$ wc -l before.bpftool 28829 before.bpftool [acme@five pahole]$ After: [acme@five pahole]$ git log --oneline -6 8156bec8aedb685b (HEAD -> master) btf_encoder: Fix function generation d0cd007339ee509e btf_encoder: Generate also .init functions 25753e0396abea25 pfunct: Use load stealer to speed up --class aa8fb8c091446467 man-pages: Add entry for -J/--btf_encode to pahole's man page ace05ba9414c1fe4 btf: Add support for split BTF loading and encoding 7290d08b4a6e5876 libbpf: Update libbpf submodule reference to latest master [acme@five pahole]$ [acme@five pahole]$ pahole -J vmlinux [acme@five pahole]$ pfunct -F btf vmlinux | sort > after.pfunct [acme@five pahole]$ bpftool btf dump file ./vmlinux | grep 'FUNC '| cut -d\' -f2 | sort > after.bpftool [acme@five pahole]$ [acme@five pahole]$ diff -u before.pfunct before.bpftool [acme@five pahole]$ [acme@five pahole]$ diff -u after.pfunct after.bpftool [acme@five pahole]$ [acme@five pahole]$ diff -u after.pfunct after.bpftool [acme@five pahole]$ wc -l before.pfunct 28829 before.pfunct [acme@five pahole]$ wc -l after.pfunct 41030 after.pfunct [acme@five pahole]$ Which is interesting, because with these patches we don't have dups in function names: [acme@five pahole]$ sort after.bpftool | uniq -c | sort -nr | head 1 zs_zpool_unmap 1 zs_zpool_total_size 1 zs_zpool_map 1 zs_zpool_malloc 1 zs_zpool_free 1 zs_zpool_destroy 1 zs_zpool_create 1 zswap_zpool_param_set 1 zswap_writeback_entry 1 __zswap_pool_release [acme@five pahole]$ While before we had: [acme@five pahole]$ sort before.bpftool | uniq -c | sort -nr | head 3 __x64_sys_userfaultfd 3 __x64_sys_timerfd_settime 3 __x64_sys_timerfd_gettime 3 __x64_sys_timerfd_create 3 __x64_sys_syslog 3 __x64_sys_sysfs 3 __x64_sys_swapon 3 __x64_sys_swapoff 3 __x64_sys_socketpair 3 __x64_sys_socket [acme@five pahole]$ The increase is due to the inclusion of static variables, for instance: [acme@five pahole]$ diff -u before.bpftool after.bpftool | tail +__zswap_pool_release +zswap_writeback_entry +zswap_zpool_param_set +zs_zpool_create +zs_zpool_destroy +zs_zpool_free +zs_zpool_malloc +zs_zpool_map +zs_zpool_total_size +zs_zpool_unmap [acme@five pahole]$ static void zs_zpool_unmap(void *pool, unsigned long handle)