def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): obj = pf.data['obj'] if pf.cache_value is not None or obj is None or \ self.sym.is_image_from_app_bundle(obj): continue # We can only look up objects in the symbol server that have a # uuid. If we encounter things with an age appended or # similar we need to skip. try: uuid.UUID(obj.id) except (ValueError, TypeError): continue to_lookup.append( { 'object_uuid': obj.id, 'object_name': obj.name or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) } ) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): obj = pf.data['obj'] if pf.cache_value is not None or obj is None or \ self.sym.is_image_from_app_bundle(obj): continue # We can only look up objects in the symbol server that have a # uuid. If we encounter things with an age appended or # similar we need to skip. try: uuid.UUID(obj.debug_id) except (ValueError, TypeError): continue to_lookup.append( { 'object_uuid': obj.debug_id, 'object_name': obj.name or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) } ) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): obj = pf.data['obj'] if pf.cache_value is not None or obj is None or \ self.sym.is_image_from_app_bundle(obj): continue to_lookup.append( { 'object_uuid': six.text_type(obj.uuid), 'object_name': obj.name or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) } ) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): img = pf.data['image'] if pf.cache_value is not None or img is None or \ self.sym.is_image_from_app_bundle(img): continue to_lookup.append({ 'object_uuid': img['uuid'], 'object_name': img['name'], 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], img) }) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.sym.cpu_name) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): obj = pf.data['obj'] if pf.cache_value is not None or obj is None or \ self.sym.is_image_from_app_bundle(obj): continue to_lookup.append({ 'object_uuid': six.text_type(obj.uuid), 'object_name': obj.name or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) }) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): img = pf.data['image'] if pf.cache_value is not None or img is None or \ self.sym.is_frame_from_app_bundle(pf.frame, img): continue to_lookup.append({ 'object_uuid': img['uuid'], 'object_name': img['name'], 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], img) }) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.sym.cpu_name) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_ios_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): if pf.cache_value is not None: continue obj = pf.data['obj'] package = obj and obj.code_file # TODO(ja): This should check for iOS specifically if not package or not is_known_third_party(package): continue # We can only look up objects in the symbol server that have a # uuid. If we encounter things with an age appended or # similar we need to skip. try: uuid.UUID(obj.debug_id) except (ValueError, TypeError): continue to_lookup.append({ 'object_uuid': obj.debug_id, 'object_name': obj.code_file or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) }) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv
def fetch_ios_system_symbols(self, processing_task): to_lookup = [] pf_list = [] for pf in processing_task.iter_processable_frames(self): if pf.cache_value is not None: continue obj = pf.data['obj'] package = obj and obj.code_file # TODO(ja): This should check for iOS specifically if not package or not is_known_third_party(package): continue # We can only look up objects in the symbol server that have a # uuid. If we encounter things with an age appended or # similar we need to skip. try: uuid.UUID(obj.debug_id) except (ValueError, TypeError): continue to_lookup.append( { 'object_uuid': obj.debug_id, 'object_name': obj.code_file or '<unknown>', 'addr': '0x%x' % rebase_addr(pf.data['instruction_addr'], obj) } ) pf_list.append(pf) if not to_lookup: return rv = lookup_system_symbols(to_lookup, self.sdk_info, self.arch) if rv is not None: for symrv, pf in zip(rv, pf_list): if symrv is None: continue pf.data['symbolserver_match'] = symrv