From 6650cc934afa222bb729f63fbfe85aa15ebbd778 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 22 Aug 2012 21:25:19 -0400 Subject: [PATCH] Use addr2line (or i386-jos-elf-addr2line, if you cross compile) --- depcs | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) delete mode 100755 depcs diff --git a/depcs b/depcs deleted file mode 100755 index 6dfb888..0000000 --- a/depcs +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python - -# Decode a stack trace from getcallerpcs() to kernel symbols. -# Peter H. Froehlich , 600.318/418, Spring 2011 -# -# $ ./depcs 1072fa 1073c4 106d4a 103024 102fdd 0 0 0 0 0 -# 1078010 ['mappages'] -# 1078212 ['setupkvm'] -# 1076554 ['kvmalloc'] -# 1060900 ['mainc'] -# 1060829 ['jmpkstack'] - -import sys - -# read the symbols, mapping each address to all known names - -raw = {} -with open("kernel.sym") as f: - for s in f: - adr, sym = s.strip().split() - adr = int(adr, 16) - if adr in raw: - raw[adr].append(sym) - else: - raw[adr] = [sym] - -# for a given address, we need to determine what range it -# lies in; there are fancy data structures or this, which -# we ignore; let's just sort the keys instead - -sort = sorted(raw.keys()) - -# now we can find the least key greater than an address; -# if there's none, we use the last address we know; doh! - -def least(x): - for i in range(len(sort)-1): - if sort[i] <= x < sort[i+1]: - return sort[i] - return sort[-1] - -# therefore we can decode a backtrace (ignoring address -# 0 since it's useless for xv6) - -for adr in sys.argv[1:]: - adr = int(adr, 16) - if adr != 0: - print adr, raw[least(adr)]