Changeset ff4c4f5 in mainline
- Timestamp:
- 2005-09-05T11:59:09Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c0b45fa
- Parents:
- 342616d
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/src/interrupt.c
r342616d rff4c4f5 41 41 42 42 43 44 static void messy_stack_trace(__native *stack) 45 { 46 __native *upper_limit = (__native *)(((__native)THREAD->kstack) + STACK_SIZE); 47 char *symbol; 48 49 printf("Stack contents: "); 50 while (stack < upper_limit) { 51 symbol = get_symtab_entry((__address)*stack); 52 if (symbol) 53 printf("%s, ", symbol); 54 stack++; 55 } 56 printf("\n"); 57 } 58 43 59 static void print_info_errcode(__u8 n, __native x[]) 44 60 { … … 65 81 printf(" %Q, %Q, %Q\n", x[20], x[21], x[22]); 66 82 printf(" %Q, %Q, %Q\n", x[23], x[24], x[25]); 83 messy_stack_trace(&x[5]); 67 84 } 68 85 -
tools/genmap.py
r342616d rff4c4f5 9 9 10 10 11 objline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+[0-9a-f]+\s+(.*)$') 11 funcline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+([0-9a-f]+)\s+(.*)$') 12 bssline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.bss\s+([0-9a-f]+)\s+(.*)$') 13 dataline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.data\s+([0-9a-f]+)\s+(.*)$') 12 14 fileexp = re.compile(r'([^\s]+):\s+file format') 13 15 def read_obdump(inp): 14 result = {} 16 funcs = {} 17 data = {} 18 bss ={} 15 19 fname = '' 16 20 for line in inp: 17 21 line = line.strip() 18 res = objline.match(line)22 res = funcline.match(line) 19 23 if res: 20 result.setdefault(fname,[]).append((int(res.group(1),16), 21 res.group(2))) 24 funcs.setdefault(fname,[]).append((int(res.group(1),16), 25 res.group(3))) 26 continue 27 res = bssline.match(line) 28 if res: 29 start = int(res.group(1),16) 30 end = int(res.group(2),16) 31 if end: 32 bss.setdefault(fname,[]).append((start,res.group(3))) 33 res = dataline.match(line) 34 if res: 35 start = int(res.group(1),16) 36 end = int(res.group(2),16) 37 if end: 38 data.setdefault(fname,[]).append((start,res.group(3))) 22 39 res = fileexp.match(line) 23 40 if res: 24 41 fname = res.group(1) 25 42 continue 26 27 return result28 43 29 startfile = re.compile(r'\.text\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$') 44 return { 45 'text' : funcs, 46 'bss' : bss, 47 'data' : data 48 } 49 50 startfile = re.compile(r'\.(text|bss|data)\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$') 30 51 def generate(kmapf, obmapf, out): 31 obdump = read_obdump(obmapf) 52 obdump = read_obdump(obmapf) 32 53 33 54 def sorter(x,y): … … 37 58 line = line.strip() 38 59 res = startfile.match(line) 39 if res and obdump.has_key(res.group(2)): 40 offset = int(res.group(1),16) 41 fname = res.group(2) 42 symbols = obdump[fname] 60 61 if res and obdump[res.group(1)].has_key(res.group(3)): 62 offset = int(res.group(2),16) 63 fname = res.group(3) 64 symbols = obdump[res.group(1)][fname] 43 65 symbols.sort(sorter) 44 for addr,symbol in symbols: 66 for addr,symbol in symbols: 45 67 value = fname + ':' + symbol 46 68 data = struct.pack(symtabfmt,addr+offset,value[:MAXSTRING])
Note:
See TracChangeset
for help on using the changeset viewer.