aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Wittman <wittman@chromium.org>2017-12-11 13:50:41 -0800
committerMark Mentovai <mark@chromium.org>2017-12-11 22:36:40 +0000
commit897a12cd26ad01a5ef19474f23cfd0fbff4ea5a7 (patch)
treec87ccf9c452bb3a0109ca6cd7ce17a8f91befc60
parentRemove duplicate import. (diff)
downloadbreakpad-897a12cd26ad01a5ef19474f23cfd0fbff4ea5a7.tar.xz
Write field indicating multiple symbols at an address in dump_syms
Updates dump_syms to write the optional 'm' first field in FUNCTION and PUBLIC records to indicate that the address corresponds to more than one symbol. Bug: google-breakpad:751 Change-Id: I850b0122324ed5f9ec747aa92ba354a3126a7ef9 Reviewed-on: https://chromium-review.googlesource.com/820711 Reviewed-by: Mark Mentovai <mark@chromium.org>
-rw-r--r--src/common/windows/pdb_source_line_writer.cc9
-rw-r--r--src/common/windows/pdb_source_line_writer.h8
-rw-r--r--src/tools/windows/dump_syms/dump_syms.cc16
-rw-r--r--src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym2
-rw-r--r--src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym2
-rw-r--r--src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym2
-rw-r--r--src/tools/windows/dump_syms/testdata/omap_stretched.sym2
-rw-r--r--src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym2
8 files changed, 12 insertions, 31 deletions
diff --git a/src/common/windows/pdb_source_line_writer.cc b/src/common/windows/pdb_source_line_writer.cc
index 19c63852..b7788ca0 100644
--- a/src/common/windows/pdb_source_line_writer.cc
+++ b/src/common/windows/pdb_source_line_writer.cc
@@ -219,8 +219,7 @@ bool CreateDiaDataSourceInstance(CComPtr<IDiaDataSource> &data_source) {
} // namespace
-PDBSourceLineWriter::PDBSourceLineWriter(bool enable_multiple_field)
- : enable_multiple_field_(enable_multiple_field), output_(NULL) {
+PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) {
}
PDBSourceLineWriter::~PDBSourceLineWriter() {
@@ -373,8 +372,7 @@ bool PDBSourceLineWriter::PrintFunction(IDiaSymbol *function,
MapAddressRange(image_map_, AddressRange(rva, static_cast<DWORD>(length)),
&ranges);
for (size_t i = 0; i < ranges.size(); ++i) {
- const char* optional_multiple_field =
- enable_multiple_field_ && has_multiple_symbols ? "m " : "";
+ const char* optional_multiple_field = has_multiple_symbols ? "m " : "";
fprintf(output_, "FUNC %s%lx %lx %x %ws\n", optional_multiple_field,
ranges[i].rva, ranges[i].length, stack_param_size, name.m_str);
}
@@ -891,8 +889,7 @@ bool PDBSourceLineWriter::PrintCodePublicSymbol(IDiaSymbol *symbol,
AddressRangeVector ranges;
MapAddressRange(image_map_, AddressRange(rva, 1), &ranges);
for (size_t i = 0; i < ranges.size(); ++i) {
- const char* optional_multiple_field =
- enable_multiple_field_ && has_multiple_symbols ? "m " : "";
+ const char* optional_multiple_field = has_multiple_symbols ? "m " : "";
fprintf(output_, "PUBLIC %s%lx %x %ws\n", optional_multiple_field,
ranges[i].rva, stack_param_size > 0 ? stack_param_size : 0,
name.m_str);
diff --git a/src/common/windows/pdb_source_line_writer.h b/src/common/windows/pdb_source_line_writer.h
index 5a8bcbe7..3ed07361 100644
--- a/src/common/windows/pdb_source_line_writer.h
+++ b/src/common/windows/pdb_source_line_writer.h
@@ -92,9 +92,7 @@ class PDBSourceLineWriter {
ANY_FILE // try PDB_FILE and then EXE_FILE
};
- // NB: |enable_multiple_field| is temporary while transitioning to enabling
- // writing the multiple field permanently.
- explicit PDBSourceLineWriter(bool enable_multiple_field = false);
+ explicit PDBSourceLineWriter();
~PDBSourceLineWriter();
// Opens the given file. For executable files, the corresponding pdb
@@ -232,10 +230,6 @@ class PDBSourceLineWriter {
// a failure, returns 0, which is also a valid number of bytes.
static int GetFunctionStackParamSize(IDiaSymbol *function);
- // True if the optional 'm' field on FUNC and PUBLIC for multiple symbols at
- // the same address should be output.
- bool enable_multiple_field_;
-
// The filename of the PE file corresponding to the currently-open
// pdb file.
wstring code_file_;
diff --git a/src/tools/windows/dump_syms/dump_syms.cc b/src/tools/windows/dump_syms/dump_syms.cc
index dcbe39ae..8ea777a5 100644
--- a/src/tools/windows/dump_syms/dump_syms.cc
+++ b/src/tools/windows/dump_syms/dump_syms.cc
@@ -42,22 +42,12 @@ using google_breakpad::PDBSourceLineWriter;
int wmain(int argc, wchar_t **argv) {
if (argc < 2) {
- fprintf(stderr,
- "Usage: %ws [--enable_multiple_field] <file.[pdb|exe|dll]>\n",
- argv[0]);
+ fprintf(stderr, "Usage: %ws <file.[pdb|exe|dll]>\n", argv[0]);
return 1;
}
- // This is a temporary option to enable writing the optional 'm' field on FUNC
- // and PUBLIC, denoting multiple symbols for the address. This option will be
- // removed, with the behavior enabled by default, after all symbol file
- // readers have had a chance to update.
- bool enable_multiple_field =
- (argc >= 3 && wcscmp(L"--enable_multiple_field", argv[1]) == 0);
-
- PDBSourceLineWriter writer(enable_multiple_field);
- if (!writer.Open(wstring(argv[enable_multiple_field ? 2 : 1]),
- PDBSourceLineWriter::ANY_FILE)) {
+ PDBSourceLineWriter writer;
+ if (!writer.Open(wstring(argv[1]), PDBSourceLineWriter::ANY_FILE)) {
fprintf(stderr, "Open failed\n");
return 1;
}
diff --git a/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym b/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym
index 2fafc6f4..66a22192 100644
--- a/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym
+++ b/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym
@@ -1958,7 +1958,7 @@ FUNC 4515 84 0 _local_unwind2
FUNC 4599 23 0 _abnormal_termination
FUNC 45bc 9 0 _NLG_Notify1
FUNC 45c5 1f 0 _NLG_Notify
-PUBLIC 45dc 0 _NLG_Dispatch
+PUBLIC m 45dc 0 _NLG_Dispatch
FUNC 45e4 3 0 _NLG_Call
PUBLIC 45e6 0 _NLG_Return2
FUNC 45e7 33 0 abort
diff --git a/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym b/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym
index 04614bab..fe769e85 100644
--- a/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym
+++ b/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym
@@ -2809,7 +2809,7 @@ FUNC 67c0 84 0 _local_unwind2
FUNC 6844 23 0 _abnormal_termination
FUNC 6867 9 0 _NLG_Notify1
FUNC 6870 1f 0 _NLG_Notify
-PUBLIC 6887 0 _NLG_Dispatch
+PUBLIC m 6887 0 _NLG_Dispatch
FUNC 688f 3 0 _NLG_Call
PUBLIC 6891 0 _NLG_Return2
FUNC 4695 33 0 abort
diff --git a/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym b/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym
index 3662479d..efd4ffff 100644
--- a/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym
+++ b/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym
@@ -1958,7 +1958,7 @@ FUNC 293c 84 0 _local_unwind2
FUNC 29c0 23 0 _abnormal_termination
FUNC 29e3 9 0 _NLG_Notify1
FUNC 29ec 1f 0 _NLG_Notify
-PUBLIC 2a03 0 _NLG_Dispatch
+PUBLIC m 2a03 0 _NLG_Dispatch
FUNC 2a0b 3 0 _NLG_Call
PUBLIC 2a0d 0 _NLG_Return2
FUNC 2862 33 0 abort
diff --git a/src/tools/windows/dump_syms/testdata/omap_stretched.sym b/src/tools/windows/dump_syms/testdata/omap_stretched.sym
index 264a2fde..a948e5bf 100644
--- a/src/tools/windows/dump_syms/testdata/omap_stretched.sym
+++ b/src/tools/windows/dump_syms/testdata/omap_stretched.sym
@@ -2067,7 +2067,7 @@ FUNC 5263 84 0 _local_unwind2
FUNC 52e7 23 0 _abnormal_termination
FUNC 530a 9 0 _NLG_Notify1
FUNC 5313 1f 0 _NLG_Notify
-PUBLIC 532a 0 _NLG_Dispatch
+PUBLIC m 532a 0 _NLG_Dispatch
FUNC 5332 3 0 _NLG_Call
PUBLIC 5334 0 _NLG_Return2
FUNC 5335 33 0 abort
diff --git a/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym b/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym
index 32e5f1c4..293e3c4d 100644
--- a/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym
+++ b/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym
@@ -1958,7 +1958,7 @@ FUNC 5263 84 0 _local_unwind2
FUNC 52e7 23 0 _abnormal_termination
FUNC 530a 9 0 _NLG_Notify1
FUNC 5313 1f 0 _NLG_Notify
-PUBLIC 532a 0 _NLG_Dispatch
+PUBLIC m 532a 0 _NLG_Dispatch
FUNC 5332 3 0 _NLG_Call
PUBLIC 5334 0 _NLG_Return2
FUNC 5335 33 0 abort