Skip to content

Instantly share code, notes, and snippets.

@MaskRay
Last active October 24, 2025 07:13
Show Gist options
  • Select an option

  • Save MaskRay/5995d10b65e1e18b82931c5a8d97f55e to your computer and use it in GitHub Desktop.

Select an option

Save MaskRay/5995d10b65e1e18b82931c5a8d97f55e to your computer and use it in GitHub Desktop.
Analyze .eh_frame section size distribution across executables and shared libraries on a Linux system
File Total_VM_KB EH_Frame_VM_KB EH_Frame_Ratio
/usr/bin/s390x-linux-gnu-lto-dump-14 26112.0 1863.68 7.1373
/usr/bin/pnmcrop 18.7 0.34765625 1.8591
/usr/bin/uclampset 17.9 1.23 6.8715
/usr/bin/atktopbm 6.36 0.18359375 2.8867
/usr/bin/getent 26.1 1.3 4.9808
/usr/bin/systemd-firstboot 52.1 1.2 2.3033
/usr/bin/busctl 82.9 1.79 2.1592
/usr/bin/arm-linux-gnueabi-g++ 1853.44 113.0 6.0968
/usr/bin/loadunimap 22.2 0.765625 3.4488
/usr/bin/pamlookup 8.75 0.21484375 2.4554
/usr/bin/mt-gnu 60.3 2.48 4.1128
/usr/bin/pgmhist 8.46 0.328125 3.8785
/usr/bin/opencc_phrase_extract 106.0 5.14 4.8491
/usr/bin/pamcat 17.3 0.3125 1.8064
/usr/bin/grub-mklayout 148.0 8.52 5.7568
/usr/bin/gtk-builder-tool 24.5 0.60546875 2.4713
/usr/bin/mandb 1167.36 3.53 0.3024
/usr/bin/sha384sum 33.0 1.01 3.0606
/usr/bin/split 50.3 1.45 2.8827
/usr/bin/colrm 8.27 0.34375 4.1566
/usr/bin/pamarith 15.4 0.328125 2.1307
/usr/bin/s390x-linux-gnu-ld.gold 3850.24 372.0 9.6617
/usr/bin/rdma 95.1 7.23 7.6025
/usr/bin/qemu-hexagon-static 5416.96 344.0 6.3504
/usr/bin/pamsistoaglyph 7.7 0.28125 3.6526
/usr/bin/s390x-linux-gnu-gprof 101.0 4.32 4.2772
/usr/bin/arm-linux-gnueabi-ld 793.0 18.6 2.3455
/usr/bin/pamtoavs 5.29 0.18359375 3.4706
/usr/bin/mtr-packet 26.1 0.953125 3.6518
/usr/bin/pamwipeout 6.53 0.30078125 4.6061
/usr/bin/catman 25.0 0.9296875 3.7188
/usr/bin/animate-im6 3.85 0.1796875 4.6672
/usr/bin/pgmtofs 5.27 0.20703125 3.9285
/usr/bin/ppmtoppm 4.07 0.16796875 4.127
/usr/bin/rls 6727.68 343.0 5.0983
/usr/bin/rtstat 18.1 0.4140625 2.2876
/usr/bin/pbmtogo 6.75 0.203125 3.0093
/usr/bin/tac 38.1 0.9609375 2.5221
/usr/bin/sanstats-19 17.1 0.61328125 3.5864
/usr/bin/s390x-linux-gnu-elfedit 34.0 2.06 6.0588
/usr/bin/llvm-ifs-19 61.7 2.64 4.2788
/usr/bin/rgb3toppm 4.64 0.171875 3.7042
/usr/bin/ppmcolormask 7.52 0.21484375 2.857
/usr/bin/write 14.0 0.5625 4.0179
/usr/bin/sort 97.0 4.23 4.3608
/usr/bin/column 29.9 1.07 3.5786
/usr/bin/msgfilter 23.0 0.625 2.7174
/usr/bin/conmon 155.0 2.24 1.4452
/usr/bin/factor 54.9 1.82 3.3151
/usr/bin/g++-14 1167.36 64.2 5.4996
/usr/bin/llvm-cxxfilt-19 22.1 0.69140625 3.1285
/usr/bin/x86_64-linux-gnu-gcc-ranlib 16.9 1.46 8.6391
/usr/bin/vmhgfs-fuse 40.9 2.52 6.1614
/usr/bin/sg_readcap 14.7 0.296875 2.0196
/usr/bin/jpeg2ktopam 226.0 15.4 6.8142
/usr/bin/sg_verify 13.1 0.18359375 1.4015
/usr/bin/ppmnorm 12.6 0.21484375 1.7051
/usr/bin/delv 39.2 0.6328125 1.6143
/usr/bin/merge-info 136.0 12.1 8.8971
/usr/bin/msgunfmt 27.5 0.6171875 2.2443
/usr/bin/ssh-add 284.0 9.51 3.3486
/usr/bin/m68k-linux-gnu-gcc-ranlib-13 26.7 2.6 9.7378
/usr/bin/icuexportdata 49.2 1.93 3.9228
/usr/bin/pbmtopk 27.8 0.515625 1.8548
/usr/bin/ppmdither 8.35 0.21484375 2.573
/usr/bin/pbmtoascii 5.84 0.25 4.2808
/usr/bin/truncate 28.3 0.7265625 2.5674
/usr/bin/gemtopnm 7.55 0.17578125 2.3282
/usr/bin/gcc-ar-13 16.9 1.46 8.6391
/usr/bin/ppmhist 9.76 0.2265625 2.3213
/usr/bin/qemu-nios2-static 2754.56 167.0 6.0627
/usr/bin/pamsplit 6.1 0.2578125 4.2264
/usr/bin/s390x-linux-gnu-ranlib 62.0 4.13 6.6613
/usr/bin/faked-sysv 97.9 1.05 1.0725
/usr/bin/macptopbm 6.74 0.20703125 3.0717
/usr/bin/bmptoppm 17.7 0.4609375 2.6042
/usr/bin/arm-linux-gnueabi-gcov-tool 957.0 68.8 7.1891
/usr/bin/animate-im6.q16 3.85 0.1796875 4.6672
/usr/bin/lsmem 31.6 1.56 4.9367
/usr/bin/btrfs-select-super 509.0 33.6 6.6012
/usr/bin/sg_ses_microcode 21.6 0.26953125 1.2478
/usr/bin/eyuvtoppm 6.42 0.30078125 4.6851
/usr/bin/logger 32.4 1.15 3.5494
/usr/bin/pbmtog3 12.4 0.34765625 2.8037
/usr/bin/gcc-ar-14 21.2 1.63 7.6887
/usr/bin/tnftp 303.0 9.16 3.0231
/usr/bin/pnmindex 12.4 0.21484375 1.7326
/usr/bin/chfn 135.0 2.87 2.1259
/usr/bin/pgrep 28.0 0.84375 3.0134
/usr/bin/stty 68.2 1.3 1.9062
/usr/bin/sqfscat 1679.36 6.39 0.3805
/usr/bin/sar 154.0 5.55 3.6039
/usr/bin/tmux 1095.68 52.8 4.8189
/usr/bin/hpftodit 243.0 1.16 0.4774
/usr/bin/ppmtotga 12.2 0.234375 1.9211
/usr/bin/convert-im6.q16 3.74 0.1796875 4.8045
/usr/bin/FileCheck-19 686.0 56.8 8.2799
/usr/bin/qemu-arm-static 4198.4 309.0 7.3599
/usr/bin/ip 1054.72 36.7 3.4796
/usr/bin/pgmtosbig 5.02 0.2578125 5.1357
/usr/bin/grub-file 795.0 59.2 7.4465
/usr/bin/llvm-opt-report-19 45.5 1.87 4.1099
/usr/bin/x86_64-linux-gnu-readelf 774.0 19.8 2.5581
/usr/bin/llvm-link-19 66.2 3.41 5.1511
/usr/bin/showkey 11.2 0.421875 3.7667
/usr/bin/mdatopbm 7.58 0.265625 3.5043
/usr/bin/numfmt 49.5 1.15 2.3232
/usr/bin/unshare 33.8 1.23 3.6391
/usr/bin/btrfs-image 544.0 34.7 6.3787
/usr/bin/pnmtopnm 5.36 0.21484375 4.0083
/usr/bin/montage-im6.q16 3.74 0.1796875 4.8045
/usr/bin/ed 49.3 2.27 4.6045
/usr/bin/pbmtoicon 4.98 0.18359375 3.6866
/usr/bin/fgconsole 7.7 0.29296875 3.8048
/usr/bin/gmake 260.0 13.3 5.1154
/usr/bin/pamperspective 20.7 0.47265625 2.2834
/usr/bin/mt 60.3 2.48 4.1128
/usr/bin/base64 30.0 0.8515625 2.8385
/usr/bin/chacl 9.9 0.26171875 2.6436
/usr/bin/x86_64-linux-gnu-objcopy 159.0 8.81 5.5409
/usr/bin/llvm-stress-19 54.6 3.03 5.5495
/usr/bin/epsffit 8.84 0.234375 2.6513
/usr/bin/psidtopgm 5.35 0.234375 4.3808
/usr/bin/strace 2191.36 65.3 2.9799
/usr/bin/manpath 18.3 0.8125 4.4399
/usr/bin/basename 23.5 0.71875 3.0585
/usr/bin/yuvtoppm 5.82 0.21484375 3.6915
/usr/bin/pstree.x11 27.6 0.87109375 3.1561
/usr/bin/cut 33.5 1.09 3.2537
/usr/bin/mokutil 51.3 1.73 3.3723
/usr/bin/bear 772.0 43.2 5.5959
/usr/bin/journalctl 73.4 1.27 1.7302
/usr/bin/pnmtosgi 8.37 0.46875 5.6004
/usr/bin/sg_timestamp 14.3 0.2421875 1.6936
/usr/bin/gcov-tool-13 298.0 26.3 8.8255
/usr/bin/pgmmorphconv 7.24 0.30859375 4.2623
/usr/bin/pgmbentley 4.13 0.17578125 4.2562
/usr/bin/ntfsmove 22.9 0.28125 1.2282
/usr/bin/xargs 55.5 2.27 4.0901
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 221.0 10.7 4.8416
/usr/lib/x86_64-linux-gnu/libBrokenLocale.so 3.07 0.1484375 4.8351
/usr/lib/x86_64-linux-gnu/libBrokenLocale.so.1 3.07 0.1484375 4.8351
/usr/lib/x86_64-linux-gnu/libDeployPkg.so.0 36.0 1.66 4.6111
/usr/lib/x86_64-linux-gnu/libDeployPkg.so.0.0.0 36.0 1.66 4.6111
/usr/lib/x86_64-linux-gnu/libFLAC.so.12 387.0 12.9 3.3333
/usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0 387.0 12.9 3.3333
/usr/lib/x86_64-linux-gnu/libGL.so.1 529.0 5.61 1.0605
/usr/lib/x86_64-linux-gnu/libGL.so.1.7.0 529.0 5.61 1.0605
/usr/lib/x86_64-linux-gnu/libGLX.so.0 191.0 5.08 2.6597
/usr/lib/x86_64-linux-gnu/libGLX.so.0.0.0 191.0 5.08 2.6597
/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0 440.0 38.6 8.7727
/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0 440.0 38.6 8.7727
/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0 440.0 38.6 8.7727
/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 724.0 2.49 0.3439
/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0.0.0 724.0 2.49 0.3439
/usr/lib/x86_64-linux-gnu/libICE.so.6 105.0 6.0 5.7143
/usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 105.0 6.0 5.7143
/usr/lib/x86_64-linux-gnu/libIex-3_1.so.30 514.0 59.2 11.5175
/usr/lib/x86_64-linux-gnu/libIex-3_1.so.30.5.1 514.0 59.2 11.5175
/usr/lib/x86_64-linux-gnu/libIlmThread-3_1.so.30 24.7 2.46 9.9595
/usr/lib/x86_64-linux-gnu/libIlmThread-3_1.so.30.5.1 24.7 2.46 9.9595
/usr/lib/x86_64-linux-gnu/libImath-3_1.so.29 299.0 1.6 0.5351
/usr/lib/x86_64-linux-gnu/libImath-3_1.so.29.8.0 299.0 1.6 0.5351
/usr/lib/x86_64-linux-gnu/libLLVM-18.so 120832.0 4771.84 3.9492
/usr/lib/x86_64-linux-gnu/libLLVM-19.so 125952.0 4976.64 3.9512
/usr/lib/x86_64-linux-gnu/libLLVM.so.18.1 120832.0 4771.84 3.9492
/usr/lib/x86_64-linux-gnu/libLLVM.so.19.1 125952.0 4976.64 3.9512
/usr/lib/x86_64-linux-gnu/libLerc.so.4 528.0 17.7 3.3523
/usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.7 2867.2 82.8 2.8878
/usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.7.0.0 2867.2 82.8 2.8878
/usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so.7 1218.56 30.7 2.5194
/usr/lib/x86_64-linux-gnu/libMagickWand-6.Q16.so.7.0.0 1218.56 30.7 2.5194
/usr/lib/x86_64-linux-gnu/libOpenEXR-3_1.so.30 3082.24 101.0 3.2768
/usr/lib/x86_64-linux-gnu/libOpenEXR-3_1.so.30.5.1 3082.24 101.0 3.2768
/usr/lib/x86_64-linux-gnu/libOpenEXRCore-3_1.so.30 481.0 15.6 3.2432
/usr/lib/x86_64-linux-gnu/libOpenEXRCore-3_1.so.30.5.1 481.0 15.6 3.2432
/usr/lib/x86_64-linux-gnu/libOpenEXRUtil-3_1.so.30 189.0 13.9 7.3545
/usr/lib/x86_64-linux-gnu/libOpenEXRUtil-3_1.so.30.5.1 189.0 13.9 7.3545
/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 1894.4 144.0 7.6014
/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.3000.0 1894.4 144.0 7.6014
/usr/lib/x86_64-linux-gnu/libSM.so.6 28.8 1.96 6.8056
/usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 28.8 1.96 6.8056
/usr/lib/x86_64-linux-gnu/libVkLayer_INTEL_nullhw.so 362.0 10.1 2.7901
/usr/lib/x86_64-linux-gnu/libVkLayer_MESA_device_select.so 61.5 5.92 9.626
/usr/lib/x86_64-linux-gnu/libVkLayer_MESA_overlay.so 887.0 40.9 4.611
/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 2.14 0.12890625 6.0237
/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 2.14 0.12890625 6.0237
/usr/lib/x86_64-linux-gnu/libX11.so.6 1259.52 70.3 5.5815
/usr/lib/x86_64-linux-gnu/libX11.so.6.4.0 1259.52 70.3 5.5815
/usr/lib/x86_64-linux-gnu/libXau.so.6 8.71 0.640625 7.3551
/usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 8.71 0.640625 7.3551
/usr/lib/x86_64-linux-gnu/libXaw.so.7 460.0 31.4 6.8261
/usr/lib/x86_64-linux-gnu/libXaw7.so.7 460.0 31.4 6.8261
/usr/lib/x86_64-linux-gnu/libXaw7.so.7.0.0 460.0 31.4 6.8261
/usr/lib/x86_64-linux-gnu/libXcomposite.so.1 7.2 0.6796875 9.4401
/usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 7.2 0.6796875 9.4401
/usr/lib/x86_64-linux-gnu/libXcursor.so.1 36.4 3.48 9.5604
/usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 36.4 3.48 9.5604
/usr/lib/x86_64-linux-gnu/libXdamage.so.1 6.88 0.5859375 8.5165
/usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 6.88 0.5859375 8.5165
/usr/lib/x86_64-linux-gnu/libXdmcp.so.6 17.4 1.65 9.4828
/usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 17.4 1.65 9.4828
/usr/lib/x86_64-linux-gnu/libXext.so.6 68.3 7.82 11.4495
/usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 68.3 7.82 11.4495
/usr/lib/x86_64-linux-gnu/libXfixes.so.3 18.9 2.14 11.3228
/usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 18.9 2.14 11.3228
/usr/lib/x86_64-linux-gnu/libXi.so.6 63.8 4.89 7.6646
/usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 63.8 4.89 7.6646
/usr/lib/x86_64-linux-gnu/libXinerama.so.1 6.81 0.56640625 8.3173
/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0 6.81 0.56640625 8.3173
/usr/lib/x86_64-linux-gnu/libXmu.so.6 100.0 6.38 6.38
/usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0 100.0 6.38 6.38
/usr/lib/x86_64-linux-gnu/libXmuu.so.1 12.4 0.52734375 4.2528
/usr/lib/x86_64-linux-gnu/libXmuu.so.1.0.0 12.4 0.52734375 4.2528
/usr/lib/x86_64-linux-gnu/libXpm.so.4 69.8 3.31 4.7421
/usr/lib/x86_64-linux-gnu/libXpm.so.4.11.0 69.8 3.31 4.7421
/usr/lib/x86_64-linux-gnu/libXrandr.so.2 40.1 3.82 9.5262
/usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 40.1 3.82 9.5262
/usr/lib/x86_64-linux-gnu/libXrender.so.1 36.2 2.62 7.2376
/usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 36.2 2.62 7.2376
/usr/lib/x86_64-linux-gnu/libXss.so.1 8.7 0.765625 8.8003
/usr/lib/x86_64-linux-gnu/libXss.so.1.0.0 8.7 0.765625 8.8003
/usr/lib/x86_64-linux-gnu/libXt.so.6 415.0 29.5 7.1084
/usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 415.0 29.5 7.1084
/usr/lib/x86_64-linux-gnu/libXtst.so.6 19.7 1.84 9.3401
/usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 19.7 1.84 9.3401
/usr/lib/x86_64-linux-gnu/libXv.so.1 16.4 1.52 9.2683
/usr/lib/x86_64-linux-gnu/libXv.so.1.0.0 16.4 1.52 9.2683
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 16.7 1.31 7.8443
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 16.7 1.31 7.8443
/usr/lib/x86_64-linux-gnu/libaa.so.1 123.0 4.85 3.9431
/usr/lib/x86_64-linux-gnu/libaa.so.1.0.4 123.0 4.85 3.9431
/usr/lib/x86_64-linux-gnu/libabsl_bad_any_cast_impl.so.20220623 4.01 0.2109375 5.2603
/usr/lib/x86_64-linux-gnu/libabsl_bad_any_cast_impl.so.20220623.0.0 4.01 0.2109375 5.2603
/usr/lib/x86_64-linux-gnu/libabsl_bad_optional_access.so.20220623 4.11 0.2109375 5.1323
/usr/lib/x86_64-linux-gnu/libabsl_bad_optional_access.so.20220623.0.0 4.11 0.2109375 5.1323
/usr/lib/x86_64-linux-gnu/libabsl_bad_variant_access.so.20220623 4.31 0.23828125 5.5286
/usr/lib/x86_64-linux-gnu/libabsl_bad_variant_access.so.20220623.0.0 4.31 0.23828125 5.5286
/usr/lib/x86_64-linux-gnu/libabsl_base.so.20220623 12.6 0.9921875 7.8745
/usr/lib/x86_64-linux-gnu/libabsl_base.so.20220623.0.0 12.6 0.9921875 7.8745
/usr/lib/x86_64-linux-gnu/libabsl_city.so.20220623 4.73 0.2421875 5.1202
/usr/lib/x86_64-linux-gnu/libabsl_city.so.20220623.0.0 4.73 0.2421875 5.1202
/usr/lib/x86_64-linux-gnu/libabsl_civil_time.so.20220623 17.2 0.82421875 4.792
/usr/lib/x86_64-linux-gnu/libabsl_civil_time.so.20220623.0.0 17.2 0.82421875 4.792
/usr/lib/x86_64-linux-gnu/libabsl_cord.so.20220623 84.0 5.33 6.3452
/usr/lib/x86_64-linux-gnu/libabsl_cord.so.20220623.0.0 84.0 5.33 6.3452
/usr/lib/x86_64-linux-gnu/libabsl_cord_internal.so.20220623 96.9 5.73 5.9133
/usr/lib/x86_64-linux-gnu/libabsl_cord_internal.so.20220623.0.0 96.9 5.73 5.9133
/usr/lib/x86_64-linux-gnu/libabsl_cordz_functions.so.20220623 3.72 0.23046875 6.1954
/usr/lib/x86_64-linux-gnu/libabsl_cordz_functions.so.20220623.0.0 3.72 0.23046875 6.1954
/usr/lib/x86_64-linux-gnu/libabsl_cordz_handle.so.20220623 10.9 0.80859375 7.4183
/usr/lib/x86_64-linux-gnu/libabsl_cordz_handle.so.20220623.0.0 10.9 0.80859375 7.4183
/usr/lib/x86_64-linux-gnu/libabsl_cordz_info.so.20220623 21.2 1.24 5.8491
/usr/lib/x86_64-linux-gnu/libabsl_cordz_info.so.20220623.0.0 21.2 1.24 5.8491
/usr/lib/x86_64-linux-gnu/libabsl_cordz_sample_token.so.20220623 4.1 0.30078125 7.3361
/usr/lib/x86_64-linux-gnu/libabsl_cordz_sample_token.so.20220623.0.0 4.1 0.30078125 7.3361
/usr/lib/x86_64-linux-gnu/libabsl_debugging_internal.so.20220623 14.2 1.28 9.0141
/usr/lib/x86_64-linux-gnu/libabsl_debugging_internal.so.20220623.0.0 14.2 1.28 9.0141
/usr/lib/x86_64-linux-gnu/libabsl_demangle_internal.so.20220623 30.0 1.96 6.5333
/usr/lib/x86_64-linux-gnu/libabsl_demangle_internal.so.20220623.0.0 30.0 1.96 6.5333
/usr/lib/x86_64-linux-gnu/libabsl_examine_stack.so.20220623 5.62 0.3125 5.5605
/usr/lib/x86_64-linux-gnu/libabsl_examine_stack.so.20220623.0.0 5.62 0.3125 5.5605
/usr/lib/x86_64-linux-gnu/libabsl_exponential_biased.so.20220623 3.14 0.203125 6.4689
/usr/lib/x86_64-linux-gnu/libabsl_exponential_biased.so.20220623.0.0 3.14 0.203125 6.4689
/usr/lib/x86_64-linux-gnu/libabsl_failure_signal_handler.so.20220623 9.94 0.46875 4.7158
/usr/lib/x86_64-linux-gnu/libabsl_failure_signal_handler.so.20220623.0.0 9.94 0.46875 4.7158
/usr/lib/x86_64-linux-gnu/libabsl_flags_commandlineflag.so.20220623 3.6 0.12890625 3.5807
/usr/lib/x86_64-linux-gnu/libabsl_flags_commandlineflag.so.20220623.0.0 3.6 0.12890625 3.5807
/usr/lib/x86_64-linux-gnu/libabsl_flags_commandlineflag_internal.so.20220623 3.29 0.1640625 4.9867
/usr/lib/x86_64-linux-gnu/libabsl_flags_commandlineflag_internal.so.20220623.0.0 3.29 0.1640625 4.9867
/usr/lib/x86_64-linux-gnu/libabsl_flags_config.so.20220623 16.1 0.8984375 5.5804
/usr/lib/x86_64-linux-gnu/libabsl_flags_config.so.20220623.0.0 16.1 0.8984375 5.5804
/usr/lib/x86_64-linux-gnu/libabsl_flags_internal.so.20220623 29.6 2.21 7.4662
/usr/lib/x86_64-linux-gnu/libabsl_flags_internal.so.20220623.0.0 29.6 2.21 7.4662
/usr/lib/x86_64-linux-gnu/libabsl_flags_marshalling.so.20220623 24.4 1.71 7.0082
/usr/lib/x86_64-linux-gnu/libabsl_flags_marshalling.so.20220623.0.0 24.4 1.71 7.0082
/usr/lib/x86_64-linux-gnu/libabsl_flags_parse.so.20220623 54.0 1.8 3.3333
/usr/lib/x86_64-linux-gnu/libabsl_flags_parse.so.20220623.0.0 54.0 1.8 3.3333
/usr/lib/x86_64-linux-gnu/libabsl_flags_private_handle_accessor.so.20220623 3.86 0.24609375 6.3755
/usr/lib/x86_64-linux-gnu/libabsl_flags_private_handle_accessor.so.20220623.0.0 3.86 0.24609375 6.3755
/usr/lib/x86_64-linux-gnu/libabsl_flags_program_name.so.20220623 6.71 0.4453125 6.6365
/usr/lib/x86_64-linux-gnu/libabsl_flags_program_name.so.20220623.0.0 6.71 0.4453125 6.6365
/usr/lib/x86_64-linux-gnu/libabsl_flags_reflection.so.20220623 47.3 2.51 5.3066
/usr/lib/x86_64-linux-gnu/libabsl_flags_reflection.so.20220623.0.0 47.3 2.51 5.3066
/usr/lib/x86_64-linux-gnu/libabsl_flags_usage.so.20220623 5.94 0.3359375 5.6555
/usr/lib/x86_64-linux-gnu/libabsl_flags_usage.so.20220623.0.0 5.94 0.3359375 5.6555
/usr/lib/x86_64-linux-gnu/libabsl_flags_usage_internal.so.20220623 38.2 2.16 5.6545
/usr/lib/x86_64-linux-gnu/libabsl_flags_usage_internal.so.20220623.0.0 38.2 2.16 5.6545
/usr/lib/x86_64-linux-gnu/libabsl_graphcycles_internal.so.20220623 16.7 1.14 6.8263
/usr/lib/x86_64-linux-gnu/libabsl_graphcycles_internal.so.20220623.0.0 16.7 1.14 6.8263
/usr/lib/x86_64-linux-gnu/libabsl_hash.so.20220623 4.1 0.2265625 5.5259
/usr/lib/x86_64-linux-gnu/libabsl_hash.so.20220623.0.0 4.1 0.2265625 5.5259
/usr/lib/x86_64-linux-gnu/libabsl_hashtablez_sampler.so.20220623 9.47 0.7890625 8.3322
/usr/lib/x86_64-linux-gnu/libabsl_hashtablez_sampler.so.20220623.0.0 9.47 0.7890625 8.3322
/usr/lib/x86_64-linux-gnu/libabsl_int128.so.20220623 14.6 0.64453125 4.4146
/usr/lib/x86_64-linux-gnu/libabsl_int128.so.20220623.0.0 14.6 0.64453125 4.4146
/usr/lib/x86_64-linux-gnu/libabsl_leak_check.so.20220623 2.9 0.2265625 7.8125
/usr/lib/x86_64-linux-gnu/libabsl_leak_check.so.20220623.0.0 2.9 0.2265625 7.8125
/usr/lib/x86_64-linux-gnu/libabsl_log_severity.so.20220623 3.33 0.2421875 7.2729
/usr/lib/x86_64-linux-gnu/libabsl_log_severity.so.20220623.0.0 3.33 0.2421875 7.2729
/usr/lib/x86_64-linux-gnu/libabsl_low_level_hash.so.20220623 2.7 0.13671875 5.0637
/usr/lib/x86_64-linux-gnu/libabsl_low_level_hash.so.20220623.0.0 2.7 0.13671875 5.0637
/usr/lib/x86_64-linux-gnu/libabsl_malloc_internal.so.20220623 14.4 0.84765625 5.8865
/usr/lib/x86_64-linux-gnu/libabsl_malloc_internal.so.20220623.0.0 14.4 0.84765625 5.8865
/usr/lib/x86_64-linux-gnu/libabsl_periodic_sampler.so.20220623 3.77 0.22265625 5.906
/usr/lib/x86_64-linux-gnu/libabsl_periodic_sampler.so.20220623.0.0 3.77 0.22265625 5.906
/usr/lib/x86_64-linux-gnu/libabsl_random_distributions.so.20220623 9.94 0.40234375 4.0477
/usr/lib/x86_64-linux-gnu/libabsl_random_distributions.so.20220623.0.0 9.94 0.40234375 4.0477
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_distribution_test_util.so.20220623 17.2 0.875 5.0872
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_distribution_test_util.so.20220623.0.0 17.2 0.875 5.0872
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_pool_urbg.so.20220623 12.5 1.05 8.4
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_pool_urbg.so.20220623.0.0 12.5 1.05 8.4
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen.so.20220623 4.15 0.21875 5.2711
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen.so.20220623.0.0 4.15 0.21875 5.2711
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_hwaes.so.20220623 2.26 0.12109375 5.3581
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_hwaes.so.20220623.0.0 2.26 0.12109375 5.3581
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_hwaes_impl.so.20220623 3.56 0.1796875 5.0474
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_hwaes_impl.so.20220623.0.0 3.56 0.1796875 5.0474
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_slow.so.20220623 8.09 0.171875 2.1245
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_randen_slow.so.20220623.0.0 8.09 0.171875 2.1245
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_seed_material.so.20220623 5.22 0.28125 5.3879
/usr/lib/x86_64-linux-gnu/libabsl_random_internal_seed_material.so.20220623.0.0 5.22 0.28125 5.3879
/usr/lib/x86_64-linux-gnu/libabsl_random_seed_gen_exception.so.20220623 4.54 0.2421875 5.3345
/usr/lib/x86_64-linux-gnu/libabsl_random_seed_gen_exception.so.20220623.0.0 4.54 0.2421875 5.3345
/usr/lib/x86_64-linux-gnu/libabsl_random_seed_sequences.so.20220623 4.96 0.2734375 5.5129
/usr/lib/x86_64-linux-gnu/libabsl_random_seed_sequences.so.20220623.0.0 4.96 0.2734375 5.5129
/usr/lib/x86_64-linux-gnu/libabsl_raw_hash_set.so.20220623 5.08 0.234375 4.6137
/usr/lib/x86_64-linux-gnu/libabsl_raw_hash_set.so.20220623.0.0 5.08 0.234375 4.6137
/usr/lib/x86_64-linux-gnu/libabsl_raw_logging_internal.so.20220623 7.81 0.45703125 5.8519
/usr/lib/x86_64-linux-gnu/libabsl_raw_logging_internal.so.20220623.0.0 7.81 0.45703125 5.8519
/usr/lib/x86_64-linux-gnu/libabsl_scoped_set_env.so.20220623 5.13 0.2734375 5.3302
/usr/lib/x86_64-linux-gnu/libabsl_scoped_set_env.so.20220623.0.0 5.13 0.2734375 5.3302
/usr/lib/x86_64-linux-gnu/libabsl_spinlock_wait.so.20220623 3.3 0.23828125 7.2206
/usr/lib/x86_64-linux-gnu/libabsl_spinlock_wait.so.20220623.0.0 3.3 0.23828125 7.2206
/usr/lib/x86_64-linux-gnu/libabsl_stacktrace.so.20220623 5.98 0.50390625 8.4265
/usr/lib/x86_64-linux-gnu/libabsl_stacktrace.so.20220623.0.0 5.98 0.50390625 8.4265
/usr/lib/x86_64-linux-gnu/libabsl_status.so.20220623 33.2 3.02 9.0964
#!/usr/bin/env ruby
require 'open3'
# Configuration
BLOATY_PATH = File.expand_path("~/Dev/bloaty/out/release/bloaty")
EXECUTABLE_DIR = "/usr/bin"
SHARED_LIB_DIR = "/usr/lib/x86_64-linux-gnu"
def analyze_file(file_path)
return nil unless File.readable?(file_path)
begin
stdout, stderr, status = Open3.capture3(BLOATY_PATH, file_path)
return nil unless status.success? && !stdout.empty?
# Parse total VM size
total_line = stdout.lines.find { |line| line.include?("TOTAL") }
return nil unless total_line
total_parts = total_line.strip.split
total_vm_str = total_parts[-2] # Second to last column should be VM size
total_vm_kb = parse_size_to_kb(total_vm_str)
return nil unless total_vm_kb && total_vm_kb > 0
# Parse .eh_frame VM size (avoid matching .eh_frame_hdr)
eh_frame_line = stdout.lines.find { |line| line.match(/\s+\.eh_frame\s+/) }
return nil unless eh_frame_line
eh_frame_parts = eh_frame_line.strip.split
eh_frame_vm_str = eh_frame_parts[-2] # Second to last column should be VM size
eh_frame_vm_kb = parse_size_to_kb(eh_frame_vm_str)
return nil unless eh_frame_vm_kb
ratio = (eh_frame_vm_kb / total_vm_kb * 100).round(4)
{
file: file_path,
total_vm_kb: total_vm_kb,
eh_frame_vm_kb: eh_frame_vm_kb,
ratio: ratio
}
rescue => e
nil
end
end
def parse_size_to_kb(size_str)
return nil if size_str.nil? || size_str.empty?
case size_str
when /^(\d+\.?\d*)Ki$/
$1.to_f
when /^(\d+\.?\d*)Mi$/
$1.to_f * 1024
when /^(\d+\.?\d*)Gi$/
$1.to_f * 1024 * 1024
when /^(\d+\.?\d*)$/
$1.to_f / 1024 # Assume bytes, convert to KB
else
nil
end
end
def scan_directory(dir, pattern = nil, max_files = 200)
return [] unless Dir.exist?(dir)
files = if pattern
Dir.glob(File.join(dir, pattern)).select { |f| File.file?(f) }
else
Dir.entries(dir).reject { |f| f.start_with?('.') }.map { |f| File.join(dir, f) }.select { |f| File.file?(f) && File.executable?(f) }
end
files.first(max_files)
rescue => e
STDERR.puts "Error scanning #{dir}: #{e.message}"
[]
end
def process_files(files, description)
STDERR.puts "Scanning #{description}..."
STDERR.puts "Found #{files.length} #{description}"
results = []
files.each do |file|
STDERR.puts "Analyzing: #{file}"
result = analyze_file(file)
if result
results << result
puts "#{result[:file]},#{result[:total_vm_kb]},#{result[:eh_frame_vm_kb]},#{result[:ratio]}"
else
STDERR.puts " No .eh_frame found or error"
end
end
results
end
# Main execution
puts "Scanning .eh_frame VM size distribution..."
puts "File,Total_VM_KB,EH_Frame_VM_KB,EH_Frame_Ratio"
results = []
# Scan executables in /usr/bin
executables = scan_directory(EXECUTABLE_DIR)
results.concat(process_files(executables, "executables in #{EXECUTABLE_DIR}"))
# Scan shared objects in /usr/lib/x86_64-linux-gnu
shared_objects = scan_directory(SHARED_LIB_DIR, "*.so*")
results.concat(process_files(shared_objects, "shared objects in #{SHARED_LIB_DIR}"))
# Print summary statistics
STDERR.puts "\n=== Summary Statistics ==="
STDERR.puts "Total files analyzed: #{results.length}"
if results.any?
ratios = results.map { |r| r[:ratio] }
STDERR.puts "EH_Frame ratio statistics:"
STDERR.puts " Min: #{ratios.min.round(4)}%"
STDERR.puts " Max: #{ratios.max.round(4)}%"
STDERR.puts " Mean: #{(ratios.sum / ratios.length).round(4)}%"
STDERR.puts " Median: #{ratios.sort[ratios.length/2].round(4)}%"
# Distribution buckets
STDERR.puts "\nDistribution:"
buckets = [0, 5, 10, 15, 20, 25, 30, 40, 50, 100]
buckets.each_with_index do |bucket, i|
next_bucket = buckets[i + 1]
break unless next_bucket
count = ratios.count { |r| r >= bucket && r < next_bucket }
STDERR.puts " #{bucket}%-#{next_bucket}%: #{count} files"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment