@@ -191,15 +191,16 @@ def _sanitize_addr(self, addr):
191
191
192
192
return f"0x{ addr :0>8} "
193
193
194
- def resolve_addr (self , addr , only_found = False , full = False ):
194
+ def is_instruction_addr (self , addr ):
195
+ # instructions are generally mapped at 0x40XXXXXXh, see
196
+ # https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map
197
+ return self ._sanitize_addr (addr ).startswith ("0x40" )
198
+
199
+ def resolve_addr (self , addr ):
195
200
addr = self ._sanitize_addr (addr )
196
201
if addr in self ._address_map :
197
202
return f"{ addr } : { self ._address_map [addr ]} "
198
-
199
- if full :
200
- return f"[DATA (0x{ addr } )]"
201
-
202
- return addr if not only_found else None
203
+ return addr
203
204
204
205
205
206
def print_addr (name , value , resolver ):
@@ -211,17 +212,16 @@ def print_stack_full(lines, resolver):
211
212
print ("stack:" )
212
213
for line in lines :
213
214
print (f"{ line .offset } :" )
214
- for content in line .content :
215
- print (f" { resolver .resolve_addr (content , full = True )} " )
215
+ for addr in line .content :
216
+ print (f" { resolver .resolve_addr (addr )} " )
216
217
217
218
218
219
def print_stack (lines , resolver ):
219
220
print ("stack:" )
220
221
for line in lines :
221
- for content in line .content :
222
- out = resolver .resolve_addr (content , only_found = True )
223
- if out :
224
- print (out )
222
+ for addr in line .content :
223
+ if resolver .is_instruction_addr (addr ):
224
+ print (resolver .resolve_addr (addr ))
225
225
226
226
227
227
def print_result (parser , resolver , full = True ):
@@ -293,7 +293,6 @@ def parse_args():
293
293
parser .add_argument ("-e" , "--elf" , help = "path to ELF file" , required = True )
294
294
parser .add_argument ("-f" , "--full" , help = "print full stack dump" , action = "store_true" )
295
295
parser .add_argument ("file" , help = "file to read exception data from ('-' for stdin)" , default = "-" )
296
-
297
296
return parser .parse_args ()
298
297
299
298
0 commit comments