# 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`
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
--- /dev/null
+#! /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 (<F>) {
+ 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";