From patchwork Mon Oct 30 02:29:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 23956 Received: (qmail 8180 invoked by alias); 30 Oct 2017 02:30:31 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 8055 invoked by uid 89); 30 Oct 2017 02:30:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=H*M:25109, H*MI:25109, (unknown) X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 30 Oct 2017 02:30:15 +0000 Received: from ESESSHC023.ericsson.se (Unknown_Domain [153.88.183.87]) by sessmg23.ericsson.net (Symantec Mail Security) with SMTP id 3F.C0.09869.CAE86F95; Mon, 30 Oct 2017 03:30:04 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.87) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 30 Oct 2017 03:30:03 +0100 Received: from elxacz23q12.lan (192.222.251.162) by AMSPR07MB311.eurprd07.prod.outlook.com (2a01:111:e400:802f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.4; Mon, 30 Oct 2017 02:30:01 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH] Make encode_actions_rsp use std::vector Date: Sun, 29 Oct 2017 22:29:48 -0400 Message-ID: <1509330588-25109-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: DM5PR0401CA0068.namprd04.prod.outlook.com (2603:10b6:4:73::45) To AMSPR07MB311.eurprd07.prod.outlook.com (2a01:111:e400:802f::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cbed2417-66b6-4599-5d8c-08d51f3e1fb2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(2017052603238); SRVR:AMSPR07MB311; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB311; 3:U/YwDdvGxKn5V9wc5P1YL6x/VcKZxz6aJsEJ5Gi5O0YDi2h2sZM7wAhPZ5UF55Qc7mdyt+KqduhPZZ5dPDftKMnELrNQ73471zZ/uikmMggGBIDz5qzrufDnHFozO+2N97MCwktolFkshlkaTQ5bWdmmNpQ/5dVPi+KKNWanse/EyJFBdame1QQtSQpvFH5kwt8IAVvTYthAXID1TGnSmjDgFUWxsx+Wm7vgh/ilL8RF45lGCJbH9bUXIbBkYFje; 25:gDid361IbWKidWHS7wGXj6kepziqJDNdKH3XWfK0QEnYYqD5YBS6j96LDSrjU6Fe/X6Pds+avwRDOKYweRIm2o2W12MtqJPeTW2X64K+U+Y9W2RCmWLo+elQTa1GjA86VHk+RnrkkY2krfnk9zeyh/1MWTfBTpa1R6YeYsiPqtRfGB5bhGXVysMRmalGmBXvSB9s4kzdloS2WsOyeAY6Gy3ZbF4wRD5IRHCRKnjfD3zX3FMjSpjex25bLgqGeX47BirHLKXt0KIf2Ryx8GAET3W5MMvxY00ie3pXCL9Szjux2y7qnJ6CCWAovmoY65vxJQMUCp/Ic6gSHDA6QNBDVkiIxupsCEWn+YyaBIs5KVg=; 31:03zlFS26msLzRmMqfNhNVrvO8B+xk2ddCRX5rvFKfldxmaulpEjI92SKco7lhdAd+veEJiMX/DlKl4E/PMeDFWHu4gxj+8/U4VUT7ePyvLKtUyfGamzH9u6rKlItkFznx6CGLXz3/PIN0Mubdu/gIm6jwCfkByuY4SrCpGrfEwGNrY6+1B4vh5htTI8dzcEjM+u2+Q6/2xpiEFN2zrkje4R201nCfkRnHUBgUU0MKa8= X-MS-TrafficTypeDiagnostic: AMSPR07MB311: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB311; 20:Gzae0NEWTj2dJ+feTUqxorc5fFCub2ooiMWO7xOv6xy22ezQpbCevO8VxzRTloTszdfkf+k8uLYZpVaBR72NGn1jvA/zyyD9B+FcvY+hQ0DO8ktfupYKI1uZLeBcJT8/GoxZNhSxeEpSIv34Dw5icTpS6t+/vJws1tWYpbwzU8pGvFhV6Vcvl5aF4w2FB1rp5QaLHQ1z+5/hZ4GRUOJYgrpgeHvDrhcamexzCPj1ayDiVX8zoiRSpxyP1LdS9shQXgzS/r7OBuFdEfESnlHJMnqwofSWEOZ8ZO1lypmIkr6mO6mP2q45nXqDAO521x0yDroQrR6lP7VyqdfqBLBBH3nz944zwlLsEmKvRQon35ps/FYkPYiwgkM7IHyxtu2Y/zTDZFrU2AsBYoL3/UxtQ3DQxx74ydpAUPfG7BCH/qt4f8XmdVVev/BGeWEO7LvrFA43F3t7dtZg3HOKsoM1cFUKA32DgJd6JgP8Rwmxmvwga7njwjyVJTU68yCwujaN; 4:xBsJSBpIWcAL4WEHxFv05zmnxpTdodEHsIBH2XrZG8tNzCsw5DgvVJJ1DCGZuCpxpmIg5zpLjxPCYkUotT128MeQw+4uCJbnQ4nelNEamijQh+dNrOGQsZTXG6Lc6mXvNiHa9sixXV4Avkp9l+CufQ8eL37vAh48fF947YcDQcGrPBW2yfMogvdJuTAxpGLJrFLd8gIC3FZ3vueBklC7vmIxyVgWIyuTX2WGmOOAAUMNffCZvYcVFwQ8HN8LXr0c3fUxRjwHYGdRQ5B9L7KUbw== X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3231020)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AMSPR07MB311; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AMSPR07MB311; X-Forefront-PRVS: 0476D4AB88 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(39860400002)(54534003)(199003)(189002)(50986999)(5003940100001)(86362001)(6916009)(189998001)(50226002)(68736007)(478600001)(6666003)(25786009)(2361001)(2351001)(106356001)(316002)(69596002)(2906002)(33646002)(4326008)(36756003)(6486002)(101416001)(105586002)(21086003)(6506006)(16586007)(6512007)(5660300001)(53936002)(3846002)(6116002)(48376002)(66066001)(50466002)(47776003)(16526018)(8936002)(8676002)(81156014)(81166006)(97736004)(107886003)(305945005)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB311; H:elxacz23q12.lan; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AMSPR07MB311; 23:NXxKw9wpPNetm1OXRjpNORBrUF92eiopJl3+NaY7+x?= =?us-ascii?Q?nZUuv8VJhnuJJp6MzUcnipj83GfWJZph5pQt6lBIbpGX0OOozdcm023m0ryO?= =?us-ascii?Q?qmdGNYQ6H6Y/fA2S5kWQbxp/GeJNWm1xSn86Xw4GZiF18YdMh2AbiBl0BgKY?= =?us-ascii?Q?i0M56kIt25awUVzBM4OxmZXHNuvELIaq80lOx0fJyd1fz4B5RaKyBE8KvJtr?= =?us-ascii?Q?Y+4EIGJie9QTqwSLKqIg+bseWzqYn8w4CcMWCoM5oQntYD22snGAcDWTc7bo?= =?us-ascii?Q?040VqJi0sP8WHHvAScqx6jSR6UMEiX2NpTjo/5+D0BL1VDYOnA1F9idQ2vuh?= =?us-ascii?Q?pFCT6xjqs/oOEukQgyjTR0ZTwO3RXX5HVbDIYlZsxI0FE/sCmlW9+ayRUJBN?= =?us-ascii?Q?Dd5OLsXAk0MbotLWff+uPl8WTmJuTVh37lRz/JNq79AAL8fyoLGC5xjbYWlP?= =?us-ascii?Q?H50kr9SFowTtSHNrpvupSHaEO9toIvc2k3wyPgW8Xx9leSqX1WJGcYrbprl5?= =?us-ascii?Q?c5lHbkU6X6Wn84HnFw1ByKx4TO6AezMm+IHBOQdnwXrX+TzxZ6nNZWNIMJIt?= =?us-ascii?Q?HaSAkLSjgcWu5nGNl1iBGyr6fx6Lfj5St4ugrPA3M8vl3taRtSI7Np2IBfQC?= =?us-ascii?Q?2RP+zEx/yIwtq6vduBS2ksjYBP4lPYC5hBJk9/a9EeaTXY8wdGJvpwSSr86Z?= =?us-ascii?Q?JGyAV0gYbRuGMbBIn5a7Xu0Luo1TTI9TpSgXP2D6RUOJAVRkfT9IDlB5uszK?= =?us-ascii?Q?fkKvwq2O9Z0gNtanmI34IB+kVOSSnv1mzJHOV3ruHN2NAZGFfcsAq0HJGD9o?= =?us-ascii?Q?ByHLW3lY48jHpQWcysEoHogt3kWz0FTNM+hK1PoTDGMpLJqGD7YBYG1t1oaR?= =?us-ascii?Q?U7WFHKakSGFbNadl/1OPWeb5quGQIrXLHzmj57VZrYqrIgHsMBjPrE9HBHBG?= =?us-ascii?Q?uGpRrzDQ5O0jFKpkTJ3dJoQsM70mceEOCUJwH9RwnoiWNPR8XIoc+TA+9KnD?= =?us-ascii?Q?HotaZA0RtRkyc6VO7U3WjfUPQBEsuqL5bGXf+JE0ZemBNeACuJRerdcaa/MD?= =?us-ascii?Q?WvcZ9vSS3csWHobNuyiGtr8p2GgtkkZanen5GpO3Y63YM7d91bpFC5fO6gwe?= =?us-ascii?Q?nHeafHQSvlaoMriiaUOe7Z8Lii4do7w9q77iaJjQhqM0lXEkz0Ag=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB311; 6:2aULEj0//0eIBm7aB6PYmgDjTg8CBZitW9DJ1lIl46bw0aNZIQ3qMUUzVK3aMWr9lttHvvJvsB0sFmomCPFGJd56ZwH9x3P6kxdzVfvP46PgHqS5d5/49x6cKxsLPOfwr2FjijydJEqWXhx/sOfzkMOomrpzPv6fizpqWlIwz8uudSHO8s2ZSGFqXljZ7lX7mMyg+womZmxUahd8SHbNv47JFNxhWGfbhb59TNO2eInBMdwIeZ16n3K1fwU/1Nyw9uHdZCVV6d5RhMii3nOG0tS2Er//alepWZrD8YSR5ymd3wo+fTfVAp7X8CymAsoBXnI6UExaTn8QNyaIYdJ4vGCvwBCA36VXadw6ka8dYLo=; 5:n6/Raw1Z19Xk0PzuNKd/uEtfseqoeC6i3Nev+n2ATzX54dAt1AahXMIYH802ohzF9OydnHAZxkrMUlorpvbz1TOdiGacLmHQqVMle/6Mszb3pQyPiVufdl7I/joB0BNj7/QLfqqPpjfH92LUt+9upwtQx8dHbSWMlp84Kl+uqII=; 24:zOsjON6Bjai8/FeZW+ahoJFP4fKw27c0OdPZSWkIZdGu4gZ8PP8h3vPuPfwxfPBNi8gtDhc/PerAx8YyeBbxUxJHX0rbhTgqkLi37iamLTk=; 7:dicqSiV1rKgVNoGh+35bE6XFF6ay2+Om5tqvK4nipbNllcik99GqAxoU0aA6AYonUBlkZpcqdXpav3TxaVE+uYPD3fbl3m2+JTACeCL5WrH25EuXVsFsFbkxEMzmu2LVw41YW0u7zasnRxuNdUCU1S+mFtVjerjgPq5Q0D3ggztxR7VTQI/xrOyo01nkrFLdoUVtUR3bZHAWyZ3KzTFSk2vKBdvifWw4iLOgyXtu+WnxqUoTxUPMNAr/kZsJ4Q/f SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2017 02:30:01.6603 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cbed2417-66b6-4599-5d8c-08d51f3e1fb2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB311 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes Currently, encode_actions_rsp returns two malloc'ed arrays of malloc'ed strings (char *) by pointer. Change this to use std::vector. This eliminates some cleanups in remote.c. Regtested on the buildbot. gdb/ChangeLog: * tracepoint.h (class collection_list) : Return std::vector. (encode_actions_rsp): Change parameters to std::vector *. * tracepoint.c (collection_list::stringify): Return std::vector and adjust accordingly. (encode_actions_rsp): Changee parameters to std::vector and adjust accordingly. * remote.c (free_actions_list), free_actions_list_cleanup_wrapper): Remove. (remote_download_tracepoint): Adjust to std::vector. --- gdb/remote.c | 100 ++++++++++++++++++++----------------------------------- gdb/tracepoint.c | 40 ++++++---------------- gdb/tracepoint.h | 5 +-- 3 files changed, 51 insertions(+), 94 deletions(-) diff --git a/gdb/remote.c b/gdb/remote.c index ed2a9ec..d29f163 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -12297,28 +12297,6 @@ remote_trace_init (struct target_ops *self) error (_("Target does not support this command.")); } -static void free_actions_list (char **actions_list); -static void free_actions_list_cleanup_wrapper (void *); -static void -free_actions_list_cleanup_wrapper (void *al) -{ - free_actions_list ((char **) al); -} - -static void -free_actions_list (char **actions_list) -{ - int ndx; - - if (actions_list == 0) - return; - - for (ndx = 0; actions_list[ndx]; ndx++) - xfree (actions_list[ndx]); - - xfree (actions_list); -} - /* Recursive routine to walk through command list including loops, and download packets for each command. */ @@ -12367,20 +12345,14 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) CORE_ADDR tpaddr; char addrbuf[40]; char buf[BUF_SIZE]; - char **tdp_actions; - char **stepping_actions; - int ndx; - struct cleanup *old_chain = NULL; + std::vector tdp_actions; + std::vector stepping_actions; char *pkt; struct breakpoint *b = loc->owner; struct tracepoint *t = (struct tracepoint *) b; struct remote_state *rs = get_remote_state (); encode_actions_rsp (loc, &tdp_actions, &stepping_actions); - old_chain = make_cleanup (free_actions_list_cleanup_wrapper, - tdp_actions); - (void) make_cleanup (free_actions_list_cleanup_wrapper, - stepping_actions); tpaddr = loc->address; sprintf_vma (addrbuf, tpaddr); @@ -12446,7 +12418,7 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":X%x,", aexpr->len); pkt = buf + strlen (buf); - for (ndx = 0; ndx < aexpr->len; ++ndx) + for (int ndx = 0; ndx < aexpr->len; ++ndx) pkt = pack_hex_byte (pkt, aexpr->buf[ndx]); *pkt = '\0'; } @@ -12463,39 +12435,43 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) error (_("Target does not support tracepoints.")); /* do_single_steps (t); */ - if (tdp_actions) + for (auto action_it = tdp_actions.begin (); + action_it != tdp_actions.end (); action_it++) { - for (ndx = 0; tdp_actions[ndx]; ndx++) - { - QUIT; /* Allow user to bail out with ^C. */ - xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%c", - b->number, addrbuf, /* address */ - tdp_actions[ndx], - ((tdp_actions[ndx + 1] || stepping_actions) - ? '-' : 0)); - putpkt (buf); - remote_get_noisy_reply (); - if (strcmp (rs->buf, "OK")) - error (_("Error on target while setting tracepoints.")); - } - } - if (stepping_actions) - { - for (ndx = 0; stepping_actions[ndx]; ndx++) - { - QUIT; /* Allow user to bail out with ^C. */ - xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%s%s", - b->number, addrbuf, /* address */ - ((ndx == 0) ? "S" : ""), - stepping_actions[ndx], - (stepping_actions[ndx + 1] ? "-" : "")); - putpkt (buf); - remote_get_noisy_reply (); - if (strcmp (rs->buf, "OK")) - error (_("Error on target while setting tracepoints.")); - } + QUIT; /* Allow user to bail out with ^C. */ + + bool has_more = (action_it != tdp_actions.end () + || !stepping_actions.empty ()); + + xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%c", + b->number, addrbuf, /* address */ + action_it->c_str (), + has_more ? '-' : 0); + putpkt (buf); + remote_get_noisy_reply (); + if (strcmp (rs->buf, "OK")) + error (_("Error on target while setting tracepoints.")); } + for (auto action_it = stepping_actions.begin (); + action_it != stepping_actions.end (); action_it++) + { + QUIT; /* Allow user to bail out with ^C. */ + + bool is_first = action_it == stepping_actions.begin (); + bool has_more = action_it != stepping_actions.end (); + + xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%s%s", + b->number, addrbuf, /* address */ + is_first ? "S" : "", + action_it->c_str (), + has_more ? "-" : ""); + putpkt (buf); + remote_get_noisy_reply (); + if (strcmp (rs->buf, "OK")) + error (_("Error on target while setting tracepoints.")); + } + if (packet_support (PACKET_TracepointSource) == PACKET_ENABLE) { if (b->location != NULL) @@ -12523,8 +12499,6 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) remote_download_command_source (b->number, loc->address, breakpoint_commands (b)); } - - do_cleanups (old_chain); } static int diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index fdc3b38..302c4c8 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -1118,18 +1118,14 @@ collection_list::collection_list () /* Reduce a collection list to string form (for gdb protocol). */ -char ** +std::vector collection_list::stringify () { char temp_buf[2048]; int count; - int ndx = 0; - char *(*str_list)[]; char *end; long i; - - count = 1 + 1 + m_memranges.size () + m_aexprs.size () + 1; - str_list = (char *(*)[]) xmalloc (count * sizeof (char *)); + std::vector str_list2; if (m_strace_data) { @@ -1137,8 +1133,7 @@ collection_list::stringify () printf_filtered ("\nCollecting static trace data\n"); end = temp_buf; *end++ = 'L'; - (*str_list)[ndx] = savestring (temp_buf, end - temp_buf); - ndx++; + str_list2.emplace_back (temp_buf, end - temp_buf); } for (i = sizeof (m_regs_mask) - 1; i > 0; i--) @@ -1158,8 +1153,7 @@ collection_list::stringify () sprintf (end, "%02X", m_regs_mask[i]); end += 2; } - (*str_list)[ndx] = xstrdup (temp_buf); - ndx++; + str_list2.emplace_back (temp_buf); } if (info_verbose) printf_filtered ("\n"); @@ -1179,8 +1173,7 @@ collection_list::stringify () } if (count + 27 > MAX_AGENT_EXPR_LEN) { - (*str_list)[ndx] = savestring (temp_buf, count); - ndx++; + str_list2.emplace_back (temp_buf, count); count = 0; end = temp_buf; } @@ -1210,8 +1203,7 @@ collection_list::stringify () QUIT; /* Allow user to bail out with ^C. */ if ((count + 10 + 2 * m_aexprs[i]->len) > MAX_AGENT_EXPR_LEN) { - (*str_list)[ndx] = savestring (temp_buf, count); - ndx++; + str_list2.emplace_back (temp_buf, count); count = 0; end = temp_buf; } @@ -1225,20 +1217,12 @@ collection_list::stringify () if (count != 0) { - (*str_list)[ndx] = savestring (temp_buf, count); - ndx++; + str_list2.emplace_back (temp_buf, count); count = 0; end = temp_buf; } - (*str_list)[ndx] = NULL; - if (ndx == 0) - { - xfree (str_list); - return NULL; - } - else - return *str_list; + return str_list2; } /* Add the printed expression EXP to *LIST. */ @@ -1513,14 +1497,12 @@ encode_actions (struct bp_location *tloc, /* Render all actions into gdb protocol. */ void -encode_actions_rsp (struct bp_location *tloc, char ***tdp_actions, - char ***stepping_actions) +encode_actions_rsp (struct bp_location *tloc, + std::vector *tdp_actions, + std::vector *stepping_actions) { struct collection_list tracepoint_list, stepping_list; - *tdp_actions = NULL; - *stepping_actions = NULL; - encode_actions (tloc, &tracepoint_list, &stepping_list); *tdp_actions = tracepoint_list.stringify (); diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h index 8364d38..9416e9e 100644 --- a/gdb/tracepoint.h +++ b/gdb/tracepoint.h @@ -269,7 +269,7 @@ public: void finish (); - char **stringify (); + std::vector stringify (); const std::vector &wholly_collected () { return m_wholly_collected; } @@ -328,7 +328,8 @@ extern void encode_actions (struct bp_location *tloc, struct collection_list *stepping_list); extern void encode_actions_rsp (struct bp_location *tloc, - char ***tdp_actions, char ***stepping_actions); + std::vector *tdp_actions, + std::vector *stepping_actions); extern void validate_actionline (const char *, struct breakpoint *); extern void validate_trace_state_variable_name (const char *name);