diff options
Diffstat (limited to 'debian/vendor-h2o/share/h2o/annotate-backtrace-symbols')
-rwxr-xr-x | debian/vendor-h2o/share/h2o/annotate-backtrace-symbols | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/debian/vendor-h2o/share/h2o/annotate-backtrace-symbols b/debian/vendor-h2o/share/h2o/annotate-backtrace-symbols new file mode 100755 index 0000000..6d7c8a2 --- /dev/null +++ b/debian/vendor-h2o/share/h2o/annotate-backtrace-symbols @@ -0,0 +1,26 @@ +#! /bin/sh +exec ${H2O_PERL:-perl} -x $0 "$@" +#! perl + +use strict; +use warnings; + +while (my $line = <STDIN>) { + chomp $line; + if ($line =~ m{^([^\(\[]+)(.*?)\[(0x[0-9A-Fa-f]+)\]}) { + my ($exe, $info, $addr) = ($1, $2, $3); + my $resolved = addr2line($exe, $addr); + $line = "$exe${info}[$addr] $resolved" + if $resolved; + } + print "$line\n"; +} + +sub addr2line { + my ($exe, $addr) = @_; + open my $fh, "-|", qw(addr2line -pif -e), $exe, $addr + or return; + my $resolved = <$fh>; + chomp $resolved; + $resolved; +} |