From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32746 invoked by alias); 14 Nov 2003 00:26:09 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 32732 invoked from network); 14 Nov 2003 00:26:08 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (216.129.200.20) by sources.redhat.com with SMTP; 14 Nov 2003 00:26:08 -0000 Received: from redhat.com (toocool.toronto.redhat.com [172.16.14.72]) by touchme.toronto.redhat.com (Postfix) with ESMTP id DA82F8000F9; Thu, 13 Nov 2003 19:26:07 -0500 (EST) Message-ID: <3FB4211F.9040603@redhat.com> Date: Fri, 14 Nov 2003 00:26:00 -0000 From: "J. Johnston" Organization: Red Hat Inc. User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "J. Johnston" Cc: Andrew Cagney , Daniel Jacobowitz , Kevin Buettner , Marcel Moolenaar , gdb-patches@sources.redhat.com Subject: Re: RFA: ia64 portion of libunwind patch References: <3F986E31.8050201@redhat.com> <1031024175718.ZM3475@localhost.localdomain> <3F996D88.9060505@redhat.com> <1031024185625.ZM9827@localhost.localdomain> <3F9F0180.2010702@redhat.com> <20031029012833.GA11070@nevyn.them.org> <3FA043B2.6090401@redhat.com> <3FA7F97B.4090909@redhat.com> In-Reply-To: <3FA7F97B.4090909@redhat.com> Content-Type: multipart/mixed; boundary="------------020508070704080607060305" X-SW-Source: 2003-11/txt/msg00281.txt.bz2 This is a multi-part message in MIME format. --------------020508070704080607060305 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2721 I have just added a new patch which accounts for Andrew's latest xfer_partial changes. Ok to commit? -- Jeff J. 2003-11-13 Jeff Johnston * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to set up the ia64 linux native target method for getting the kernel unwind table. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function. * inftarg.c (child_xfer_partial): Enable section of code to handle TARGET_OBJECT_UNWIND_TABLE. * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro. J. Johnston wrote: > I have chosen the first option to implement the syscall. I have > included a patch here regarding this mechanism. > > Ok to commit? > > -- Jeff J. > > 2003-11-04 Jeff Johnston > > * config/ia64/nm-linux.h (CHILD_TO_XFER_PARTIAL): New macro to set > up the ia64 linux native target to_xfer_partial method. > (ia64_linux_xfer_partial): New prototype. > * ia64-linux-nat.c (ia64_linux_xfer_partial): New function. > * inftarg.c (init_child_ops)[CHILD_TO_XFER_PARTIAL]: Set up xfer > partial method if one provided via macro. > * target.c (init_dummy_target): Initialize to_xfer_partial to default. > * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE enum. > > > Andrew Cagney wrote: > >>> Nothing which involves a syscall is acceptable in a tdep file. That's >>> what the t means - target support. >> >> >> >> ("tdep" mysteriously means "architecture vector support". That "t" >> really no longer makes sense :-() >> >> Yes, architecture vector shouldn't be directly making syscalls. >> Instead the architecture specific code should use the target vector to >> obtain this system information. Here I think the best option is to >> add another TARGET_OBJECT_xxxx variant and then use the target_read() >> method to pull in the data. >> >> As for the native target side, ia64-linux-nat should export something >> like ia64_linux_child_read_partial that performs the syscall. The >> tricky [er messy] part is wiring it into child_ops, I see there are >> lots of choices :-( >> >> - define a nm-*.c macro and have that enable the assignment (ex >> #define NATIVE_TO_READ_PARTIAL ia64_linux_child?) (ref KILL_INFERIOR) >> >> - have a callback set the to_read_partial method in child_ops >> (exec_set_find_memory_regions) >> >> - modify all the targets so that each implements the new method >> >> - others? >> >> Is this information available via /proc? In a core file? >> >> Andrew >> >> PS: Note this pending patch. Dependant on the timing you or I may >> need to tweak the name. >> http://sources.redhat.com/ml/gdb-patches/2003-10/msg00795.html >> >> >> --------------020508070704080607060305 Content-Type: text/plain; name="xfer_partial.patch2" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xfer_partial.patch2" Content-length: 3072 Index: config/ia64/nm-linux.h =================================================================== RCS file: /cvs/src/src/gdb/config/ia64/nm-linux.h,v retrieving revision 1.10 diff -u -r1.10 nm-linux.h --- config/ia64/nm-linux.h 20 Jun 2003 13:57:29 -0000 1.10 +++ config/ia64/nm-linux.h 14 Nov 2003 00:06:02 -0000 @@ -69,4 +69,15 @@ extern int ia64_linux_remove_watchpoint (ptid_t ptid, CORE_ADDR addr, int len); +#include "target.h" + +#define NATIVE_XFER_UNWIND_TABLE ia64_linux_xfer_unwind_table +extern LONGEST ia64_linux_xfer_unwind_table (struct target_ops *ops, + enum target_object object, + const char *annex, + void *readbuf, + const void *writebuf, + ULONGEST offset, + LONGEST len); + #endif /* #ifndef NM_LINUX_H */ Index: target.h =================================================================== RCS file: /cvs/src/src/gdb/target.h,v retrieving revision 1.53 diff -u -r1.53 target.h --- target.h 10 Nov 2003 21:20:44 -0000 1.53 +++ target.h 14 Nov 2003 00:06:03 -0000 @@ -223,8 +223,10 @@ /* AVR target specific transfer. See "avr-tdep.c" and "remote.c". */ TARGET_OBJECT_AVR, /* Transfer up-to LEN bytes of memory starting at OFFSET. */ - TARGET_OBJECT_MEMORY - /* Possible future ojbects: TARGET_OJBECT_FILE, TARGET_OBJECT_PROC, + TARGET_OBJECT_MEMORY, + /* Kernel Unwind Table. See "ia64-tdep.c". */ + TARGET_OBJECT_UNWIND_TABLE, + /* Possible future objects: TARGET_OBJECT_FILE, TARGET_OBJECT_PROC, TARGET_OBJECT_AUXV, ... */ }; Index: inftarg.c =================================================================== RCS file: /cvs/src/src/gdb/inftarg.c,v retrieving revision 1.20 diff -u -r1.20 inftarg.c --- inftarg.c 10 Nov 2003 21:20:44 -0000 1.20 +++ inftarg.c 14 Nov 2003 00:06:03 -0000 @@ -571,14 +571,12 @@ NULL, ops); return -1; -#if 0 case TARGET_OBJECT_UNWIND_TABLE: #ifndef NATIVE_XFER_UNWIND_TABLE #define NATIVE_XFER_UNWIND_TABLE(OPS,OBJECT,ANNEX,WRITEBUF,READBUF,OFFSET,LEN) (-1) #endif return NATIVE_XFER_UNWIND_TABLE (ops, object, annex, readbuf, writebuf, offset, len); -#endif #if 0 case TARGET_OBJECT_AUXV: Index: ia64-linux-nat.c =================================================================== RCS file: /cvs/src/src/gdb/ia64-linux-nat.c,v retrieving revision 1.20 diff -u -r1.20 ia64-linux-nat.c --- ia64-linux-nat.c 2 Oct 2003 20:28:29 -0000 1.20 +++ ia64-linux-nat.c 14 Nov 2003 00:06:03 -0000 @@ -34,6 +34,7 @@ #ifdef HAVE_SYS_REG_H #include #endif +#include #include #include @@ -644,4 +645,14 @@ write_register_pid (IA64_PSR_REGNUM, psr, ptid); return (CORE_ADDR) siginfo.si_addr; +} + +LONGEST +ia64_linux_xfer_unwind_table (struct target_ops *ops, + enum target_object object, + const char *annex, + void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) +{ + return syscall (__NR_getunwind, readbuf, len); } --------------020508070704080607060305--