mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 18:44:20 +08:00
* go32-nat.c (go32_create_inferior): Support command lines longer
than 126 characters.
This commit is contained in:
parent
96fe9e8c46
commit
150985e3a1
@ -1,3 +1,8 @@
|
||||
2001-07-15 Eli Zaretskii <eliz@is.elta.co.il>
|
||||
|
||||
* go32-nat.c (go32_create_inferior): Support command lines longer
|
||||
than 126 characters.
|
||||
|
||||
2001-07-14 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
||||
|
||||
* NEWS: New target 68HC11/68HC12.
|
||||
|
@ -588,6 +588,7 @@ go32_create_inferior (char *exec_file, char *args, char **env)
|
||||
jmp_buf start_state;
|
||||
char *cmdline;
|
||||
char **env_save = environ;
|
||||
size_t cmdlen;
|
||||
|
||||
/* If no exec file handed to us, get it from the exec-file command -- with
|
||||
a good, common error message if none is specified. */
|
||||
@ -622,10 +623,24 @@ go32_create_inferior (char *exec_file, char *args, char **env)
|
||||
else
|
||||
child_cmd.command = xstrdup (args);
|
||||
|
||||
cmdline = (char *) alloca (strlen (args) + 4);
|
||||
cmdline[0] = strlen (args);
|
||||
cmdlen = strlen (args);
|
||||
/* v2loadimage passes command lines via DOS memory, so it cannot
|
||||
possibly handle commands longer than 1MB. */
|
||||
if (cmdlen > 1024*1024)
|
||||
error ("Command line too long.");
|
||||
|
||||
cmdline = xmalloc (cmdlen + 4);
|
||||
strcpy (cmdline + 1, args);
|
||||
cmdline[strlen (args) + 1] = 13;
|
||||
/* If the command-line length fits into DOS 126-char limits, use the
|
||||
DOS command tail format; otherwise, tell v2loadimage to pass it
|
||||
through a buffer in conventional memory. */
|
||||
if (cmdlen < 127)
|
||||
{
|
||||
cmdline[0] = strlen (args);
|
||||
cmdline[cmdlen + 1] = 13;
|
||||
}
|
||||
else
|
||||
cmdline[0] = 0xff; /* signal v2loadimage it's a long command */
|
||||
|
||||
environ = env;
|
||||
|
||||
@ -636,6 +651,7 @@ go32_create_inferior (char *exec_file, char *args, char **env)
|
||||
exit (1);
|
||||
}
|
||||
environ = env_save;
|
||||
free (cmdline);
|
||||
|
||||
edi_init (start_state);
|
||||
#if __DJGPP_MINOR__ < 3
|
||||
|
Loading…
Reference in New Issue
Block a user