Chromium Code Reviews| Index: src/tools/linux/dump_syms/dump_syms.cc |
| diff --git a/src/tools/linux/dump_syms/dump_syms.cc b/src/tools/linux/dump_syms/dump_syms.cc |
| index c8ade33a404d7f171b53779a055c8476594429dd..11617883a5d434f60c6bf92ba986924c0a554051 100644 |
| --- a/src/tools/linux/dump_syms/dump_syms.cc |
| +++ b/src/tools/linux/dump_syms/dump_syms.cc |
| @@ -28,6 +28,7 @@ |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| #include <stdio.h> |
| +#include <unistd.h> |
| #include <cstring> |
| #include <iostream> |
| @@ -44,6 +45,7 @@ int usage(const char* self) { |
| fprintf(stderr, "Options:\n"); |
| fprintf(stderr, " -c Do not generate CFI section\n"); |
| fprintf(stderr, " -r Do not handle inter-compilation unit references\n"); |
| + fprintf(stderr, " -v Verbose logging. Print all warnings to stderr\n"); |
| return 1; |
| } |
| @@ -53,6 +55,7 @@ int main(int argc, char **argv) { |
| bool cfi = true; |
| bool handle_inter_cu_refs = true; |
| + bool log_to_stderr = false; |
| int arg_index = 1; |
| while (arg_index < argc && strlen(argv[arg_index]) > 0 && |
| argv[arg_index][0] == '-') { |
| @@ -60,6 +63,8 @@ int main(int argc, char **argv) { |
| cfi = false; |
| } else if (strcmp("-r", argv[arg_index]) == 0) { |
| handle_inter_cu_refs = false; |
| + } else if (strcmp("-v", argv[arg_index]) == 0) { |
| + log_to_stderr = true; |
| } else { |
| return usage(argv[0]); |
| } |
| @@ -68,6 +73,12 @@ int main(int argc, char **argv) { |
| if (arg_index == argc) |
| return usage(argv[0]); |
| + // Save stderr so it can be used below. |
| + FILE* saved_stderr = fdopen(dup(STDERR_FILENO), "w"); |
|
Mark Mentovai
2015/11/11 15:05:13
fileno(stderr) since everything else is working wi
|
| + if (!log_to_stderr) { |
| + freopen("/dev/null", "w", stderr); |
|
Mark Mentovai
2015/11/11 15:05:13
<paths.h> _PATH_DEVNULL
|
| + } |
| + |
| const char* binary; |
| std::vector<string> debug_dirs; |
| binary = argv[arg_index]; |
| @@ -80,7 +91,7 @@ int main(int argc, char **argv) { |
| SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI; |
| google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs); |
| if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) { |
| - fprintf(stderr, "Failed to write symbol file.\n"); |
| + fprintf(saved_stderr, "Failed to write symbol file.\n"); |
| return 1; |
| } |