Fri Jan 29 16:44:01 1999 Edith Epstein <eepstein@sophia.cygnus.com>

* inferior.h: ran indent

	* fork-child.c: ran indent

	* infrun.c : ran indent
This commit is contained in:
Edith Epstein 1999-01-29 21:47:09 +00:00
parent fbd641cbd3
commit 34adffbd05
2 changed files with 184 additions and 164 deletions

View File

@ -1,3 +1,11 @@
Fri Jan 29 16:44:01 1999 Edith Epstein <eepstein@sophia.cygnus.com>
* inferior.h: ran indent
* fork-child.c: ran indent
* infrun.c : ran indent
Fri Jan 29 12:57:34 1999 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
* infrun.c (_initialize_infrun): do not stop or print anything

View File

@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "defs.h"
#include "gdb_string.h"
#include "frame.h" /* required by inferior.h */
#include "frame.h" /* required by inferior.h */
#include "inferior.h"
#include "target.h"
#include "wait.h"
@ -47,49 +47,52 @@ extern char **environ;
* E.g., on "run a b c d" this routine would get as input
* the string "a b c d", and as output it would fill in argv with
* the four arguments "a", "b", "c", "d".
*/
*/
static void
breakup_args (
scratch,
argv)
char *scratch;
char **argv;
scratch,
argv)
char *scratch;
char **argv;
{
char *cp = scratch;
char *cp = scratch;
#if DEBUGGING
printf("breakup_args: input = %s\n", scratch);
printf ("breakup_args: input = %s\n", scratch);
#endif
for (;;) {
for (;;)
{
/* Scan past leading separators */
while (*cp == ' ' || *cp == '\t' || *cp == '\n') {
cp++;
}
/* Scan past leading separators */
while (*cp == ' ' || *cp == '\t' || *cp == '\n')
{
cp++;
}
/* Break if at end of string */
if (*cp == '\0') break;
/* Break if at end of string */
if (*cp == '\0')
break;
/* Take an arg */
*argv++ = cp;
/* Take an arg */
*argv++ = cp;
/* Scan for next arg separator */
cp = strchr (cp, ' ');
if (cp == NULL)
cp = strchr (cp, '\t');
if (cp == NULL)
cp = strchr (cp, '\n');
/* Scan for next arg separator */
cp = strchr (cp, ' ');
if (cp == NULL)
cp = strchr (cp, '\t');
if (cp == NULL)
cp = strchr (cp, '\n');
/* No separators => end of string => break */
if (cp == NULL)
break;
/* No separators => end of string => break */
if (cp == NULL)
break;
/* Replace the separator with a terminator */
*cp++ = '\0';
/* Replace the separator with a terminator */
*cp++ = '\0';
}
/* execv requires a null-terminated arg vector */
*argv = NULL;
/* execv requires a null-terminated arg vector */
*argv = NULL;
}
@ -128,23 +131,24 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
/* If no exec file handed to us, get it from the exec-file command -- with
a good, common error message if none is specified. */
if (exec_file == 0)
exec_file = get_exec_file(1);
exec_file = get_exec_file (1);
/* STARTUP_WITH_SHELL is defined in inferior.h.
* If 0, we'll just do a fork/exec, no shell, so don't
* bother figuring out what shell.
*/
if (STARTUP_WITH_SHELL) {
/* Figure out what shell to start up the user program under. */
if (shell_file == NULL)
shell_file = getenv ("SHELL");
if (shell_file == NULL)
shell_file = default_shell_file;
shell = 1;
}
if (STARTUP_WITH_SHELL)
{
/* Figure out what shell to start up the user program under. */
if (shell_file == NULL)
shell_file = getenv ("SHELL");
if (shell_file == NULL)
shell_file = default_shell_file;
shell = 1;
}
#if DEBUGGING
printf("shell is %s\n", shell_file);
printf ("shell is %s\n", shell_file);
#endif
/* Multiplying the length of exec_file by 4 is to account for the fact
@ -161,90 +165,93 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
shell_command[0] = '\0';
#endif
if (!shell) {
/* We're going to call execvp. Create argv */
/* Largest case: every other character is a separate arg */
if (!shell)
{
/* We're going to call execvp. Create argv */
/* Largest case: every other character is a separate arg */
#if DEBUGGING
printf("allocating argv, length = %d\n",
(
(strlen (allargs) + 1) / (unsigned) 2
+ 2
) * sizeof (*argv)
);
printf ("allocating argv, length = %d\n",
(
(strlen (allargs) + 1) / (unsigned) 2
+ 2
) * sizeof (*argv)
);
#endif
argv = (char **) xmalloc(((strlen (allargs) + 1) / (unsigned) 2 + 2) * sizeof (*argv));
argv[0] = exec_file;
breakup_args(allargs, &argv[1]);
argv = (char **) xmalloc (((strlen (allargs) + 1) / (unsigned) 2 + 2) * sizeof (*argv));
argv[0] = exec_file;
breakup_args (allargs, &argv[1]);
} else {
}
else
{
/* We're going to call a shell */
/* We're going to call a shell */
/* Now add exec_file, quoting as necessary. */
/* Now add exec_file, quoting as necessary. */
char *p;
int need_to_quote;
char *p;
int need_to_quote;
strcat (shell_command, "exec ");
strcat (shell_command, "exec ");
/* Quoting in this style is said to work with all shells. But csh
/* Quoting in this style is said to work with all shells. But csh
on IRIX 4.0.1 can't deal with it. So we only quote it if we need
to. */
p = exec_file;
while (1)
{
switch (*p)
{
case '\'':
case '"':
case '(':
case ')':
case '$':
case '&':
case ';':
case '<':
case '>':
case ' ':
case '\n':
case '\t':
need_to_quote = 1;
goto end_scan;
p = exec_file;
while (1)
{
switch (*p)
{
case '\'':
case '"':
case '(':
case ')':
case '$':
case '&':
case ';':
case '<':
case '>':
case ' ':
case '\n':
case '\t':
need_to_quote = 1;
goto end_scan;
case '\0':
need_to_quote = 0;
goto end_scan;
case '\0':
need_to_quote = 0;
goto end_scan;
default:
break;
}
++p;
}
end_scan:
if (need_to_quote)
{
strcat (shell_command, "'");
for (p = exec_file; *p != '\0'; ++p)
{
if (*p == '\'')
strcat (shell_command, "'\\''");
else
strncat (shell_command, p, 1);
}
strcat (shell_command, "'");
}
else
strcat (shell_command, exec_file);
strcat (shell_command, " ");
strcat (shell_command, allargs);
default:
break;
}
++p;
}
end_scan:
if (need_to_quote)
{
strcat (shell_command, "'");
for (p = exec_file; *p != '\0'; ++p)
{
if (*p == '\'')
strcat (shell_command, "'\\''");
else
strncat (shell_command, p, 1);
}
strcat (shell_command, "'");
}
else
strcat (shell_command, exec_file);
}
strcat (shell_command, " ");
strcat (shell_command, allargs);
}
/* exec is said to fail if the executable is open. */
close_exec_file ();
/* Retain a copy of our environment variables, since the child will
replace the value of environ and if we're vforked, we have to
replace the value of environ and if we're vforked, we have to
restore it. */
save_our_env = environ;
@ -280,13 +287,13 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
if (pid == 0)
{
if (debug_fork)
if (debug_fork)
sleep (debug_fork);
/* Run inferior in a separate process group. */
debug_setpgrp = gdb_setpgid ();
if (debug_setpgrp == -1)
perror("setpgrp failed in child");
perror ("setpgrp failed in child");
/* Ask the tty subsystem to switch to the one we specified earlier
(or to share the current terminal, if none was specified). */
@ -318,76 +325,81 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
environ = env;
/* If we decided above to start up with a shell,
* we exec the shell,
* we exec the shell,
* "-c" says to interpret the next arg as a shell command
* to execute, and this command is "exec <target-program> <args>".
* "-f" means "fast startup" to the c-shell, which means
* don't do .cshrc file. Doing .cshrc may cause fork/exec
* events which will confuse debugger start-up code.
*/
if (shell) {
if (shell)
{
#if 0
/* HP change is problematic. The -f option has different meanings
for different shells. It is particularly inappropriate for
/* HP change is problematic. The -f option has different meanings
for different shells. It is particularly inappropriate for
bourne shells. */
execlp (shell_file, shell_file, "-f", "-c", shell_command, (char *)0);
execlp (shell_file, shell_file, "-f", "-c", shell_command, (char *) 0);
#else
execlp (shell_file, shell_file, "-c", shell_command, (char *)0);
execlp (shell_file, shell_file, "-c", shell_command, (char *) 0);
#endif
/* If we get here, it's an error */
fprintf_unfiltered (gdb_stderr, "Cannot exec %s: %s.\n", shell_file,
safe_strerror (errno));
gdb_flush (gdb_stderr);
_exit (0177);
} else {
/* Otherwise, we directly exec the target program with execvp. */
int i;
char * errstring;
/* If we get here, it's an error */
fprintf_unfiltered (gdb_stderr, "Cannot exec %s: %s.\n", shell_file,
safe_strerror (errno));
gdb_flush (gdb_stderr);
_exit (0177);
}
else
{
/* Otherwise, we directly exec the target program with execvp. */
int i;
char *errstring;
#if DEBUGGING
printf("about to exec target, exec_file = %s\n", exec_file);
i = 0;
while (argv[i] != NULL) {
printf("strlen(argv[%d]) is %d\n", i, strlen(argv[i]));
printf("argv[%d] is %s\n", i, argv[i]);
i++;
}
printf ("about to exec target, exec_file = %s\n", exec_file);
i = 0;
while (argv[i] != NULL)
{
printf ("strlen(argv[%d]) is %d\n", i, strlen (argv[i]));
printf ("argv[%d] is %s\n", i, argv[i]);
i++;
}
#endif
execvp (exec_file, argv);
execvp (exec_file, argv);
/* If we get here, it's an error */
errstring = safe_strerror (errno);
fprintf_unfiltered (gdb_stderr, "Cannot exec %s ", exec_file);
i = 1;
while (argv[i] != NULL) {
if (i != 1)
fprintf_unfiltered (gdb_stderr, " ");
fprintf_unfiltered (gdb_stderr, "%s", argv[i]);
i++;
}
fprintf_unfiltered (gdb_stderr, ".\n");
/* This extra info seems to be useless
/* If we get here, it's an error */
errstring = safe_strerror (errno);
fprintf_unfiltered (gdb_stderr, "Cannot exec %s ", exec_file);
i = 1;
while (argv[i] != NULL)
{
if (i != 1)
fprintf_unfiltered (gdb_stderr, " ");
fprintf_unfiltered (gdb_stderr, "%s", argv[i]);
i++;
}
fprintf_unfiltered (gdb_stderr, ".\n");
/* This extra info seems to be useless
fprintf_unfiltered (gdb_stderr, "Got error %s.\n", errstring);
*/
gdb_flush (gdb_stderr);
_exit (0177);
}
gdb_flush (gdb_stderr);
_exit (0177);
}
}
/* Restore our environment in case a vforked child clob'd it. */
environ = save_our_env;
init_thread_list();
init_thread_list ();
inferior_pid = pid; /* Needed for wait_for_inferior stuff below */
/* Now that we have a child process, make it our target, and
initialize anything target-vector-specific that needs initializing. */
(*init_trace_fun)(pid);
(*init_trace_fun) (pid);
/* We are now in the child process of interest, having exec'd the
correct program, and are poised at the first instruction of the
@ -414,14 +426,14 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
*/
void
clone_and_follow_inferior (child_pid, followed_child)
int child_pid;
int *followed_child;
int child_pid;
int *followed_child;
{
extern int auto_solib_add;
int debugger_pid;
int status;
char pid_spelling [100]; /* Arbitrary but sufficient length. */
int debugger_pid;
int status;
char pid_spelling[100]; /* Arbitrary but sufficient length. */
/* This semaphore is used to coordinate the two debuggers' handoff
of CHILD_PID. The original debugger will detach from CHILD_PID,
@ -432,9 +444,9 @@ clone_and_follow_inferior (child_pid, followed_child)
*/
#define SEM_TALK (1)
#define SEM_LISTEN (0)
int handoff_semaphore[2]; /* Original "talks" to [1], clone "listens" to [0] */
int talk_value = 99;
int listen_value;
int handoff_semaphore[2]; /* Original "talks" to [1], clone "listens" to [0] */
int talk_value = 99;
int listen_value;
/* Set debug_fork then attach to the child while it sleeps, to debug. */
static int debug_fork = 0;
@ -469,7 +481,7 @@ clone_and_follow_inferior (child_pid, followed_child)
to CHILD_PID. */
if (debugger_pid != 0)
{
char signal_spelling[100]; /* Arbitrary but sufficient length */
char signal_spelling[100];/* Arbitrary but sufficient length */
/* Detach from CHILD_PID. Deliver a "stop" signal when we do, though,
so that it remains stopped until the clone debugger can attach
@ -489,8 +501,8 @@ clone_and_follow_inferior (child_pid, followed_child)
/* We're the child. */
else
{
if (debug_fork)
sleep (debug_fork);
if (debug_fork)
sleep (debug_fork);
/* The child (i.e., the cloned debugger) must now attach to
CHILD_PID. inferior_pid is presently set to the parent process
@ -516,7 +528,7 @@ clone_and_follow_inferior (child_pid, followed_child)
new_tty ();
dont_repeat ();
sprintf(pid_spelling, "%d", child_pid);
sprintf (pid_spelling, "%d", child_pid);
target_require_attach (pid_spelling, 1);
/* Perform any necessary cleanup, after attachment. (This form
@ -592,11 +604,11 @@ startup_inferior (ntraps)
terminal_initted = 1;
}
pending_execs = pending_execs - 1;
pending_execs = pending_execs - 1;
if (0 == pending_execs)
break;
resume (0, TARGET_SIGNAL_0); /* Just make it go on */
resume (0, TARGET_SIGNAL_0); /* Just make it go on */
}
}
#endif /* STARTUP_INFERIOR */