From 3f95099931e13be1262f6f2eb6dcd76f7a9ae03b Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sat, 3 Oct 2020 16:10:05 +0200 Subject: [PATCH] +dttypes --- debuginfosize | 6 +++++- dttypes | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100755 dttypes diff --git a/debuginfosize b/debuginfosize index 7778ffb..39fab7e 100755 --- a/debuginfosize +++ b/debuginfosize @@ -3,10 +3,13 @@ set -e # build/znc-1.8.1-2.fc33.src.rpm.rpms [ $# -eq 1 ] which readelf >/dev/null +which llvm-dwarfdump >/dev/null srcrpm=$1 test -e $srcrpm.rpms -test ! -e $srcrpm.rpmsizes +test ! '(' -e $srcrpm.rpmsizes -a -e $srcrpm.dt5.rpm.dttypes ')' test ! -e $srcrpm.rpms.d +: >$srcrpm.dt5.rpm.dttypes +origpwd="$PWD" mkdir $srcrpm.rpms.d pushd $srcrpm.rpms.d >/dev/null rpmsbase=../../`basename $srcrpm` @@ -52,6 +55,7 @@ pushd $srcrpm.rpms.d >/dev/null fi dwztot=$[$dwztot+$dwz] dttot=$[$dttot+$dt] + llvm-dwarfdump -color=0 -debug-types --summarize-types ../dt/$i >>"$origpwd/$srcrpm".dt5.rpm.dttypes done popd >/dev/null popd >/dev/null diff --git a/dttypes b/dttypes new file mode 100755 index 0000000..10e15c0 --- /dev/null +++ b/dttypes @@ -0,0 +1,36 @@ +#! /usr/bin/perl +use strict; +use warnings; +my $savedtot=0; +@ARGV=glob "build/*.dttypes" if !@ARGV; +for my $fn (@ARGV) { + local *F; + open F,$fn or die $fn; + my %H; + my $saved=0; + my $valid; + while () { + chomp; + next if $_ eq ""; + next if $_ eq ".debug_types contents:"; + if (m{:\tfile format (\S+)$}) { + $valid=($1 eq "ELF64-x86-64"); + next; + } + die "$fn:$.: $_" if !m{^name = '.*' type_signature = 0x([0-9a-f]{16}) length = (0x[0-9a-f]{8})$}; + next if !$valid; + my $sig=$1; + my $len=eval($2)+4; + my $ref=\$H{$sig}; + if (!$$ref) { + $$ref=$len; + next; + } +# warn "$fn:$.: $sig: $len != $$ref" if $len!=$$ref; + $saved+=$len; + } + close F or die $fn; + print "$saved $fn\n" if $saved; + $savedtot+=$saved; +} +print "$savedtot\n"; -- 1.8.3.1