Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
1651030c
Commit
1651030c
authored
Aug 24, 2007
by
Kai Tietz
Committed by
Kai Tietz
Aug 24, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[patch]: libiberty pex for _WIN64.
From-SVN: r127761
parent
affb3cb2
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
69 additions
and
55 deletions
+69
-55
libiberty/ChangeLog
+8
-0
libiberty/pex-common.h
+8
-2
libiberty/pex-djgpp.c
+20
-20
libiberty/pex-msdos.c
+7
-7
libiberty/pex-unix.c
+10
-10
libiberty/pex-win32.c
+16
-16
No files found.
libiberty/ChangeLog
View file @
1651030c
2007-08-24 Kai Tietz <kai.tietz@onevision.com>
* 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 <msnyder@access-company.com>
* make-relative-prefix.c (make_relative_prefix_1): Resource leaks.
...
...
libiberty/pex-common.h
View file @
1651030c
...
...
@@ -26,6 +26,12 @@ Boston, MA 02110-1301, USA. */
#include "libiberty.h"
#include <stdio.h>
/* 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 <sys/types.h>
#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
...
...
libiberty/pex-djgpp.c
View file @
1651030c
...
...
@@ -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
)
...
...
libiberty/pex-msdos.c
View file @
1651030c
...
...
@@ -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
)
...
...
libiberty/pex-unix.c
View file @
1651030c
...
...
@@ -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
)
{
...
...
libiberty/pex-win32.c
View file @
1651030c
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment