Chromium Code Reviews

Unified Diff: build/linux/dump_signature.py

Issue 1508019: Update dump_symbols to match new file_id code. (Closed)
Patch Set: Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/linux/dump_signature.py
diff --git a/build/linux/dump_signature.py b/build/linux/dump_signature.py
index 9ba865acbb3e61ca610a66f7d463143b990ddea4..63180d07b4a1275f993690ba54d5b35c28c38037 100755
--- a/build/linux/dump_signature.py
+++ b/build/linux/dump_signature.py
@@ -1,20 +1,40 @@
-#!/usr/bin/python2.4
+#!/usr/bin/python
#
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
Lei Zhang 2010/04/05 22:57:50 nit: 2010
agl 2010/04/05 23:04:17 Done.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This generates symbol signatures with the same algorithm as
-# src/breakpad/linux/minidump_writer.cc@17081
+# src/breakpad/src/common/linux/file_id.cc@461
import sys
import struct
Lei Zhang 2010/04/05 22:57:50 nit: struct then sys. (this is my fault)
agl 2010/04/05 23:04:17 Done.
+import subprocess
if len(sys.argv) != 2:
sys.stderr.write("Error, no filename specified.\n")
sys.exit(1)
+# Shell out to objdump to get the offset of the .text section
+objdump = subprocess.Popen(['objdump', '-h', sys.argv[1]], stdout = subprocess.PIPE)
+(sections, _) = objdump.communicate()
+if objdump.returncode != 0:
+ sys.stderr.write('Failed to run objdump to find .text section.\n')
+ sys.exit(1)
+
+text_section = [x for x in sections.split('\n') if '.text' in x]
Lei Zhang 2010/04/05 22:57:50 text_section = [x for x in sections.splitlines() i
agl 2010/04/05 23:04:17 Done.
+if len(text_section) == 0:
+ sys.stderr.write('objdump failed to find a .text section.\n')
+ sys.exit(1)
+text_section = text_section[0]
+file_offset = int(text_section.split()[5], 16)
Lei Zhang 2010/04/05 22:57:50 can you put this in a try: except ValueError block
agl 2010/04/05 23:04:17 Done.
+
bin = open(sys.argv[1])
+bin.seek(file_offset)
+if bin.tell() != file_offset:
+ sys.stderr.write("Failed to seek to the .text segment. Truncated file?\n");
+ sys.exit(1)
+
data = bin.read(4096)
if len(data) != 4096:
sys.stderr.write("Error, did not read first page of data.\n");
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine