diff options
author | Richard Henderson <rth@twiddle.net> | 2014-05-23 16:03:28 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2014-05-23 21:33:05 -0700 |
commit | 900e445fad9bf301a42c0d0008cce504ad94050e (patch) | |
tree | 43c62ecb9a4b82947a1a0daa8c350ebd341d6049 /nptl | |
parent | 8820e3acc3bb95b9b0921fe0c0711aae19f1da94 (diff) | |
download | glibc-900e445fad9bf301a42c0d0008cce504ad94050e.tar glibc-900e445fad9bf301a42c0d0008cce504ad94050e.tar.gz glibc-900e445fad9bf301a42c0d0008cce504ad94050e.tar.bz2 glibc-900e445fad9bf301a42c0d0008cce504ad94050e.zip |
Only provide non-default symbols in libpthread for vfork
* nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
(vfork, __vfork): Define via compat_symbol.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/pt-vfork.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/nptl/pt-vfork.c b/nptl/pt-vfork.c index eaffe48f53..f3858c2648 100644 --- a/nptl/pt-vfork.c +++ b/nptl/pt-vfork.c @@ -46,30 +46,32 @@ extern __typeof (vfork) __libc_vfork; /* Defined in libc. */ -attribute_hidden __attribute__ ((used)) -__typeof (vfork) * -vfork_ifunc (void) +static __typeof (vfork) * +__attribute__ ((used)) +vfork_resolve (void) { return &__libc_vfork; } # ifdef HAVE_ASM_SET_DIRECTIVE # define DEFINE_VFORK(name) \ - asm (".set " #name ", vfork_ifunc\n" \ + asm (".set " #name ", vfork_resolve\n" \ ".globl " #name "\n" \ ".type " #name ", %gnu_indirect_function"); # else # define DEFINE_VFORK(name) \ - asm (#name " = vfork_ifunc\n" \ + asm (#name " = vfork_resolve\n" \ ".globl " #name "\n" \ ".type " #name ", %gnu_indirect_function"); # endif #endif #if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20) -DEFINE_VFORK (vfork) +DEFINE_VFORK (vfork_ifunc) +compat_symbol (libpthread, vfork_ifunc, vfork, GLIBC_2_0); #endif #if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20) -DEFINE_VFORK (__vfork) +DEFINE_VFORK (__vfork_ifunc) +compat_symbol (libpthread, __vfork_ifunc, __vfork, GLIBC_2_1_2); #endif |