X-Git-Url: http://git.jankratochvil.net/?p=massrebuild.git;a=blobdiff_plain;f=dttypes;fp=dttypes;h=10e15c08116eb34db5fcc7a306c195d3ef8c690e;hp=0000000000000000000000000000000000000000;hb=3f95099931e13be1262f6f2eb6dcd76f7a9ae03b;hpb=010e5bfc63a70e5e5f384199443288e2490b4f3d;ds=sidebyside 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";