diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-27 17:43:09 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-27 17:43:09 +0000 |
commit | 38bbfd37955ebeb355922d7dad7d33d64537d5f2 (patch) | |
tree | f9d1de18bbd98a9c6d63fc678adeb35a82b41e64 /gdb | |
parent | 4e95866e2c5d769e6b7db09ca3247d497af941c9 (diff) | |
download | gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.zip gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.tar.gz gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.tar.bz2 |
* fork-child.c (fork_inferior): Only quote exec file if needed.
* mipsread.c (parse_symbol): Remove 21 Jul 93 change with
stTypedef inside an stBlock.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/fork-child.c | 56 | ||||
-rw-r--r-- | gdb/mipsread.c | 5 |
2 files changed, 52 insertions, 9 deletions
diff --git a/gdb/fork-child.c b/gdb/fork-child.c index b413889..40f7680 100644 --- a/gdb/fork-child.c +++ b/gdb/fork-child.c @@ -97,20 +97,58 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun) #endif strcat (shell_command, "exec "); - /* Now add exec_file, quoting as necessary. Quoting in this style is - said to work with all shells. */ + /* Now add exec_file, quoting as necessary. */ { char *p; + int need_to_quote; - strcat (shell_command, "'"); - for (p = exec_file; *p != '\0'; ++p) + /* 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) { - if (*p == '\'') - strcat (shell_command, "'\\''"); - else - strncat (shell_command, p, 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; + + 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, "'"); } - strcat (shell_command, "'"); + else + strcat (shell_command, exec_file); } strcat (shell_command, " "); diff --git a/gdb/mipsread.c b/gdb/mipsread.c index 2f68c27..948098c 100644 --- a/gdb/mipsread.c +++ b/gdb/mipsread.c @@ -954,6 +954,10 @@ parse_symbol (sh, ax, ext_sh, bigend) max_value = tsym.value; break; +#if 0 + /* This does not fix the bug which it intended to fix, + and makes GDB hang when reading its own symbol table on + the SGI, when compiled with the SGI compiler. */ case stTypedef: case stConstant: case stStaticProc: @@ -962,6 +966,7 @@ parse_symbol (sh, ax, ext_sh, bigend) Apparently processing them like the following prevents core dumps. */ /* FALLTHROUGH */ +#endif case stBlock: case stUnion: |