From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 47491 invoked by alias); 15 Oct 2015 17:41:19 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 47482 invoked by uid 89); 15 Oct 2015 17:41:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 15 Oct 2015 17:41:17 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 9FB792FE839; Thu, 15 Oct 2015 17:41:16 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t9FHfFmC032412; Thu, 15 Oct 2015 13:41:15 -0400 Message-ID: <561FE53A.1050406@redhat.com> Date: Thu, 15 Oct 2015 17:41:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Aleksandar Ristovski , gdb-patches@sourceware.org Subject: Re: [PATCH 2/4] [nto] Fixes for nto procfs. References: <1444752074-878-1-git-send-email-aristovski@qnx.com> <1444752074-878-3-git-send-email-aristovski@qnx.com> In-Reply-To: <1444752074-878-3-git-send-email-aristovski@qnx.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2015-10/txt/msg00268.txt.bz2 It would have been nicer to see this split into a fix/theme per patch, and add something to the commit log about each fix. E.g., the aux bits could easily be a separate patch. Anyway, this is pretty isolated to NTO bits. LGTM with the nits below addressed. On 10/13/2015 05:01 PM, Aleksandar Ristovski wrote: > } > > do_cleanups (inner_cleanup); > @@ -599,9 +612,40 @@ procfs_files_info (struct target_ops *ignore) > > printf_unfiltered ("\tUsing the running image of %s %s via %s.\n", > inf->attach_flag ? "attached" : "child", > - target_pid_to_str (inferior_ptid), nto_procfs_path); > + target_pid_to_str (inferior_ptid), > + nodestr ? nodestr : "local node"); Write 'nodestr != NULL'. > +} > + > +/* Read executable file name for the given PID. */ > + > +static char * > +procfs_pid_to_exec_file (struct target_ops *ops, const int pid) > +{ > + int proc_fd; > + static char proc_path[PATH_MAX]; > + ssize_t rd; > + > + /* Read exe file name. */ > + snprintf (proc_path, sizeof (proc_path), "%s/proc/%d/exefile", > + nodestr ? nodestr : "", pid); Ditto. > + proc_fd = open (proc_path, O_RDONLY); > + if (proc_fd == -1) > + return NULL; > + > + rd = read (proc_fd, proc_path, sizeof (proc_path) - 1); > + close (proc_fd); > + if (rd <= 0) > + { > + proc_path[0] = '\0'; > + return NULL; > + } > + else > + proc_path[rd] = '\0'; > + > + return proc_path; Either write: else { proc_path[rd] = '\0'; return proc_path; } Or drop the "else". > } > > + > /* Attach to process PID, then initialize for debugging it. */ > static void > procfs_attach (struct target_ops *ops, const char *args, int from_tty) > @@ -653,8 +697,8 @@ do_attach (ptid_t ptid) > struct sigevent event; > char path[PATH_MAX]; > > - snprintf (path, PATH_MAX - 1, "%s/%d/as", nto_procfs_path, > - ptid_get_pid (ptid)); > + snprintf (path, PATH_MAX - 1, "%s%s/%d/as", nodestr ? nodestr : "", > + "/proc", ptid_get_pid (ptid)); nodestr != NULL > ctl_fd = open (path, O_RDWR); > if (ctl_fd == -1) > error (_("Couldn't open proc file %s, error %d (%s)"), path, errno, > @@ -872,6 +916,40 @@ procfs_xfer_partial (struct target_ops *ops, enum target_object object, > { > case TARGET_OBJECT_MEMORY: > return procfs_xfer_memory (readbuf, writebuf, offset, len, xfered_len); > + case TARGET_OBJECT_AUXV: > + if (readbuf != NULL) > + { > + int err; > + CORE_ADDR initial_stack; > + debug_process_t procinfo; > + /* For 32-bit architecture, size of auxv_t is 8 bytes. */ > + const unsigned int sizeof_auxv_t = sizeof (auxv_t); > + const unsigned int sizeof_tempbuf = 20 * sizeof_auxv_t; > + int tempread; > + gdb_byte *const tempbuf = alloca (sizeof_tempbuf); > + > + if (!tempbuf) > + return TARGET_XFER_E_IO; if (tempbuf == NULL) Can NTO's alloca really return NULL? > + > + err = devctl (ctl_fd, DCMD_PROC_INFO, &procinfo, > + sizeof procinfo, 0); > + if (err != EOK) > + return TARGET_XFER_E_IO; Thanks, Pedro Alves