Article View: gnu.gdb.bug
Article #1147Gdbserver support of orig_r0 on ARM
From: Zhu Tom-a2289c
Date: Thu, 15 Mar 2007 17:26
Date: Thu, 15 Mar 2007 17:26
104 lines
5598 bytes
5598 bytes
This is a multi-part message in MIME format.
------_=_NextPart_001_01C76727.120EF0B6
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi,
=20
I am meeting a problem that orig_r0 is overwritten by gdbserver(gdb 6.3)
on ARM.
It is because store_register/store_regs (in arm-linux-nat.c) set
register with ptrace(PTRACE_SETREGS ...)
=20
But as orig_r0 is not mapped by gdbserver, it will be overwritten.
This lost of orig_r0 will prevent the interrupted system call from being
restarted.
=20
I am new to gdbserver, so not sure whether this patch is correct,
=20
arm-linux-nat.c:
=20
-#define arm_num_regs 26
+#define arm_num_regs 27
=20
static int arm_regmap[] =3D {
0, 4, 8, 12, 16, 20, 24, 28,
32, 36, 40, 44, 48, 52, 56, 60,
-1, -1, -1, -1, -1, -1, -1, -1, -1,
- 64
+ 64, 68
};
=20
Thanks,
Tom
------_=_NextPart_001_01C76727.120EF0B6
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<META content=3D"MSHTML 6.00.2900.3020" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007>Hi,</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN class=3D921291017-15032007>I am =
meeting a=20
problem that orig_r0 is overwritten by gdbserver(gdb 6.3) on=20
ARM.</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN class=3D921291017-15032007>It is =
because=20
store_register/store_regs (in arm-linux-nat.c) set register =
with=20
ptrace(PTRACE_SETREGS ...)</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN class=3D921291017-15032007>But =
as orig_r0 is=20
not mapped by gdbserver, it will be =
overwritten.</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN class=3D921291017-15032007>This =
lost of=20
orig_r0 will prevent the interrupted system call from being=20
restarted.</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN class=3D921291017-15032007>I am =
new to=20
gdbserver, so not sure whether this patch is =
correct,</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN =
class=3D921291017-15032007></SPAN></FONT><FONT=20
face=3DTahoma size=3D2><SPAN =
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007>arm-linux-nat.c:</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN =
class=3D921291017-15032007>-#define=20
arm_num_regs 26<BR>+#define arm_num_regs 27<BR> <BR> static =
int=20
arm_regmap[] =3D {<BR> 0, 4, 8, 12, 16, 20, 24, =
28,<BR> =20
32, 36, 40, 44, 48, 52, 56, 60,<BR> -1, -1, -1, -1, -1, -1, -1, =
-1,=20
-1,<BR>- 64</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN =
class=3D921291017-15032007>+ 64,=20
68<BR> };</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007></SPAN></FONT> </DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007>Thanks,</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma size=3D2><SPAN=20
class=3D921291017-15032007>Tom</SPAN></FONT></DIV></BODY></HTML>
------_=_NextPart_001_01C76727.120EF0B6--
Technical Details
Message-ID:
<mailman.965.1173979666.7795.bug-gdb@gnu.org>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!newshub.sdsu.edu!headwall.stanford.edu!shelby.stanford.edu!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: f5053,e3e3548c1563dde2,start X-Google-Attributes: gidf5053,public X-Google-Language: ENGLISH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!newshub.sdsu.edu!headwall.stanford.edu!shelby.stanford.edu!not-for-mail From: "Zhu Tom-a2289c" <ling.zhu@motorola.com> Newsgroups: gnu.gdb.bug Subject: Gdbserver support of orig_r0 on ARM Date: Fri, 16 Mar 2007 01:26:21 +0800 Lines: 106 Approved: bug-gdb@gnu.org Message-ID: <mailman.965.1173979666.7795.bug-gdb@gnu.org> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C76727.120EF0B6" X-Trace: news.Stanford.EDU 1173979603 12724 199.232.76.165 (15 Mar 2007 17:26:43 GMT) X-Complaints-To: news@news.stanford.edu To: <bug-gdb@gnu.org> Envelope-to: bug-gdb@gnu.org X-VirusChecked: Checked X-Env-Sender: ling.zhu@motorola.com X-Msg-Ref: server-4.tower-153.messagelabs.com!1173979597!1842384!1 X-StarScan-Version: 5.5.10.7.1; banners=-,-,- X-Originating-IP: [129.188.136.8] X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message Thread-Topic: Gdbserver support of orig_r0 on ARM Thread-Index: AcdnJwyUQHfkCH+oQUGzHIc/Lt/Jiw== X-detected-kernel: Linux 2.4-2.6 X-BeenThere: bug-gdb@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GDB, the GNU debugger" <bug-gdb.gnu.org> List-Unsubscribe: <http://lists.gnu.org/mailman/listinfo/bug-gdb>, <mailto:bug-gdb-request@gnu.org?subject=unsubscribe> List-Archive: <http://lists.gnu.org/pipermail/bug-gdb> List-Post: <mailto:bug-gdb@gnu.org> List-Help: <mailto:bug-gdb-request@gnu.org?subject=help> List-Subscribe: <http://lists.gnu.org/mailman/listinfo/bug-gdb>, <mailto:bug-gdb-request@gnu.org?subject=subscribe>