| 701 | |
| 702 | |
| 703 | def HasDynamicSymbols(self, filename): |
| 704 | if filename.endswith(".ko"): return False |
| 705 | process = subprocess.Popen( |
| 706 | "%s -h %s" % (OBJDUMP_BIN, filename), |
| 707 | shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
| 708 | pipe = process.stdout |
| 709 | try: |
| 710 | for line in pipe: |
| 711 | match = OBJDUMP_SECTION_HEADER_RE.match(line.decode()) |
| 712 | if match and match.group(1) == 'dynsym': |
| 713 | return True |
| 714 | finally: |
| 715 | pipe.close() |
| 716 | assert process.wait() == 0, "Failed to objdump -h %s" % filename |
| 717 | return False |
| 718 | |
| 719 | |
| 720 | def Load(self, mmap_info, code_map, options): |