From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19683 invoked by alias); 4 Feb 2013 17:31:06 -0000 Received: (qmail 19657 invoked by uid 22791); 4 Feb 2013 17:31:03 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_SPAMHAUS_DROP,RCVD_IN_DNSWL_LOW,TW_EG X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 04 Feb 2013 17:30:52 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Mon, 04 Feb 2013 17:30:50 +0000 Received: from [10.1.72.50] ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Feb 2013 17:30:48 +0000 Message-ID: <510FF048.8070701@arm.com> Date: Mon, 04 Feb 2013 17:31:00 -0000 From: Marcus Shawcroft User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-Version: 1.0 To: "gdb-patches@sourceware.org" CC: Pedro Alves Subject: [PATCH] gdbserver ptrace() argument type cleanups. X-MC-Unique: 113020417305000601 Content-Type: multipart/mixed; boundary="------------040800060605050008030007" 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 X-SW-Source: 2013-02/txt/msg00080.txt.bz2 This is a multi-part message in MIME format. --------------040800060605050008030007 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable Content-length: 910 Hi, This patch is ripped out of the aarch64 gdbserver patch here: http://sourceware.org/ml/gdb-patches/2013-01/msg00535.html These changes are not directly related to the aarch64 port itself.=20 Since ptrace() has a variadic prototype, the anonymous arguments,=20 notably arguments 3 and 4, should be given their correct types. /Marcus Proposed ChangeLog: gdb/gdbserver/ * linux-low.c (handle_extended_wait, linux_create_inferior) (linux_attach_lwp_1, linux_kill_one_lwp, linux_attach_one_lwp) (dequeue_one_deferred_signal, linux_resume_one_thread) (fetch_register, linux_write_memory, linux_enable_event_reporting) (linux_tracefork_grandchild, linux_test_for_tracefork) (linux_read_offsets, linux_xfer_siginfo, linux_xfer_siginfo ): Add PTRACE_ARG3_TYPE and PTRACE_ARG4_TYPE cast to ptrace arguments where the argument is 0.= --------------040800060605050008030007 Content-Type: text/x-patch; name=0001-gdbserver-ptrace.diff Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0001-gdbserver-ptrace.diff" Content-length: 11796 diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 8988509..c52cd2e 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -445,7 +445,8 @@ handle_extended_wait (struct lwp_info *event_child, int= wstat) unsigned long new_pid; int ret, status; =20 - ptrace (PTRACE_GETEVENTMSG, lwpid_of (event_child), 0, &new_pid); + ptrace (PTRACE_GETEVENTMSG, lwpid_of (event_child), (PTRACE_ARG3_TYP= E) 0, + &new_pid); =20 /* If we haven't already seen the new PID stop, wait for it now. */ if (!pull_pid_from_list (&stopped_pids, new_pid, &status)) @@ -641,7 +642,7 @@ linux_create_inferior (char *program, char **allargs) =20 if (pid =3D=3D 0) { - ptrace (PTRACE_TRACEME, 0, 0, 0); + ptrace (PTRACE_TRACEME, 0, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE) = 0); =20 #ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does. */ signal (__SIGRTMIN + 1, SIG_DFL); @@ -703,7 +704,8 @@ linux_attach_lwp_1 (unsigned long lwpid, int initial) ptid_t ptid; struct lwp_info *new_lwp; =20 - if (ptrace (PTRACE_ATTACH, lwpid, 0, 0) !=3D 0) + if (ptrace (PTRACE_ATTACH, lwpid, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYP= E) 0) + !=3D 0) { struct buffer buffer; =20 @@ -769,7 +771,7 @@ linux_attach_lwp_1 (unsigned long lwpid, int initial) /* Finally, resume the stopped process. This will deliver the SIGSTOP (or a higher priority signal, just like normal PTRACE_ATTACH), which we'll catch later on. */ - ptrace (PTRACE_CONT, lwpid, 0, 0); + ptrace (PTRACE_CONT, lwpid, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE)= 0); } =20 /* The next time we wait for this LWP we'll see a SIGSTOP as PTRACE_ATTA= CH @@ -960,7 +962,7 @@ linux_kill_one_lwp (struct lwp_info *lwp) errno ? strerror (errno) : "OK"); =20 errno =3D 0; - ptrace (PTRACE_KILL, pid, 0, 0); + ptrace (PTRACE_KILL, pid, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE) 0); if (debug_threads) fprintf (stderr, "LKL: PTRACE_KILL %s, 0, 0 (%s)\n", @@ -1174,7 +1176,7 @@ linux_detach_one_lwp (struct inferior_list_entry *ent= ry, void *args) /* Finally, let it resume. */ if (the_low_target.prepare_to_resume !=3D NULL) the_low_target.prepare_to_resume (lwp); - if (ptrace (PTRACE_DETACH, lwpid_of (lwp), 0, + if (ptrace (PTRACE_DETACH, lwpid_of (lwp), (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE) (long) sig) < 0) error (_("Can't detach %s: %s"), target_pid_to_str (ptid_of (lwp)), @@ -1605,13 +1607,15 @@ Checking whether LWP %ld needs to move out of the j= ump pad...it does\n", || WSTOPSIG (*wstat) =3D=3D SIGFPE || WSTOPSIG (*wstat) =3D=3D SIGBUS || WSTOPSIG (*wstat) =3D=3D SIGSEGV) - && ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), 0, &info) =3D=3D 0 + && ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), + (PTRACE_ARG3_TYPE) 0, &info) =3D=3D 0 /* Final check just to make sure we don't clobber the siginfo of non-kernel-sent signals. */ && (uintptr_t) info.si_addr =3D=3D lwp->stop_pc) { info.si_addr =3D (void *) (uintptr_t) status.tpoint_addr; - ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), 0, &info); + ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), + (PTRACE_ARG3_TYPE) 0, &info); } =20 regcache =3D get_thread_regcache (get_lwp_thread (lwp), 1); @@ -1706,7 +1710,8 @@ Deferring signal %d for LWP %ld.\n", WSTOPSIG (*wstat= ), lwpid_of (lwp)); p_sig->prev =3D lwp->pending_signals_to_report; p_sig->signal =3D WSTOPSIG (*wstat); memset (&p_sig->info, 0, sizeof (siginfo_t)); - ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), 0, &p_sig->info); + ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), (PTRACE_ARG3_TYPE) 0, + &p_sig->info); =20 lwp->pending_signals_to_report =3D p_sig; } @@ -1727,7 +1732,8 @@ dequeue_one_deferred_signal (struct lwp_info *lwp, in= t *wstat) =20 *wstat =3D W_STOPCODE ((*p_sig)->signal); if ((*p_sig)->info.si_signo !=3D 0) - ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), 0, &(*p_sig)->info); + ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), (PTRACE_ARG3_TYPE) 0, + &(*p_sig)->info); free (*p_sig); *p_sig =3D NULL; =20 @@ -2597,7 +2603,8 @@ Check if we're already there.\n", fprintf (stderr, "Ignored signal %d for LWP %ld.\n", WSTOPSIG (w), lwpid_of (event_child)); =20 - if (ptrace (PTRACE_GETSIGINFO, lwpid_of (event_child), 0, &info) =3D= =3D 0) + if (ptrace (PTRACE_GETSIGINFO, lwpid_of (event_child), + (PTRACE_ARG3_TYPE) 0, &info) =3D=3D 0) info_p =3D &info; else info_p =3D NULL; @@ -3277,7 +3284,8 @@ lwp %ld wants to get out of fast tracepoint jump pad = single-stepping\n", =20 signal =3D (*p_sig)->signal; if ((*p_sig)->info.si_signo !=3D 0) - ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), 0, &(*p_sig)->info); + ptrace (PTRACE_SETSIGINFO, lwpid_of (lwp), (PTRACE_ARG3_TYPE) 0, + &(*p_sig)->info); =20 free (*p_sig); *p_sig =3D NULL; @@ -3292,7 +3300,8 @@ lwp %ld wants to get out of fast tracepoint jump pad = single-stepping\n", lwp->stopped =3D 0; lwp->stopped_by_watchpoint =3D 0; lwp->stepping =3D step; - ptrace (step ? PTRACE_SINGLESTEP : PTRACE_CONT, lwpid_of (lwp), 0, + ptrace (step ? PTRACE_SINGLESTEP : PTRACE_CONT, lwpid_of (lwp), + (PTRACE_ARG3_TYPE) 0, /* Coerce to a uintptr_t first to avoid potential gcc warning of coercing an 8 byte integer to a 4 byte pointer. */ (PTRACE_ARG4_TYPE) (uintptr_t) signal); @@ -3760,7 +3769,8 @@ linux_resume_one_thread (struct inferior_list_entry *= entry, void *arg) PTRACE_SETSIGINFO. */ if (WIFSTOPPED (lwp->last_status) && WSTOPSIG (lwp->last_status) =3D=3D lwp->resume->sig) - ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), 0, &p_sig->info); + ptrace (PTRACE_GETSIGINFO, lwpid_of (lwp), (PTRACE_ARG3_TYPE) 0, + &p_sig->info); =20 lwp->pending_signals =3D p_sig; } @@ -4221,7 +4231,7 @@ fetch_register (struct regcache *regcache, int regno) ptrace (PTRACE_PEEKUSER, pid, /* Coerce to a uintptr_t first to avoid potential gcc warning of coercing an 8 byte integer to a 4 byte pointer. */ - (PTRACE_ARG3_TYPE) (uintptr_t) regaddr, 0); + (PTRACE_ARG3_TYPE) (uintptr_t) regaddr, (PTRACE_ARG4_TYPE) 0); regaddr +=3D sizeof (PTRACE_XFER_TYPE); if (errno !=3D 0) error ("reading register %d: %s", regno, strerror (errno)); @@ -4449,7 +4459,8 @@ linux_read_memory (CORE_ADDR memaddr, unsigned char *= myaddr, int len) /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc wa= rning about coercing an 8 byte integer to a 4 byte pointer. */ buffer[i] =3D ptrace (PTRACE_PEEKTEXT, pid, - (PTRACE_ARG3_TYPE) (uintptr_t) addr, 0); + (PTRACE_ARG3_TYPE) (uintptr_t) addr, + (PTRACE_ARG4_TYPE) 0); if (errno) break; } @@ -4509,7 +4520,8 @@ linux_write_memory (CORE_ADDR memaddr, const unsigned= char *myaddr, int len) /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning about coercing an 8 byte integer to a 4 byte pointer. */ buffer[0] =3D ptrace (PTRACE_PEEKTEXT, pid, - (PTRACE_ARG3_TYPE) (uintptr_t) addr, 0); + (PTRACE_ARG3_TYPE) (uintptr_t) addr, + (PTRACE_ARG4_TYPE) 0); if (errno) return errno; =20 @@ -4522,7 +4534,7 @@ linux_write_memory (CORE_ADDR memaddr, const unsigned= char *myaddr, int len) about coercing an 8 byte integer to a 4 byte pointer. */ (PTRACE_ARG3_TYPE) (uintptr_t) (addr + (count - 1) * sizeof (PTRACE_XFER_TYPE)), - 0); + (PTRACE_ARG4_TYPE) 0); if (errno) return errno; } @@ -4558,7 +4570,8 @@ linux_enable_event_reporting (int pid) if (!linux_supports_tracefork_flag) return; =20 - ptrace (PTRACE_SETOPTIONS, pid, 0, (PTRACE_ARG4_TYPE) PTRACE_O_TRACECLON= E); + ptrace (PTRACE_SETOPTIONS, pid, (PTRACE_ARG3_TYPE) 0, + (PTRACE_ARG4_TYPE) PTRACE_O_TRACECLONE); } =20 /* Helper functions for linux_test_for_tracefork, called via clone (). */ @@ -4574,7 +4587,7 @@ linux_tracefork_grandchild (void *arg) static int linux_tracefork_child (void *arg) { - ptrace (PTRACE_TRACEME, 0, 0, 0); + ptrace (PTRACE_TRACEME, 0, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE) 0); kill (getpid (), SIGSTOP); =20 #if !(defined(__UCLIBC__) && defined(HAS_NOMMU)) @@ -4642,11 +4655,12 @@ linux_test_for_tracefork (void) if (! WIFSTOPPED (status)) error ("linux_test_for_tracefork: waitpid: unexpected status %d.", sta= tus); =20 - ret =3D ptrace (PTRACE_SETOPTIONS, child_pid, 0, + ret =3D ptrace (PTRACE_SETOPTIONS, child_pid, (PTRACE_ARG3_TYPE) 0, (PTRACE_ARG4_TYPE) PTRACE_O_TRACEFORK); if (ret !=3D 0) { - ret =3D ptrace (PTRACE_KILL, child_pid, 0, 0); + ret =3D ptrace (PTRACE_KILL, child_pid, (PTRACE_ARG3_TYPE) 0, + (PTRACE_ARG4_TYPE) 0); if (ret !=3D 0) { warning ("linux_test_for_tracefork: failed to kill child"); @@ -4663,7 +4677,8 @@ linux_test_for_tracefork (void) return; } =20 - ret =3D ptrace (PTRACE_CONT, child_pid, 0, 0); + ret =3D ptrace (PTRACE_CONT, child_pid, (PTRACE_ARG3_TYPE) 0, + (PTRACE_ARG4_TYPE) 0); if (ret !=3D 0) warning ("linux_test_for_tracefork: failed to resume child"); =20 @@ -4673,14 +4688,16 @@ linux_test_for_tracefork (void) && status >> 16 =3D=3D PTRACE_EVENT_FORK) { second_pid =3D 0; - ret =3D ptrace (PTRACE_GETEVENTMSG, child_pid, 0, &second_pid); + ret =3D ptrace (PTRACE_GETEVENTMSG, child_pid, (PTRACE_ARG3_TYPE) 0, + &second_pid); if (ret =3D=3D 0 && second_pid !=3D 0) { int second_status; =20 linux_supports_tracefork_flag =3D 1; my_waitpid (second_pid, &second_status, 0); - ret =3D ptrace (PTRACE_KILL, second_pid, 0, 0); + ret =3D ptrace (PTRACE_KILL, second_pid, (PTRACE_ARG3_TYPE) 0, + (PTRACE_ARG4_TYPE) 0); if (ret !=3D 0) warning ("linux_test_for_tracefork: failed to kill second child"); my_waitpid (second_pid, &status, 0); @@ -4692,7 +4709,8 @@ linux_test_for_tracefork (void) =20 do { - ret =3D ptrace (PTRACE_KILL, child_pid, 0, 0); + ret =3D ptrace (PTRACE_KILL, child_pid, (PTRACE_ARG3_TYPE) 0, + (PTRACE_ARG4_TYPE) 0); if (ret !=3D 0) warning ("linux_test_for_tracefork: failed to kill child"); my_waitpid (child_pid, &status, 0); @@ -4839,9 +4857,12 @@ linux_read_offsets (CORE_ADDR *text_p, CORE_ADDR *da= ta_p) =20 errno =3D 0; =20 - text =3D ptrace (PTRACE_PEEKUSER, pid, (long)PT_TEXT_ADDR, 0); - text_end =3D ptrace (PTRACE_PEEKUSER, pid, (long)PT_TEXT_END_ADDR, 0); - data =3D ptrace (PTRACE_PEEKUSER, pid, (long)PT_DATA_ADDR, 0); + text =3D ptrace (PTRACE_PEEKUSER, pid, (PTRACE_ARG3_TYPE) PT_TEXT_ADDR, + (PTRACE_ARG4_TYPE) 0); + text_end =3D ptrace (PTRACE_PEEKUSER, pid, (PTRACE_ARG3_TYPE) PT_TEXT_EN= D_ADDR, + (PTRACE_ARG4_TYPE) 0); + data =3D ptrace (PTRACE_PEEKUSER, pid, (PTRACE_ARG3_TYPE) PT_DATA_ADDR, + (PTRACE_ARG4_TYPE) 0); =20 if (errno =3D=3D 0) { @@ -4915,7 +4936,7 @@ linux_xfer_siginfo (const char *annex, unsigned char = *readbuf, if (offset >=3D sizeof (siginfo)) return -1; =20 - if (ptrace (PTRACE_GETSIGINFO, pid, 0, &siginfo) !=3D 0) + if (ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_ARG3_TYPE) 0, &siginfo) !=3D= 0) return -1; =20 /* When GDBSERVER is built as a 64-bit application, ptrace writes into @@ -4936,7 +4957,7 @@ linux_xfer_siginfo (const char *annex, unsigned char = *readbuf, /* Convert back to ptrace layout before flushing it out. */ siginfo_fixup (&siginfo, inf_siginfo, 1); =20 - if (ptrace (PTRACE_SETSIGINFO, pid, 0, &siginfo) !=3D 0) + if (ptrace (PTRACE_SETSIGINFO, pid, (PTRACE_ARG3_TYPE) 0, &siginfo) = !=3D 0) return -1; } =20= --------------040800060605050008030007--