From: DJ Delorie Date: Fri, 24 Aug 2007 16:08:40 +0000 (+0000) Subject: merge from gcc X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=29d89e071e7c7d0ea3b13eb883e44498d8390aa0;p=binutils-gdb.git merge from gcc --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 11e908207b4..8e3444820c1 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,11 @@ +2007-08-24 Kai Tietz + + * pex-common.h: (pex_funcs): Retyped wait and exec_child to pid_t. + * pex-djgpp.c: Likewise. + * pex-msdos.c: Likewise. + * pex-unix.c: Likewise. + * pex-win32.c: Likewise. + 2007-08-17 Michael Snyder * make-relative-prefix.c (make_relative_prefix_1): Resource leaks. diff --git a/libiberty/pex-common.h b/libiberty/pex-common.h index 8edc13b7650..5b7bfcc03ee 100644 --- a/libiberty/pex-common.h +++ b/libiberty/pex-common.h @@ -26,6 +26,12 @@ Boston, MA 02110-1301, USA. */ #include "libiberty.h" #include +/* pid_t is may defined by config.h or sys/types.h needs to be + included. */ +#if !defined(pid_t) && defined(HAVE_SYS_TYPES_H) +#include +#endif + #define install_error_msg "installation problem, cannot exec `%s'" /* stdin file number. */ @@ -108,7 +114,7 @@ struct pex_funcs closed in the child process. The function should handle the PEX_STDERR_TO_STDOUT flag. Return >= 0 on success, or -1 on error and set *ERRMSG and *ERR. */ - long (*exec_child) (struct pex_obj *, int /* flags */, + pid_t (*exec_child) (struct pex_obj *, int /* flags */, const char */* executable */, char * const * /* argv */, char * const * /* env */, int /* in */, int /* out */, int /* errdes */, @@ -120,7 +126,7 @@ struct pex_funcs and time in *TIME (if it is not null). CHILD is from fork. DONE is 1 if this is called via pex_free. ERRMSG and ERR are as in fork. Return 0 on success, -1 on error. */ - int (*wait) (struct pex_obj *, long /* child */, int * /* status */, + int (*wait) (struct pex_obj *, pid_t /* child */, int * /* status */, struct pex_time * /* time */, int /* done */, const char ** /* errmsg */, int * /* err */); /* Create a pipe (only called if PEX_USE_PIPES is set) storing two diff --git a/libiberty/pex-djgpp.c b/libiberty/pex-djgpp.c index ac5a4f97ba7..bd279380dae 100644 --- a/libiberty/pex-djgpp.c +++ b/libiberty/pex-djgpp.c @@ -44,12 +44,12 @@ extern int errno; static int pex_djgpp_open_read (struct pex_obj *, const char *, int); static int pex_djgpp_open_write (struct pex_obj *, const char *, int); -static long pex_djgpp_exec_child (struct pex_obj *, int, const char *, +static pid_t pex_djgpp_exec_child (struct pex_obj *, int, const char *, char * const *, char * const *, int, int, int, int, const char **, int *); static int pex_djgpp_close (struct pex_obj *, int); -static int pex_djgpp_wait (struct pex_obj *, long, int *, struct pex_time *, +static int pex_djgpp_wait (struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *); /* The list of functions we pass to the common routines. */ @@ -110,7 +110,7 @@ pex_djgpp_close (struct pex_obj *obj ATTRIBUTE_UNUSED, int fd) /* Execute a child. */ -static long +static pid_t pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, char * const * argv, char * const * env, int in, int out, int errdes, @@ -132,19 +132,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup"; - return -1; + return (pid_t) -1; } if (dup2 (in, STDIN_FILE_NO) < 0) { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (close (in) < 0) { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } @@ -155,19 +155,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup"; - return -1; + return (pid_t) -1; } if (dup2 (out, STDOUT_FILE_NO) < 0) { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (close (out) < 0) { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } @@ -179,14 +179,14 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup"; - return -1; + return (pid_t) -1; } if (dup2 ((flags & PEX_STDERR_TO_STDOUT) != 0 ? STDOUT_FILE_NO : errdes, STDERR_FILE_NO) < 0) { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (errdes != STDERR_FILE_NO) { @@ -194,7 +194,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } } @@ -218,13 +218,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (close (org_in) < 0) { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } @@ -234,13 +234,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (close (org_out) < 0) { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } @@ -251,13 +251,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "dup2"; - return -1; + return (pid_t) -1; } if (close (org_errdes) < 0) { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } @@ -269,7 +269,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, statuses[obj->count] = status; obj->sysdep = (void *) statuses; - return obj->count; + return (pid_t) obj->count; } /* Wait for a child process to complete. Actually the child process @@ -277,7 +277,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, status. */ static int -pex_djgpp_wait (struct pex_obj *obj, long pid, int *status, +pex_djgpp_wait (struct pex_obj *obj, pid_t pid, int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED, int *err ATTRIBUTE_UNUSED) diff --git a/libiberty/pex-msdos.c b/libiberty/pex-msdos.c index b5acd86b0f5..ab4d736429e 100644 --- a/libiberty/pex-msdos.c +++ b/libiberty/pex-msdos.c @@ -54,12 +54,12 @@ struct pex_msdos static int pex_msdos_open (struct pex_obj *, const char *, int); static int pex_msdos_open (struct pex_obj *, const char *, int); static int pex_msdos_fdindex (struct pex_msdos *, int); -static long pex_msdos_exec_child (struct pex_obj *, int, const char *, +static pid_t pex_msdos_exec_child (struct pex_obj *, int, const char *, char * const *, char * const *, int, int, int, int, int, const char **, int *); static int pex_msdos_close (struct pex_obj *, int); -static int pex_msdos_wait (struct pex_obj *, long, int *, struct pex_time *, +static int pex_msdos_wait (struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *); static void pex_msdos_cleanup (struct pex_obj *); @@ -152,7 +152,7 @@ pex_msdos_close (struct pex_obj *obj, int fd) /* Execute a child. */ -static long +static pid_t pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, char * const * argv, char * const * env, int in, int out, int toclose ATTRIBUTE_UNUSED, @@ -235,7 +235,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, free (scmd); free (rf); *errmsg = "cannot open temporary command file"; - return -1; + return (pid_t) -1; } for (i = 1; argv[i] != NULL; ++i) @@ -262,7 +262,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, free (scmd); free (rf); *errmsg = "system"; - return -1; + return (pid_t) -1; } remove (rf); @@ -275,7 +275,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, ms->statuses = XRESIZEVEC(int, ms->statuses, obj->count + 1); ms->statuses[obj->count] = status; - return obj->count; + return (pid_t) obj->count; } /* Wait for a child process to complete. Actually the child process @@ -283,7 +283,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, status. */ static int -pex_msdos_wait (struct pex_obj *obj, long pid, int *status, +pex_msdos_wait (struct pex_obj *obj, pid_t pid, int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED, int *err ATTRIBUTE_UNUSED) diff --git a/libiberty/pex-unix.c b/libiberty/pex-unix.c index a7760415e01..366e96ef8d2 100644 --- a/libiberty/pex-unix.c +++ b/libiberty/pex-unix.c @@ -269,12 +269,12 @@ static void pex_child_error (struct pex_obj *, const char *, const char *, int) ATTRIBUTE_NORETURN; static int pex_unix_open_read (struct pex_obj *, const char *, int); static int pex_unix_open_write (struct pex_obj *, const char *, int); -static long pex_unix_exec_child (struct pex_obj *, int, const char *, +static pid_t pex_unix_exec_child (struct pex_obj *, int, const char *, char * const *, char * const *, int, int, int, int, const char **, int *); static int pex_unix_close (struct pex_obj *, int); -static int pex_unix_wait (struct pex_obj *, long, int *, struct pex_time *, +static int pex_unix_wait (struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *); static int pex_unix_pipe (struct pex_obj *, int *, int); static FILE *pex_unix_fdopenr (struct pex_obj *, int, int); @@ -355,7 +355,7 @@ pex_child_error (struct pex_obj *obj, const char *executable, extern char **environ; -static long +static pid_t pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, char * const * argv, char * const * env, int in, int out, int errdes, @@ -384,7 +384,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, case -1: *err = errno; *errmsg = VFORK_STRING; - return -1; + return (pid_t) -1; case 0: /* Child process. */ @@ -435,7 +435,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, } /* NOTREACHED */ - return -1; + return (pid_t) -1; default: /* Parent process. */ @@ -445,7 +445,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } if (out != STDOUT_FILE_NO) @@ -454,7 +454,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } if (errdes != STDERR_FILE_NO) @@ -463,18 +463,18 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, { *err = errno; *errmsg = "close"; - return -1; + return (pid_t) -1; } } - return (long) pid; + return pid; } } /* Wait for a child process to complete. */ static int -pex_unix_wait (struct pex_obj *obj, long pid, int *status, +pex_unix_wait (struct pex_obj *obj, pid_t pid, int *status, struct pex_time *time, int done, const char **errmsg, int *err) { diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index ef9eb025caf..05d44e9d183 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -79,12 +79,12 @@ backslashify (char *s) static int pex_win32_open_read (struct pex_obj *, const char *, int); static int pex_win32_open_write (struct pex_obj *, const char *, int); -static long pex_win32_exec_child (struct pex_obj *, int, const char *, +static pid_t pex_win32_exec_child (struct pex_obj *, int, const char *, char * const *, char * const *, int, int, int, int, const char **, int *); static int pex_win32_close (struct pex_obj *, int); -static int pex_win32_wait (struct pex_obj *, long, int *, +static int pex_win32_wait (struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *); static int pex_win32_pipe (struct pex_obj *, int *, int); static FILE *pex_win32_fdopenr (struct pex_obj *, int, int); @@ -522,7 +522,7 @@ env_compare (const void *a_ptr, const void *b_ptr) return c1 - c2; } -static long +static pid_t win32_spawn (const char *executable, BOOL search, char *const *argv, @@ -597,7 +597,7 @@ win32_spawn (const char *executable, free (full_executable); - return -1; + return (pid_t) -1; } /* Clean up. */ @@ -606,7 +606,7 @@ win32_spawn (const char *executable, if (env_block) free (env_block); - return (long) pi->hProcess; + return (pid_t) pi->hProcess; error: if (env_block) @@ -616,17 +616,17 @@ win32_spawn (const char *executable, if (full_executable) free (full_executable); - return -1; + return (pid_t) -1; } -static long +static pid_t spawn_script (const char *executable, char *const *argv, char* const *env, DWORD dwCreationFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi) { - int pid = -1; + pid_t pid = (pid_t) -1; int save_errno = errno; int fd = _open (executable, _O_RDONLY); @@ -673,7 +673,7 @@ spawn_script (const char *executable, char *const *argv, dwCreationFlags, si, pi); if (executable1 != newex) free ((char *) newex); - if (pid < 0) + if ((long) pid < 0) { newex = msys_rootify (executable1); if (newex != executable1) @@ -689,14 +689,14 @@ spawn_script (const char *executable, char *const *argv, } } } - if (pid < 0) + if ((long) pid < 0) errno = save_errno; return pid; } /* Execute a child. */ -static long +static pid_t pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, const char *executable, char * const * argv, char* const* env, @@ -705,7 +705,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, const char **errmsg, int *err) { - long pid; + pid_t pid; HANDLE stdin_handle; HANDLE stdout_handle; HANDLE stderr_handle; @@ -780,10 +780,10 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, /* Create the child process. */ pid = win32_spawn (executable, (flags & PEX_SEARCH) != 0, argv, env, dwCreationFlags, &si, &pi); - if (pid == -1) + if (pid == (pid_t) -1) pid = spawn_script (executable, argv, env, dwCreationFlags, &si, &pi); - if (pid == -1) + if (pid == (pid_t) -1) { *err = ENOENT; *errmsg = "CreateProcess"; @@ -808,7 +808,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, macros. Note that WIFSIGNALED will never be true under CRTDLL. */ static int -pex_win32_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, long pid, +pex_win32_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED, const char **errmsg, int *err) { @@ -883,7 +883,7 @@ main (int argc ATTRIBUTE_UNUSED, char **argv) char const *errmsg; int err; argv++; - printf ("%ld\n", pex_win32_exec_child (NULL, PEX_SEARCH, argv[0], argv, NULL, 0, 0, 1, 2, &errmsg, &err)); + printf ("%ld\n", (long) pex_win32_exec_child (NULL, PEX_SEARCH, argv[0], argv, NULL, 0, 0, 1, 2, &errmsg, &err)); exit (0); } #endif