summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/share/h2o/annotate-backtrace-symbols
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xweb/server/h2o/libh2o/share/h2o/annotate-backtrace-symbols26
1 files changed, 26 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/share/h2o/annotate-backtrace-symbols b/web/server/h2o/libh2o/share/h2o/annotate-backtrace-symbols
new file mode 100755
index 00000000..6d7c8a2d
--- /dev/null
+++ b/web/server/h2o/libh2o/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;
+}