From patchwork Wed Nov 25 21:48:56 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 9824 Received: (qmail 34516 invoked by alias); 25 Nov 2015 21:49:17 -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 34397 invoked by uid 89); 25 Nov 2015 21:49:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg20.ericsson.net Received: from usevmg20.ericsson.net (HELO usevmg20.ericsson.net) (198.24.6.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 25 Nov 2015 21:49:15 +0000 Received: from EUSAAHC007.ericsson.se (Unknown_Domain [147.117.188.93]) by usevmg20.ericsson.net (Symantec Mail Security) with SMTP id 20.B3.03778.AFAD5565; Wed, 25 Nov 2015 16:59:55 +0100 (CET) Received: from elxcz23q12-y4.dyn.mo.ca.am.ericsson.se (147.117.188.8) by smtps-am.internal.ericsson.com (147.117.188.93) with Microsoft SMTP Server (TLS) id 14.3.248.2; Wed, 25 Nov 2015 16:49:11 -0500 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH v2 1/3] Constify thread name return path Date: Wed, 25 Nov 2015 16:48:56 -0500 Message-ID: <1448488138-2360-2-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1448488138-2360-1-git-send-email-simon.marchi@ericsson.com> References: <1448488138-2360-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-IsSubscribed: yes Since this code path returns a string owned by the target (we don't know how it's allocated, could be a static read-only string), it's safer if we return a constant string. If, for some reasons, the caller wishes to modify the string, it should make itself a copy. gdb/ChangeLog: * linux-nat.c (linux_nat_thread_name): Constify return value. * target.h (struct target_ops) : Likewise. (target_thread_name): Likewise. * target.c (target_thread_name): Likewise. * target-delegates.c (debug_thread_name): Regenerate. * python/py-infthread.c (thpy_get_name): Constify local variables. * thread.c (print_thread_info): Likewise. (thread_find_command): Likewise. --- gdb/linux-nat.c | 2 +- gdb/python/py-infthread.c | 2 +- gdb/target-delegates.c | 10 +++++----- gdb/target.c | 2 +- gdb/target.h | 4 ++-- gdb/thread.c | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 841ec39..2421687 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -4097,7 +4097,7 @@ linux_nat_pid_to_str (struct target_ops *ops, ptid_t ptid) return normal_pid_to_str (ptid); } -static char * +static const char * linux_nat_thread_name (struct target_ops *self, struct thread_info *thr) { int pid = ptid_get_pid (thr->ptid); diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c index 4d0a020..e5db354 100644 --- a/gdb/python/py-infthread.c +++ b/gdb/python/py-infthread.c @@ -62,7 +62,7 @@ static PyObject * thpy_get_name (PyObject *self, void *ignore) { thread_object *thread_obj = (thread_object *) self; - char *name; + const char *name; THPY_REQUIRE_VALID (thread_obj); diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index 253c9d7..b41b316 100644 --- a/gdb/target-delegates.c +++ b/gdb/target-delegates.c @@ -1530,23 +1530,23 @@ debug_extra_thread_info (struct target_ops *self, struct thread_info *arg1) return result; } -static char * +static const char * delegate_thread_name (struct target_ops *self, struct thread_info *arg1) { self = self->beneath; return self->to_thread_name (self, arg1); } -static char * +static const char * tdefault_thread_name (struct target_ops *self, struct thread_info *arg1) { return NULL; } -static char * +static const char * debug_thread_name (struct target_ops *self, struct thread_info *arg1) { - char * result; + const char * result; fprintf_unfiltered (gdb_stdlog, "-> %s->to_thread_name (...)\n", debug_target.to_shortname); result = debug_target.to_thread_name (&debug_target, arg1); fprintf_unfiltered (gdb_stdlog, "<- %s->to_thread_name (", debug_target.to_shortname); @@ -1554,7 +1554,7 @@ debug_thread_name (struct target_ops *self, struct thread_info *arg1) fputs_unfiltered (", ", gdb_stdlog); target_debug_print_struct_thread_info_p (arg1); fputs_unfiltered (") = ", gdb_stdlog); - target_debug_print_char_p (result); + target_debug_print_const_char_p (result); fputs_unfiltered ("\n", gdb_stdlog); return result; } diff --git a/gdb/target.c b/gdb/target.c index 2365cd3..b43c12a 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -2265,7 +2265,7 @@ target_pid_to_str (ptid_t ptid) return (*current_target.to_pid_to_str) (¤t_target, ptid); } -char * +const char * target_thread_name (struct thread_info *info) { return current_target.to_thread_name (¤t_target, info); diff --git a/gdb/target.h b/gdb/target.h index e80bee5..ac28a41 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -639,7 +639,7 @@ struct target_ops TARGET_DEFAULT_FUNC (default_pid_to_str); char *(*to_extra_thread_info) (struct target_ops *, struct thread_info *) TARGET_DEFAULT_RETURN (NULL); - char *(*to_thread_name) (struct target_ops *, struct thread_info *) + const char *(*to_thread_name) (struct target_ops *, struct thread_info *) TARGET_DEFAULT_RETURN (NULL); void (*to_stop) (struct target_ops *, ptid_t) TARGET_DEFAULT_IGNORE (); @@ -1823,7 +1823,7 @@ extern char *normal_pid_to_str (ptid_t ptid); /* Return the thread's name. A NULL result means that the target could not determine this thread's name. */ -extern char *target_thread_name (struct thread_info *); +extern const char *target_thread_name (struct thread_info *); /* Attempts to find the pathname of the executable file that was run to create a specified process. diff --git a/gdb/thread.c b/gdb/thread.c index b47d990..f8103bd 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -1122,7 +1122,7 @@ print_thread_info (struct ui_out *uiout, char *requested_threads, int pid) struct thread_info *tp; ptid_t current_ptid; struct cleanup *old_chain; - char *extra_info, *name, *target_id; + const char *extra_info, *name, *target_id; int current_thread = -1; update_thread_list (); @@ -1781,7 +1781,7 @@ static void thread_find_command (char *arg, int from_tty) { struct thread_info *tp; - char *tmp; + const char *tmp; unsigned long match = 0; if (arg == NULL || *arg == '\0')