From bbad9f255d76cf7dcd11d15800e508d9849826af Mon Sep 17 00:00:00 2001 From: Nelson Billing Date: Wed, 19 Feb 2020 15:32:08 -0800 Subject: Add optional new symbol upload API to sym_upload. Change-Id: I6a49e9f4a699fa6f5f8e9f0fc86afb4cb342a442 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1422400 Reviewed-by: Mark Mentovai Reviewed-by: Ivan Penkov Reviewed-by: Mike Frysinger --- src/tools/linux/symupload/sym_upload.cc | 41 ++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'src/tools') diff --git a/src/tools/linux/symupload/sym_upload.cc b/src/tools/linux/symupload/sym_upload.cc index 9eeb2d44..cb5321a7 100644 --- a/src/tools/linux/symupload/sym_upload.cc +++ b/src/tools/linux/symupload/sym_upload.cc @@ -41,25 +41,43 @@ #include #include +#include #include #include "common/linux/symbol_upload.h" +using google_breakpad::sym_upload::UploadProtocol; using google_breakpad::sym_upload::Options; //============================================================================= static void Usage(int argc, const char *argv[]) { fprintf(stderr, "Submit symbol information.\n"); - fprintf(stderr, "Usage: %s [options...] \n", argv[0]); + fprintf(stderr, "Usage: %s [options...] \n", + argv[0]); fprintf(stderr, "Options:\n"); - fprintf(stderr, " should be created by using the dump_syms tool.\n"); + fprintf(stderr, " should be created by using the dump_syms" + "tool.\n"); fprintf(stderr, " is the destination for the upload\n"); + fprintf(stderr, "-p:\t One of ['sym-upload-v1'," + " 'sym-upload-v2'], defaults to 'sym-upload-v1'.\n"); + fprintf(stderr, "-k:\t A secret used to authenticate with the" + " API [Only supported when using 'sym-upload-v2' protocol].\n"); + fprintf(stderr, "-f:\t Force symbol upload if already exists [Only" + " supported when using 'sym-upload-v2' protocol].\n"); fprintf(stderr, "-v:\t Version information (e.g., 1.2.3.4)\n"); fprintf(stderr, "-x:\t Use HTTP proxy on given port\n"); fprintf(stderr, "-u:\t Set proxy user and password\n"); fprintf(stderr, "-h:\t Usage\n"); fprintf(stderr, "-?:\t Usage\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Examples:\n"); + fprintf(stderr, " With 'sym-upload-v1':\n"); + fprintf(stderr, " %s path/to/symbol_file http://myuploadserver\n", + argv[0]); + fprintf(stderr, " With 'sym-upload-v2':\n"); + fprintf(stderr, " %s -p sym-upload-v2 -k mysecret123! " + "path/to/symbol_file http://myuploadserver\n", argv[0]); } //============================================================================= @@ -68,7 +86,7 @@ SetupOptions(int argc, const char *argv[], Options *options) { extern int optind; int ch; - while ((ch = getopt(argc, (char * const *)argv, "u:v:x:h?")) != -1) { + while ((ch = getopt(argc, (char * const *)argv, "u:v:x:p:k:hf?")) != -1) { switch (ch) { case 'h': case '?': @@ -84,6 +102,23 @@ SetupOptions(int argc, const char *argv[], Options *options) { case 'x': options->proxy = optarg; break; + case 'p': + if (strcmp(optarg, "sym-upload-v2") == 0) { + options->upload_protocol = UploadProtocol::SYM_UPLOAD_V2; + } else if (strcmp(optarg, "sym-upload-v1") == 0) { + options->upload_protocol = UploadProtocol::SYM_UPLOAD_V1; + } else { + fprintf(stderr, "Invalid protocol '%c'\n", optarg); + Usage(argc, argv); + exit(1); + } + break; + case 'k': + options->api_key = optarg; + break; + case 'f': + options->force = true; + break; default: fprintf(stderr, "Invalid option '%c'\n", ch); -- cgit v1.2.1