| commit 2a973ab7f1a6f6cd9be1c7257fd7b5d331515eab |
| Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> |
| Date: Wed Sep 12 10:30:46 2018 -0300 |
| |
| posix: Add internal symbols for posix_spawn interface |
| |
| This patch adds internal hidden definition for mostly of the posix_spawn |
| function so it can be used internally on both popen and system |
| implementations. |
| |
| Checked on x86_64-linux-gnu. |
| |
| * include/spawn.h (__posix_spawn, posix_spawn_file_actions_addclose, |
| __posix_spawn_file_actions_adddup2, __posix_spawn_file_actions_destroy, |
| __posix_spawn_file_actions_init, __posix_spawnattr_init, |
| __posix_spawnattr_destroy, __posix_spawnattr_setflags, |
| __posix_spawnattr_setsigdefault, __posix_spawnattr_setsigmask): New |
| prototype. |
| * posix/spawn.c (__posix_spawn): Add libc_hidden_def. |
| * posix/spawn_faction_addclose.c |
| (__posix_spawn_file_actions_addclose): Add hidden definition. |
| * posix/spawn_faction_adddup2.c |
| (__posix_spawn_file_actions_adddup2): Likewise. |
| * posix/spawn_faction_destroy.c |
| (__posix_spawn_file_actions_destroy): Likewise. |
| * posix/spawn_faction_init.c (__posix_spawn_file_actions_init): |
| Likewise. |
| * posix/spawnattr_destroy.c (__posix_spawnattr_destroy): Likewise. |
| * posix/spawnattr_init.c (__posix_spawnattr_init): Likewise. |
| * posix/spawnattr_setdefault.c (__posix_spawnattr_setsigdefault): |
| Likewise. |
| * posix/spawnattr_setflags.c (__posix_spawnattr_setflags): Likewise. |
| * posix/spawnattr_setsigmask.c (__posix_spawnattr_setsigmask): |
| Likewise. |
| |
| diff --git a/include/spawn.h b/include/spawn.h |
| index a6c7a8adc361927e..7fdd965bd780f8de 100644 |
| |
| |
| @@ -1 +1,36 @@ |
| +#ifndef _SPAWN_H |
| #include <posix/spawn.h> |
| + |
| +# ifndef _ISOMAC |
| +__typeof (posix_spawn) __posix_spawn; |
| +libc_hidden_proto (__posix_spawn) |
| + |
| +__typeof (posix_spawn_file_actions_addclose) |
| + __posix_spawn_file_actions_addclose attribute_hidden; |
| + |
| +__typeof (posix_spawn_file_actions_adddup2) |
| + __posix_spawn_file_actions_adddup2 attribute_hidden; |
| + |
| +__typeof (posix_spawn_file_actions_destroy) |
| + __posix_spawn_file_actions_destroy attribute_hidden; |
| + |
| +__typeof (posix_spawn_file_actions_init) __posix_spawn_file_actions_init |
| + attribute_hidden; |
| + |
| +__typeof (posix_spawnattr_init) __posix_spawnattr_init |
| + attribute_hidden; |
| + |
| +__typeof (posix_spawnattr_destroy) __posix_spawnattr_destroy |
| + attribute_hidden; |
| + |
| +__typeof (posix_spawnattr_setflags) __posix_spawnattr_setflags |
| + attribute_hidden; |
| + |
| +__typeof (posix_spawnattr_setsigdefault) __posix_spawnattr_setsigdefault |
| + attribute_hidden; |
| + |
| +__typeof (posix_spawnattr_setsigmask) __posix_spawnattr_setsigmask |
| + attribute_hidden; |
| + |
| +# endif /* !_ISOMAC */ |
| +#endif /* spawn.h */ |
| diff --git a/posix/spawn.c b/posix/spawn.c |
| index 51f67b2755bd4949..a82f1c84e299f018 100644 |
| |
| |
| @@ -30,6 +30,7 @@ __posix_spawn (pid_t *pid, const char *path, |
| return __spawni (pid, path, file_actions, attrp, argv, envp, 0); |
| } |
| versioned_symbol (libc, __posix_spawn, posix_spawn, GLIBC_2_15); |
| +libc_hidden_def (__posix_spawn) |
| |
| |
| #if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_15) |
| diff --git a/posix/spawn_faction_addclose.c b/posix/spawn_faction_addclose.c |
| index 21081e19b55db44c..e1fafe438cf15c91 100644 |
| |
| |
| @@ -24,8 +24,8 @@ |
| /* Add an action to FILE-ACTIONS which tells the implementation to call |
| `close' for the given file descriptor during the `spawn' call. */ |
| int |
| -posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *file_actions, |
| - int fd) |
| +__posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *file_actions, |
| + int fd) |
| { |
| struct __spawn_action *rec; |
| |
| @@ -48,3 +48,5 @@ posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *file_actions, |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawn_file_actions_addclose, |
| + posix_spawn_file_actions_addclose) |
| diff --git a/posix/spawn_faction_adddup2.c b/posix/spawn_faction_adddup2.c |
| index 363bc29ae502bd60..371b1de3e6f1979a 100644 |
| |
| |
| @@ -24,8 +24,8 @@ |
| /* Add an action to FILE-ACTIONS which tells the implementation to call |
| `dup2' for the given file descriptors during the `spawn' call. */ |
| int |
| -posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *file_actions, |
| - int fd, int newfd) |
| +__posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *file_actions, |
| + int fd, int newfd) |
| { |
| struct __spawn_action *rec; |
| |
| @@ -49,3 +49,5 @@ posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *file_actions, |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawn_file_actions_adddup2, |
| + posix_spawn_file_actions_adddup2) |
| diff --git a/posix/spawn_faction_destroy.c b/posix/spawn_faction_destroy.c |
| index 46061ee3473d4475..2a2de4e41d6bd6d0 100644 |
| |
| |
| @@ -22,7 +22,7 @@ |
| |
| /* Deallocate the file actions. */ |
| int |
| -posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *file_actions) |
| +__posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *file_actions) |
| { |
| /* Free the paths in the open actions. */ |
| for (int i = 0; i < file_actions->__used; ++i) |
| @@ -44,3 +44,5 @@ posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *file_actions) |
| free (file_actions->__actions); |
| return 0; |
| } |
| +weak_alias (__posix_spawn_file_actions_destroy, |
| + posix_spawn_file_actions_destroy) |
| diff --git a/posix/spawn_faction_init.c b/posix/spawn_faction_init.c |
| index ddb42e6a77ba41ec..98432067c645021e 100644 |
| |
| |
| @@ -45,9 +45,10 @@ __posix_spawn_file_actions_realloc (posix_spawn_file_actions_t *file_actions) |
| |
| /* Initialize data structure for file attribute for `spawn' call. */ |
| int |
| -posix_spawn_file_actions_init (posix_spawn_file_actions_t *file_actions) |
| +__posix_spawn_file_actions_init (posix_spawn_file_actions_t *file_actions) |
| { |
| /* Simply clear all the elements. */ |
| memset (file_actions, '\0', sizeof (*file_actions)); |
| return 0; |
| } |
| +weak_alias (__posix_spawn_file_actions_init, posix_spawn_file_actions_init) |
| diff --git a/posix/spawnattr_destroy.c b/posix/spawnattr_destroy.c |
| index 603e00fffefae2bf..043386778588913a 100644 |
| |
| |
| @@ -19,8 +19,9 @@ |
| |
| /* Initialize data structure for file attribute for `spawn' call. */ |
| int |
| -posix_spawnattr_destroy (posix_spawnattr_t *attr) |
| +__posix_spawnattr_destroy (posix_spawnattr_t *attr) |
| { |
| /* Nothing to do in the moment. */ |
| return 0; |
| } |
| +weak_alias (__posix_spawnattr_destroy, posix_spawnattr_destroy) |
| diff --git a/posix/spawnattr_init.c b/posix/spawnattr_init.c |
| index bab464e62bdf7889..4e1218ab44e3f779 100644 |
| |
| |
| @@ -20,7 +20,7 @@ |
| |
| /* Initialize data structure for file attribute for `spawn' call. */ |
| int |
| -posix_spawnattr_init (posix_spawnattr_t *attr) |
| +__posix_spawnattr_init (posix_spawnattr_t *attr) |
| { |
| /* All elements have to be initialized to the default values which |
| is generally zero. */ |
| @@ -28,3 +28,4 @@ posix_spawnattr_init (posix_spawnattr_t *attr) |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawnattr_init, posix_spawnattr_init) |
| diff --git a/posix/spawnattr_setdefault.c b/posix/spawnattr_setdefault.c |
| index c77cda59be3dda20..174bcfa423dc5666 100644 |
| |
| |
| @@ -20,11 +20,12 @@ |
| |
| /* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */ |
| int |
| -posix_spawnattr_setsigdefault (posix_spawnattr_t *attr, |
| - const sigset_t *sigdefault) |
| +__posix_spawnattr_setsigdefault (posix_spawnattr_t *attr, |
| + const sigset_t *sigdefault) |
| { |
| /* Copy the sigset_t data to the user buffer. */ |
| memcpy (&attr->__sd, sigdefault, sizeof (sigset_t)); |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawnattr_setsigdefault, posix_spawnattr_setsigdefault) |
| diff --git a/posix/spawnattr_setflags.c b/posix/spawnattr_setflags.c |
| index cf9a60181dc91ccd..0a42e94770224a94 100644 |
| |
| |
| @@ -30,7 +30,7 @@ |
| |
| /* Store flags in the attribute structure. */ |
| int |
| -posix_spawnattr_setflags (posix_spawnattr_t *attr, short int flags) |
| +__posix_spawnattr_setflags (posix_spawnattr_t *attr, short int flags) |
| { |
| /* Check no invalid bits are set. */ |
| if (flags & ~ALL_FLAGS) |
| @@ -41,3 +41,4 @@ posix_spawnattr_setflags (posix_spawnattr_t *attr, short int flags) |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawnattr_setflags, posix_spawnattr_setflags) |
| diff --git a/posix/spawnattr_setsigmask.c b/posix/spawnattr_setsigmask.c |
| index 7ae81ad47025db6f..12c0111af441dd13 100644 |
| |
| |
| @@ -20,7 +20,7 @@ |
| |
| /* Set signal mask for the new process in ATTR to SIGMASK. */ |
| int |
| -posix_spawnattr_setsigmask (posix_spawnattr_t *attr, |
| +__posix_spawnattr_setsigmask (posix_spawnattr_t *attr, |
| const sigset_t *sigmask) |
| { |
| /* Copy the sigset_t data to the user buffer. */ |
| @@ -28,3 +28,4 @@ posix_spawnattr_setsigmask (posix_spawnattr_t *attr, |
| |
| return 0; |
| } |
| +weak_alias (__posix_spawnattr_setsigmask, posix_spawnattr_setsigmask) |