From 9b265ec209d7dd38bd411cdd3bac4d705a244398 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 16 Mar 2005 15:58:41 +0000 Subject: [PATCH] * utils.c (internal_vproblem): Guard call to fork with HAVE_WORKING_FORK. * cli/cli-cmds.c (shell_escape): Guard call to vfork with HAVE_WORKING_VFORK and HAVE_WORKING_FORK. * remote-fileo.c (remote_fileio_mode_to_host): Accomodate lack of S_IRGRP and related macros. (remote_fileio_mode_to_target): Likewise. --- gdb/ChangeLog | 11 +++++++++++ gdb/cli/cli-cmds.c | 5 +++-- gdb/remote-fileio.c | 22 +++++++++++++++++++++- gdb/utils.c | 2 ++ 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 07d7fb8..fc9f632 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2005-03-15 Mark Mitchell + + * utils.c (internal_vproblem): Guard call to fork with + HAVE_WORKING_FORK. + * cli/cli-cmds.c (shell_escape): Guard call to vfork with + HAVE_WORKING_VFORK and HAVE_WORKING_FORK. + + * remote-fileo.c (remote_fileio_mode_to_host): Accomodate lack of + S_IRGRP and related macros. + (remote_fileio_mode_to_target): Likewise. + 2005-03-14 Ben Elliston * Makefile.in (CLIBS): Link libbfd after libopcodes, as it is a diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 49da474..3c091fe 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -1,6 +1,6 @@ /* GDB CLI commands. - Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GDB. @@ -484,7 +484,8 @@ echo_command (char *text, int from_tty) static void shell_escape (char *arg, int from_tty) { -#ifdef CANT_FORK +#if defined(CANT_FORK) || \ + (!defined(HAVE_WORKING_VFORK) && !defined(HAVE_WORKING_FORK)) /* If ARG is NULL, they want an inferior shell, but `system' just reports if the shell is available when passed a NULL arg. */ int rc = system (arg ? arg : ""); diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c index d2090e6..7d8744d 100644 --- a/gdb/remote-fileio.c +++ b/gdb/remote-fileio.c @@ -1,6 +1,6 @@ /* Remote File-I/O communications - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2005 Free Software Foundation, Inc. This file is part of GDB. @@ -162,18 +162,28 @@ remote_fileio_mode_to_host (long mode, int open_call) hmode |= S_IWUSR; if (mode & FILEIO_S_IXUSR) hmode |= S_IXUSR; +#ifdef S_IRGRP if (mode & FILEIO_S_IRGRP) hmode |= S_IRGRP; +#endif +#ifdef S_IWGRP if (mode & FILEIO_S_IWGRP) hmode |= S_IWGRP; +#endif +#ifdef S_IXGRP if (mode & FILEIO_S_IXGRP) hmode |= S_IXGRP; +#endif if (mode & FILEIO_S_IROTH) hmode |= S_IROTH; +#ifdef S_IWOTH if (mode & FILEIO_S_IWOTH) hmode |= S_IWOTH; +#endif +#ifdef S_IXOTH if (mode & FILEIO_S_IXOTH) hmode |= S_IXOTH; +#endif return hmode; } @@ -194,18 +204,28 @@ remote_fileio_mode_to_target (mode_t mode) tmode |= FILEIO_S_IWUSR; if (mode & S_IXUSR) tmode |= FILEIO_S_IXUSR; +#ifdef S_IRGRP if (mode & S_IRGRP) tmode |= FILEIO_S_IRGRP; +#endif +#ifdef S_IWRGRP if (mode & S_IWGRP) tmode |= FILEIO_S_IWGRP; +#endif +#ifdef S_IXGRP if (mode & S_IXGRP) tmode |= FILEIO_S_IXGRP; +#endif if (mode & S_IROTH) tmode |= FILEIO_S_IROTH; +#ifdef S_IWOTH if (mode & S_IWOTH) tmode |= FILEIO_S_IWOTH; +#endif +#ifdef S_IXOTH if (mode & S_IXOTH) tmode |= FILEIO_S_IXOTH; +#endif return tmode; } diff --git a/gdb/utils.c b/gdb/utils.c index 690158b..7ee2061 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -789,8 +789,10 @@ further debugging may prove unreliable.", file, line, problem->name, msg); { if (dump_core_p) { +#ifdef HAVE_WORKING_FORK if (fork () == 0) abort (); /* NOTE: GDB has only three calls to abort(). */ +#endif } } -- 2.7.4