aboutsummaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorLeonard Grey <lgrey@chromium.org>2022-12-08 18:27:40 +0000
committerLeonard Grey <lgrey@chromium.org>2022-12-08 18:28:34 +0000
commitcc7abac08b0c52e6581b9c9c4226816b17a4c26d (patch)
tree149c3907bbc6c5c731cd9c628834019bfcc6f98e /src/tools
parentd31ce76161ba9ce0f7fd54e67ad582f777337e08 (diff)
downloadgoogle-breakpad-cc7abac08b0c52e6581b9c9c4226816b17a4c26d.tar.gz
Add option to enable multiple symbol field in Linux tool
Bug: google-breakpad:751 Change-Id: I63a4d652413ef7311da7494fbd8fb816445eb353 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4089183 Reviewed-by: Mark Mentovai <mark@chromium.org>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/linux/dump_syms/dump_syms.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/tools/linux/dump_syms/dump_syms.cc b/src/tools/linux/dump_syms/dump_syms.cc
index 6e6a6424..8998b3b3 100644
--- a/src/tools/linux/dump_syms/dump_syms.cc
+++ b/src/tools/linux/dump_syms/dump_syms.cc
@@ -56,6 +56,9 @@ int usage(const char* self) {
fprintf(stderr, " -n <name> Use specified name for name of the object\n");
fprintf(stderr, " -o <os> Use specified name for the "
"operating system\n");
+ fprintf(stderr, " -m Enable writing the optional 'm' field on FUNC"
+ "and PUBLIC, denoting multiple symbols for "
+ "the address.\n");
return 1;
}
@@ -67,6 +70,7 @@ int main(int argc, char** argv) {
bool handle_inlines = false;
bool handle_inter_cu_refs = true;
bool log_to_stderr = false;
+ bool enable_multiple_field = false;
std::string obj_name;
const char* obj_os = "Linux";
int arg_index = 1;
@@ -96,6 +100,8 @@ int main(int argc, char** argv) {
}
obj_os = argv[arg_index + 1];
++arg_index;
+ } else if (strcmp("-m", argv[arg_index]) == 0) {
+ enable_multiple_field = true;
} else {
printf("2.4 %s\n", argv[arg_index]);
return usage(argv[0]);
@@ -132,7 +138,8 @@ int main(int argc, char** argv) {
} else {
SymbolData symbol_data = (handle_inlines ? INLINES : NO_DATA) |
(cfi ? CFI : NO_DATA) | SYMBOLS_AND_FILES;
- google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs);
+ google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs,
+ enable_multiple_field);
if (!WriteSymbolFile(binary, obj_name, obj_os, debug_dirs, options,
std::cout)) {
fprintf(saved_stderr, "Failed to write symbol file.\n");