diff options
author | Jeff Law <law@redhat.com> | 1994-01-21 16:22:51 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1994-01-21 16:22:51 +0000 |
commit | 918fea3e3ca140642536617d04e32b5f4e4077a6 (patch) | |
tree | 250addf549f6a6de41625dbd8c98db564db823b1 /gdb/hppab-nat.c | |
parent | 1b880e74fb2800a7878dec5bfc2b271149e97af6 (diff) | |
download | gdb-918fea3e3ca140642536617d04e32b5f4e4077a6.zip gdb-918fea3e3ca140642536617d04e32b5f4e4077a6.tar.gz gdb-918fea3e3ca140642536617d04e32b5f4e4077a6.tar.bz2 |
* infptrace.c (child_xfer_memory): Only use if CHILD_XFER_MEMORY
is not defined.
* hppab-nat.c (call_ptrace): Delete redundant function.
(kill_inferior, attach, detach, child_resume): Likewise.
(child_xfer_memory): Likewise.
* hppah-nat.c (call_ptrace): Delete redundant function.
(kill_inferior, attach, detach, child_resume): Likewise.
* config/pa/hppabsd.mh (NATDEPFILES): Add infptrace.o.
* config/pa/hppahpux.mh (NATDEPFILES): Add infptrace.o.
* config/pa/nm-hppab.h (FETCH_INFERIOR_REGISTERS): Define.
* config/pa/nm-hppah.h (FETCH_INFERIOR_REGISTERS): Define.
(CHILD_XFER_MEMORY): Define.
(PT_*): Define so that generic infptrace.c code can be used.
Diffstat (limited to 'gdb/hppab-nat.c')
-rw-r--r-- | gdb/hppab-nat.c | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/gdb/hppab-nat.c b/gdb/hppab-nat.c index dc63120..990c952 100644 --- a/gdb/hppab-nat.c +++ b/gdb/hppab-nat.c @@ -27,27 +27,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "target.h" #include <sys/ptrace.h> -#ifndef PT_ATTACH -#define PT_ATTACH PTRACE_ATTACH -#endif - -#ifndef PT_DETACH -#define PT_DETACH PTRACE_DETACH -#endif - -/* This function simply calls ptrace with the given arguments. - It exists so that all calls to ptrace are isolated in this - machine-dependent file. */ - -int -call_ptrace (request, pid, addr, data) - int request, pid; - PTRACE_ARG3_TYPE addr; - int data; -{ - return ptrace (request, pid, addr, data, 0); -} - /* Use an extra level of indirection for ptrace calls. This lets us breakpoint usefully on call_ptrace. It also allows us to pass an extra argument to ptrace without @@ -55,49 +34,6 @@ call_ptrace (request, pid, addr, data) #define ptrace call_ptrace -void -kill_inferior () -{ - if (inferior_pid == 0) - return; - ptrace (PT_KILL, inferior_pid, (PTRACE_ARG3_TYPE) 0, 0); - wait ((int *)0); - target_mourn_inferior (); -} - -#ifdef ATTACH_DETACH - -/* Start debugging the process whose number is PID. */ -int -attach (pid) - int pid; -{ - errno = 0; - ptrace (PT_ATTACH, pid, (PTRACE_ARG3_TYPE) 0, 0); - if (errno) - perror_with_name ("ptrace"); - attach_flag = 1; - return pid; -} - -/* Stop debugging the process whose number is PID - and continue it with signal number SIGNAL. - SIGNAL = 0 means just continue it. */ - -void -detach (signal) - int signal; -{ - errno = 0; - ptrace (PT_DETACH, inferior_pid, (PTRACE_ARG3_TYPE) 1, signal); - if (errno) - perror_with_name ("ptrace"); - attach_flag = 0; -} -#endif /* ATTACH_DETACH */ - - - #if !defined (offsetof) #define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) #endif @@ -204,123 +140,3 @@ store_inferior_registers (regno) return; } -/* Resume execution of process PID. - If STEP is nonzero, single-step it. - If SIGNAL is nonzero, give it that signal. */ - -void -child_resume (pid, step, signal) - int pid; - int step; - enum target_signal signal; -{ - errno = 0; - - if (pid == -1) - pid = inferior_pid; - - /* An address of (PTRACE_ARG3_TYPE) 1 tells ptrace to continue from where - it was. (If GDB wanted it to start some other way, we have already - written a new PC value to the child.) */ - - if (step) - ptrace (PT_STEP, pid, (PTRACE_ARG3_TYPE) 1, signal); - else - ptrace (PT_CONTINUE, pid, (PTRACE_ARG3_TYPE) 1, signal); - - if (errno) - perror_with_name ("ptrace"); -} - -/* NOTE! I tried using PTRACE_READDATA, etc., to read and write memory - in the NEW_SUN_PTRACE case. - It ought to be straightforward. But it appears that writing did - not write the data that I specified. I cannot understand where - it got the data that it actually did write. */ - -/* Copy LEN bytes to or from inferior's memory starting at MEMADDR - to debugger memory starting at MYADDR. Copy to inferior if - WRITE is nonzero. - - Returns the length copied, which is either the LEN argument or zero. - This xfer function does not do partial moves, since child_ops - doesn't allow memory operations to cross below us in the target stack - anyway. */ - -int -child_xfer_memory (memaddr, myaddr, len, write, target) - CORE_ADDR memaddr; - char *myaddr; - int len; - int write; - struct target_ops *target; /* ignored */ -{ - register int i; - /* Round starting address down to longword boundary. */ - register CORE_ADDR addr = memaddr & - sizeof (int); - /* Round ending address up; get number of longwords that makes. */ - register int count - = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int); - /* Allocate buffer of that many longwords. */ - register int *buffer = (int *) alloca (count * sizeof (int)); - - if (write) - { - /* Fill start and end extra bytes of buffer with existing memory data. */ - - if (addr != memaddr || len < (int)sizeof (int)) { - /* Need part of initial word -- fetch it. */ - buffer[0] = ptrace (PT_READ_I, inferior_pid, (PTRACE_ARG3_TYPE) addr, - 0); - } - - if (count > 1) /* FIXME, avoid if even boundary */ - { - buffer[count - 1] - = ptrace (PT_READ_I, inferior_pid, - (PTRACE_ARG3_TYPE) (addr + (count - 1) * sizeof (int)), - 0); - } - - /* Copy data to be written over corresponding part of buffer */ - - memcpy ((char *) buffer + (memaddr & (sizeof (int) - 1)), myaddr, len); - - /* Write the entire buffer. */ - - for (i = 0; i < count; i++, addr += sizeof (int)) - { - errno = 0; - ptrace (PT_WRITE_D, inferior_pid, (PTRACE_ARG3_TYPE) addr, - buffer[i]); - if (errno) - { - /* Using the appropriate one (I or D) is necessary for - Gould NP1, at least. */ - errno = 0; - ptrace (PT_WRITE_I, inferior_pid, (PTRACE_ARG3_TYPE) addr, - buffer[i]); - } - if (errno) - return 0; - } - } - else - { - /* Read all the longwords */ - for (i = 0; i < count; i++, addr += sizeof (int)) - { - errno = 0; - buffer[i] = ptrace (PT_READ_I, inferior_pid, - (PTRACE_ARG3_TYPE) addr, 0); - if (errno) - return 0; - QUIT; - } - - /* Copy appropriate bytes out of the buffer. */ - memcpy (myaddr, (char *) buffer + (memaddr & (sizeof (int) - 1)), len); - } - return len; -} - |