diff --git a/scripts/osv/debug.py b/scripts/osv/debug.py index 006dc4fe00a8e0ab838176ca82c9819daa4ba854..5581c4afe7bbf8cc27e9773fe67bb010b5a19363 100644 --- a/scripts/osv/debug.py +++ b/scripts/osv/debug.py @@ -45,18 +45,22 @@ class SymbolResolver(object): def next_line(self): return self.addr2line.stdout.readline().rstrip('\n') - def parse_line(self, addr, line): + def consume_unknown(self, line): # addr2line ver. 2.23.2 (Ubuntu) m = re.match(r'^\?\?$', line) if m: line = self.next_line() if not re.match(r'^\?\?:0$', line): raise Exception('Unexpected response: ' + line) - return SourceAddress(addr) + return True # addr2line ver. 2.23.52.0.1-9.fc19 m = re.match(r'^\?\? \?\?:0$', line) if m: + return True + + def parse_line(self, addr, line): + if self.consume_unknown(line): return SourceAddress(addr) m = re.match(r'(?P<name>.*) at ((?P<file>.*?)|\?+):((?P<line>\d+)|\?+)', line) @@ -85,6 +89,7 @@ class SymbolResolver(object): while line.startswith(self.inline_prefix): result.append(self.parse_line(addr, line[len(self.inline_prefix):])) line = self.next_line() + self.consume_unknown(line) self.cache[addr] = result return result