This is the mail archive of the gdb-testers@sourceware.cygnus.com mailing list for the GDB project. See the GDB home page for more information.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Ah-hah, now it works better :-).
My last patch *is* appropriate, although if you prefer you could
just ifdef out everything past the "if(!is_pa_2)" branch in
pa_register_look_aside().
The additional patch needed to make startup happen on HPUX 9.*
is to correct an oversight in hppah-nat.c: there is a semaphore
arrangement that (partially) synchronizes inferior-process startup.
The child half of it is ifdef'd out on HPUX 9 ... but the parent
half was not :-(. Patch attached.
regards, tom lane
*** hppah-nat.c.orig Fri Mar 12 10:02:14 1999
--- hppah-nat.c Sun Mar 14 23:50:34 1999
***************
*** 363,375 ****
/* The following code is a substitute for the infttrace.c versions used
with ttrace() in HPUX 11. */
! /* This value is an arbitrary integer. */
! #define PT_VERSION 123456
/* This semaphore is used to coordinate the child and parent processes
after a fork(), and before an exec() by the child. See
parent_attach_all for details. */
typedef struct {
int parent_channel[2]; /* Parent "talks" to [1], child "listens" to [0] */
int child_channel[2]; /* Child "talks" to [1], parent "listens" to [0] */
--- 363,382 ----
/* The following code is a substitute for the infttrace.c versions used
with ttrace() in HPUX 11. */
! /* The startup semaphore is only useful for HPUX 10.0 and later,
! as it has no other purpose than to make the world safe for
! require_notification_of_exec_events(). We assume we need it
! if PT_SET_EVENT_MASK is defined. */
! #if defined(PT_SET_EVENT_MASK)
! #define USE_STARTUP_SEMAPHORE
! #endif
/* This semaphore is used to coordinate the child and parent processes
after a fork(), and before an exec() by the child. See
parent_attach_all for details. */
+ #if defined(USE_STARTUP_SEMAPHORE)
+
typedef struct {
int parent_channel[2]; /* Parent "talks" to [1], child "listens" to [0] */
int child_channel[2]; /* Child "talks" to [1], parent "listens" to [0] */
***************
*** 378,385 ****
--- 385,397 ----
#define SEM_TALK (1)
#define SEM_LISTEN (0)
+ /* This value is an arbitrary integer. */
+ #define PT_VERSION 123456
+
static startup_semaphore_t startup_semaphore;
+ #endif
+
extern int parent_attach_all PARAMS ((int, PTRACE_ARG3_TYPE, int));
#ifdef PT_SETTRC
***************
*** 408,424 ****
PTRACE_ARG3_TYPE addr;
int data;
{
! int pt_status = 0;
!
/* We need a memory home for a constant. */
int tc_magic_child = PT_VERSION;
int tc_magic_parent = 0;
- /* The remainder of this function is only useful for HPUX 10.0 and
- later, as it depends upon the ability to request notification
- of specific kinds of events by the kernel. */
- #if defined(PT_SET_EVENT_MASK)
-
/* Notify the parent that we're potentially ready to exec(). */
write (startup_semaphore.child_channel[SEM_TALK],
&tc_magic_child,
--- 420,430 ----
PTRACE_ARG3_TYPE addr;
int data;
{
! #if defined(USE_STARTUP_SEMAPHORE)
/* We need a memory home for a constant. */
int tc_magic_child = PT_VERSION;
int tc_magic_parent = 0;
/* Notify the parent that we're potentially ready to exec(). */
write (startup_semaphore.child_channel[SEM_TALK],
&tc_magic_child,
***************
*** 671,676 ****
--- 677,683 ----
child_acknowledge_created_inferior (pid)
int pid;
{
+ #if defined(USE_STARTUP_SEMAPHORE)
/* We need a memory home for a constant. */
int tc_magic_parent = PT_VERSION;
int tc_magic_child = 0;
***************
*** 711,716 ****
--- 718,724 ----
(void) close (startup_semaphore.parent_channel[SEM_TALK]);
(void) close (startup_semaphore.child_channel[SEM_LISTEN]);
(void) close (startup_semaphore.child_channel[SEM_TALK]);
+ #endif
}
void
***************
*** 1026,1031 ****
--- 1034,1040 ----
void
pre_fork_inferior ()
{
+ #if defined(USE_STARTUP_SEMAPHORE)
int status;
status = pipe (startup_semaphore.parent_channel);
***************
*** 1041,1046 ****
--- 1050,1056 ----
warning ("error getting child pipe for startup semaphore");
return;
}
+ #endif
}