| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
POSIX and C++11 require that a thread can destroy a mutex if no other
thread owns the mutex, is blocked on the mutex, or will try to acquire
it in the future. After destroying the mutex, it can reuse or unmap the
underlying memory. Thus, we must not access a mutex' memory after
releasing it. Currently, we can load the private flag after releasing
the mutex, which is fixed by this patch.
See https://sourceware.org/bugzilla/show_bug.cgi?id=13690 for more
background.
We need to call futex_wake on the lock after releasing it, however. This
is by design, and can lead to spurious wake-ups on unrelated futex words
(e.g., when the mutex memory is reused for another mutex). This behavior
is documented in the glibc-internal futex API and in recent drafts of the
Linux kernel's futex documentation (see the draft_futex branch of
git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The tst-cancel20 open two pipes and creates a thread which blocks
reading the first pipe. It then issues a signal to activate the
signal handler which in turn blocks reading the second pipe end.
Finally the cancellation cleanup-up handlers are tested by first
closing the all the pipes ends and issuing a pthread_cancel.
The tst-cancel21 have a similar behavior, but use an extra fork
after the test itself.
The race condition occurs if the cancellation handling acts after the
pipe close: in this case read will return EOF (indicating side-effects)
and thus the cancellation must not act. However current GLIBC
cancellation behavior acts regardless the syscalls returns with
sid-effects.
This patch adjust the test by moving the pipe closing after the
cancellation handling. This avoid spurious cancellation if the case
of the race described.
Checked on x86_64 and i386.
* nptl/tst-cancel20.c (do_one_test): Move the pipe closing after
pthread_join.
* nptl/tst-cancel21.c (tf): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With current kernel versions, the check does not reliably detect that
unavailable CPUs are requested, for these reasons:
(1) The kernel will silently ignore non-allowed CPUs, that is, CPUs
which are physically present but disallowed for the thread
based on system configuration.
(2) Similarly, CPU bits which lack an online CPU (possible CPUs)
are ignored.
(3) The existing probing code assumes that the CPU mask size is a
power of two and at least 1024. Neither has it to be a power
of two, nor is the minimum possible value 1024, so the value
determined is often too large. This means that the CPU set
size check in glibc accepts CPU bits beyond the actual hard
system limit.
(4) Future kernel versions may not even have a fixed CPU set size.
After the removal of the probing code, the kernel still returns
EINVAL if no CPU in the requested set remains which can run the
thread after the affinity change.
Applications which care about the exact affinity mask will have
to query it using sched_getaffinity after setting it. Due to the
effects described above, this commit does not change this.
The new tests supersede tst-getcpu, which is removed. This
addresses bug 19164 because the new tests allocate CPU sets
dynamically.
* nptl/check-cpuset.h: Remove.
* nptl/pthread_attr_setaffinity.c (__pthread_attr_setaffinity_new):
Remove CPU set size check.
* nptl/pthread_setattr_default_np.c (pthread_setattr_default_np):
Likewise.
* sysdeps/unix/sysv/linux/check-cpuset.h: Remove.
* sysdeps/unix/sysv/linux/pthread_setaffinity.c
(__kernel_cpumask_size, __determine_cpumask_size): Remove.
(__pthread_setaffinity_new): Remove CPU set size check.
* sysdeps/unix/sysv/linux/sched_setaffinity.c
(__kernel_cpumask_size): Remove.
(__sched_setaffinity_new): Remove CPU set size check.
* manual/threads.texi (Default Thread Attributes): Remove stale
reference to check_cpuset_attr, determine_cpumask_size in comment.
* sysdeps/unix/sysv/linux/Makefile [$(subdir) == posix] (tests):
Remove tst-getcpu. Add tst-affinity, tst-affinity-pid.
[$(subdir) == nptl] (tests): Add tst-thread-affinity-pthread,
tst-thread-affinity-pthread2, tst-thread-affinity-sched.
* sysdeps/unix/sysv/linux/tst-affinity.c: New file.
* sysdeps/unix/sysv/linux/tst-affinity-pid.c: New file.
* sysdeps/unix/sysv/linux/tst-skeleton-affinity.c: New skeleton test file.
* sysdeps/unix/sysv/linux/tst-thread-affinity-sched.c: New file.
* sysdeps/unix/sysv/linux/tst-thread-affinity-pthread.c: New file.
* sysdeps/unix/sysv/linux/tst-thread-affinity-pthread2.c: New file.
* sysdeps/unix/sysv/linux/tst-thread-skeleton-affinity.c: New
skeleton test file.
* sysdeps/unix/sysv/linux/tst-getcpu.c: Remove. Superseded by
tst-affinity-pid.
|
|
|
|
| |
Martin Sebor confirmed that this attribution was inserted by mistake.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NPTL has tests that initializers work with various -std= options. Now
that we can rely on -std=gnu11 and -std=c11 being available, this
patch adds versions of those tests for those options.
Tested for x86_64 and x86 (testsuite).
* nptl/tst-initializers1-c11.c: New file.
* nptl/tst-initializers1-gnu11.c: Likewise.
* nptl/Makefile (tests): Add these new tests.
(CFLAGS-tst-initializers1-c11.c): New variable.
(CFLAGS-tst-initializers1-gnu11.c): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sysdeps/nptl/configure.ac tests for forced unwind support and the C
cleanup attribute, giving errors if either is unsupported. It does
nothing beyond running those two tests.
Both the attribute, and _Unwind_GetCFA which is used in the forced
unwind test, were added in GCC 3.3. Thus these tests are long
obsolete, and this patch removes the configure fragment running them,
along with associated conditionals.
Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).
* sysdeps/nptl/configure.ac: Remove file.
* sysdeps/nptl/configure: Remove generated file.
* configure.ac (libc_cv_forced_unwind): Do not substitute.
* configure: Regenerated.
* config.h.in (HAVE_FORCED_UNWIND): Remove #undef.
* config.make.in (have-forced-unwind): Remove variable.
* nptl/Makefile [$(have-forced-unwind) = yes]: Make code
unconditional.
* nptl/descr.h [HAVE_FORCED_UNWIND]: Likewise.
* nptl/unwind.c [HAVE_FORCED_UNWIND]: Likewise.
(__pthread_unwind) [!HAVE_FORCED_UNWIND]: Remove conditional code.
* nptl/version.c [HAVE_FORCED_UNWIND]: Make code unconditional.
* sysdeps/nptl/Makefile [$(have-forced-unwind) = yes]: Make code
unconditional.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch converts various miscellaneous functions definitions in
glibc, found with grep and not covered by my previous scripted
conversions, from old-style K&R to prototype-style. These changes
were made manually. This is not necessarily exhaustive as formatting
variants may have prevented my grep from finding some such
definitions.
Regarding the changes to files from GMP, they may originally have been
omitted when removing __STDC__ conditionals because of the files
coming from another package, but (a) GMP no longer has __STDC__
conditionals there anyway and (b) we don't try to keep these files
verbatim in sync with GMP (and there are licensing differences), so
making the change to them in glibc seems reasonable.
Tested for x86_64 and x86 (testsuite - this patch affects files
containing assertions).
* debug/fortify_fail.c (__fortify_fail): Convert to
prototype-style function definition. Use internal_function.
* libio/genops.c (save_for_backup): Convert to prototype-style
function definition.
* libio/wgenops.c (save_for_wbackup): Likewise.
* login/grantpt.c (grantpt): Likewise.
* login/ptsname.c (ptsname): Likewise.
(__ptsname_r): Likewise.
* login/unlockpt.c (unlockpt): Likewise.
* mach/msgserver.c (__mach_msg_server): Likewise.
* misc/efgcvt.c (__APPEND (FUNC_PREFIX, fcvt)): Likewise.
(__APPEND (FUNC_PREFIX, ecvt)): Likewise.
(__APPEND (FUNC_PREFIX, gcvt)): Likewise.
* misc/efgcvt_r.c (__APPEND (FUNC_PREFIX, fcvt_r)): Likewise.
(__APPEND (FUNC_PREFIX, ecvt_r)): Likewise.
* nptl/cleanup_compat.c (_pthread_cleanup_push): Likewise.
* nptl/cleanup_defer_compat.c (_pthread_cleanup_push_defer):
Likewise.
* nptl/libc_pthread_init.c (__libc_pthread_init): Likewise. Use
internal_function.
* nptl/pthread_atfork.c (__pthread_atfork): Convert to
prototype-style function definition.
* nptl/pthread_create.c (__pthread_create_2_1): Likewise.
[SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)]
(__pthread_create_2_0): Likewise.
* nptl/pthread_key_create.c (__pthread_key_create): Likewise.
* nptl/register-atfork.c (__register_atfork): Likewise.
* posix/glob.c (glob): Likewise.
* posix/regcomp.c (re_comp): Likewise.
* posix/regexec.c (re_exec): Likewise.
* stdlib/add_n.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/cmp.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/divmod_1.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/divrem.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/lshift.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/mod_1.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/mul.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/mul_n.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/rshift.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* stdlib/strtod.c (INTERNAL (STRTOF)): Convert to prototype-style
function definition.
(STRTOF): Likewise.
* stdlib/strtod_l.c (__STRTOF): Likewise.
* stdlib/strtol.c (INTERNAL (strtol)): Likewise.
* stdlib/strtol_l.c (INTERNAL (__strtol_l)): Likewise.
(__strtol_l): Likewise.
* stdlib/sub_n.c [__STDC__]: Make code unconditional.
[!__STDC__]: Remove conditional code.
* string/memrchr.c (MEMRCHR): Convert to prototype-style function
definition.
* string/strcasecmp.c (LOCALE_PARAM_DECL): Remove macro.
[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
type.
(__strcasecmp): Convert to prototype-style function definition.
* string/strncase.c (LOCALE_PARAM_DECL): Remove macro.
[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
type.
(__strncasecmp): Convert to prototype-style function definition.
* sunrpc/pm_getport.c (__libc_rpc_getport): Likewise.
* sunrpc/xdr.c (xdr_union): Likewise.
* sunrpc/xdr_array.c (xdr_array): Likewise.
* sunrpc/xdr_ref.c (xdr_reference): Likewise.
* sysdeps/m68k/m680x0/fpu/s_atan.c (__CONCATX(__,FUNC)): Likewise.
* sysdeps/m68k/m680x0/fpu/s_isinf.c (__CONCATX(__,FUNC)):
Likewise.
* sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(__scalbn,suffix):
Likewise.
* sysdeps/m68k/m680x0/fpu/s_sincos.c (CONCATX(__,FUNC)): Likewise.
* sysdeps/unix/sysv/linux/i386/scandir64.c (__old_scandir64):
Likewise.
* time/strftime_l.c (LOCALE_PARAM_DECL): Remove macro.
(LOCALE_PARAM_PROTO): Likewise.
[_LIBC && USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include
argument type.
(ut_argument_spec): Remove macro.
(ut_argument_spec_iso): Rename to ut_argument_spec.
(memcpy_lowcase): Use LOCALE_PARAM in declaration. Convert to
prototype-style function definition.
(memcpy_uppcase): Likewise.
(__strftime_internal): Likewise.
(my_strftime): Likewise.
* time/strptime_l.c (LOCALE_PARAM_PROTO): Remove macro.
(LOCALE_PARAM_DECL): Likewise.
[_LIBC] (LOCALE_PARAM): Include argument type.
(__strptime_internal): Convert to prototype-style function
definition.
(strptime): Likewise.
* wcsmbs/wcscasecmp.c (LOCALE_PARAM_DECL): Remove macro.
[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
type.
(__wcscasecmp): Convert to prototype-style function definition.
* wcsmbs/wcsncase.c (LOCALE_PARAM_DECL): Remove macro.
[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
type.
(__wcsncasecmp): Convert to prototype-style function definition.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
assertions).
This mostly automatically-generated patch converts 113 function
definitions in glibc from old-style K&R to prototype-style. Following
my other recent such patches, this one deals with the case of function
definitions in files that either contain assertions or where grep
suggested they might contain assertions - and thus where it isn't
possible to use a simple object code comparison as a sanity check on
the correctness of the patch, because line numbers are changed.
A few such automatically-generated changes needed to be supplemented
by manual changes for the result to compile. openat64 had a prototype
declaration with "..." but an old-style definition in
sysdeps/unix/sysv/linux/dl-openat64.c, and "..." needed adding to the
generated prototype in the definition (I've filed
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68024> for diagnosing
such cases in GCC; the old state was undefined behavior not requiring
a diagnostic, but one seems a good idea). In addition, as Florian has
noted regparm attribute mismatches between declaration and definition
are only diagnosed for prototype definitions, and five functions
needed internal_function added to their definitions (in the case of
__pthread_mutex_cond_lock, via the macro definition of
__pthread_mutex_lock) to compile on i386.
After this patch is in, remaining old-style definitions are probably
most readily fixed manually before we can turn on
-Wold-style-definition for all builds.
Tested for x86_64 and x86 (testsuite).
* crypt/md5-crypt.c (__md5_crypt_r): Convert to prototype-style
function definition.
* crypt/sha256-crypt.c (__sha256_crypt_r): Likewise.
* crypt/sha512-crypt.c (__sha512_crypt_r): Likewise.
* debug/backtracesyms.c (__backtrace_symbols): Likewise.
* elf/dl-minimal.c (_itoa): Likewise.
* hurd/hurdmalloc.c (malloc): Likewise.
(free): Likewise.
(realloc): Likewise.
* inet/inet6_option.c (inet6_option_space): Likewise.
(inet6_option_init): Likewise.
(inet6_option_append): Likewise.
(inet6_option_alloc): Likewise.
(inet6_option_next): Likewise.
(inet6_option_find): Likewise.
* io/ftw.c (FTW_NAME): Likewise.
(NFTW_NAME): Likewise.
(NFTW_NEW_NAME): Likewise.
(NFTW_OLD_NAME): Likewise.
* libio/iofwide.c (_IO_fwide): Likewise.
* libio/strops.c (_IO_str_init_static_internal): Likewise.
(_IO_str_init_static): Likewise.
(_IO_str_init_readonly): Likewise.
(_IO_str_overflow): Likewise.
(_IO_str_underflow): Likewise.
(_IO_str_count): Likewise.
(_IO_str_seekoff): Likewise.
(_IO_str_pbackfail): Likewise.
(_IO_str_finish): Likewise.
* libio/wstrops.c (_IO_wstr_init_static): Likewise.
(_IO_wstr_overflow): Likewise.
(_IO_wstr_underflow): Likewise.
(_IO_wstr_count): Likewise.
(_IO_wstr_seekoff): Likewise.
(_IO_wstr_pbackfail): Likewise.
(_IO_wstr_finish): Likewise.
* locale/programs/localedef.c (normalize_codeset): Likewise.
* locale/programs/locarchive.c (add_locale_to_archive): Likewise.
(add_locales_to_archive): Likewise.
(delete_locales_from_archive): Likewise.
* malloc/malloc.c (__libc_mallinfo): Likewise.
* math/gen-auto-libm-tests.c (init_fp_formats): Likewise.
* misc/tsearch.c (__tfind): Likewise.
* nptl/pthread_attr_destroy.c (__pthread_attr_destroy): Likewise.
* nptl/pthread_attr_getdetachstate.c
(__pthread_attr_getdetachstate): Likewise.
* nptl/pthread_attr_getguardsize.c (pthread_attr_getguardsize):
Likewise.
* nptl/pthread_attr_getinheritsched.c
(__pthread_attr_getinheritsched): Likewise.
* nptl/pthread_attr_getschedparam.c
(__pthread_attr_getschedparam): Likewise.
* nptl/pthread_attr_getschedpolicy.c
(__pthread_attr_getschedpolicy): Likewise.
* nptl/pthread_attr_getscope.c (__pthread_attr_getscope):
Likewise.
* nptl/pthread_attr_getstack.c (__pthread_attr_getstack):
Likewise.
* nptl/pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr):
Likewise.
* nptl/pthread_attr_getstacksize.c (__pthread_attr_getstacksize):
Likewise.
* nptl/pthread_attr_init.c (__pthread_attr_init_2_1): Likewise.
(__pthread_attr_init_2_0): Likewise.
* nptl/pthread_attr_setdetachstate.c
(__pthread_attr_setdetachstate): Likewise.
* nptl/pthread_attr_setguardsize.c (pthread_attr_setguardsize):
Likewise.
* nptl/pthread_attr_setinheritsched.c
(__pthread_attr_setinheritsched): Likewise.
* nptl/pthread_attr_setschedparam.c
(__pthread_attr_setschedparam): Likewise.
* nptl/pthread_attr_setschedpolicy.c
(__pthread_attr_setschedpolicy): Likewise.
* nptl/pthread_attr_setscope.c (__pthread_attr_setscope):
Likewise.
* nptl/pthread_attr_setstack.c (__pthread_attr_setstack):
Likewise.
* nptl/pthread_attr_setstackaddr.c (__pthread_attr_setstackaddr):
Likewise.
* nptl/pthread_attr_setstacksize.c (__pthread_attr_setstacksize):
Likewise.
* nptl/pthread_condattr_setclock.c (pthread_condattr_setclock):
Likewise.
* nptl/pthread_create.c (__find_in_stack_list): Likewise.
* nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise.
* nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Define to
use internal_function.
* nptl/pthread_mutex_init.c (__pthread_mutex_init): Convert to
prototype-style function definition.
* nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise.
(__pthread_mutex_cond_lock_adjust): Likewise. Use
internal_function.
* nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock):
Convert to prototype-style function definition.
* nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
Likewise.
* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
Likewise.
(__pthread_mutex_unlock): Likewise.
* nptl_db/td_ta_clear_event.c (td_ta_clear_event): Likewise.
* nptl_db/td_ta_set_event.c (td_ta_set_event): Likewise.
* nptl_db/td_thr_clear_event.c (td_thr_clear_event): Likewise.
* nptl_db/td_thr_event_enable.c (td_thr_event_enable): Likewise.
* nptl_db/td_thr_set_event.c (td_thr_set_event): Likewise.
* nss/makedb.c (process_input): Likewise.
* posix/fnmatch.c (__strchrnul): Likewise.
(__wcschrnul): Likewise.
(fnmatch): Likewise.
* posix/fnmatch_loop.c (FCT): Likewise.
* posix/glob.c (globfree): Likewise.
(__glob_pattern_type): Likewise.
(__glob_pattern_p): Likewise.
* posix/regcomp.c (re_compile_pattern): Likewise.
(re_set_syntax): Likewise.
(re_compile_fastmap): Likewise.
(regcomp): Likewise.
(regerror): Likewise.
(regfree): Likewise.
* posix/regexec.c (regexec): Likewise.
(re_match): Likewise.
(re_search): Likewise.
(re_match_2): Likewise.
(re_search_2): Likewise.
(re_search_stub): Likewise. Use internal_function
(re_copy_regs): Likewise.
(re_set_registers): Convert to prototype-style function
definition.
(prune_impossible_nodes): Likewise. Use internal_function.
* resolv/inet_net_pton.c (inet_net_pton): Convert to
prototype-style function definition.
(inet_net_pton_ipv4): Likewise.
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Likewise.
* sysdeps/pthread/aio_cancel.c (aio_cancel): Likewise.
* sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise.
* sysdeps/pthread/timer_delete.c (timer_delete): Likewise.
* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
Make variadic.
* time/strptime_l.c (localtime_r): Convert to prototype-style
function definition.
* wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Likewise.
* wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Likewise.
* wcsmbs/wcsnrtombs.c (__wcsnrtombs): Likewise.
* wcsmbs/wcsrtombs.c (__wcsrtombs): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This automatically-generated patch converts 69 function definitions in
glibc from old-style K&R to prototype-style.
This patch, covering both sysdeps and non-sysdeps files, deals with
cases where the prototype needed to be wrapped over more than one
line. Otherwise, exclusions and caveats are as for
<https://sourceware.org/ml/libc-alpha/2015-10/msg00594.html> and
<https://sourceware.org/ml/libc-alpha/2015-10/msg00599.html>.
Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).
* crypt/crypt-entry.c (__crypt_r): Convert to prototype-style
function definition.
* crypt/crypt_util.c (__encrypt_r): Likewise.
* libio/genops.c (_IO_no_init): Likewise.
* libio/iofopncook.c (_IO_fopencookie): Likewise.
(_IO_old_fopencookie): Likewise.
* libio/iofwrite_u.c (fwrite_unlocked): Likewise.
* libio/iogetline.c (_IO_getline): Likewise.
(_IO_getline_info): Likewise.
* libio/iogetwline.c (_IO_getwline): Likewise.
(_IO_getwline_info): Likewise.
* libio/vsnprintf.c (_IO_vsnprintf): Likewise.
* libio/vswprintf.c (_IO_vswprintf): Likewise.
* locale/programs/simple-hash.c (insert_entry_2): Likewise.
(find_entry): Likewise.
(iterate_table): Likewise.
(lookup): Likewise.
* login/forkpty.c (forkpty): Likewise.
* misc/hsearch_r.c (__hsearch_r): Likewise.
* misc/select.c (__select): Likewise.
* nptl/cleanup_defer_compat.c (_pthread_cleanup_pop_restore):
Likewise.
* nptl/old_pthread_cond_init.c (__pthread_cond_init_2_0):
Likewise.
* nptl/old_pthread_cond_timedwait.c
(__pthread_cond_timedwait_2_0): Likewise.
* nptl/pthread_barrier_init.c (__pthread_barrier_init): Likewise.
* nptl/pthread_barrierattr_getpshared.c
(pthread_barrierattr_getpshared): Likewise.
* nptl/pthread_getschedparam.c (__pthread_getschedparam):
Likewise.
* nptl/pthread_mutex_setprioceiling.c
(pthread_mutex_setprioceiling): Likewise.
* nptl/pthread_mutexattr_getprioceiling.c
(pthread_mutexattr_getprioceiling): Likewise.
* nptl/pthread_rwlock_init.c (__pthread_rwlock_init): Likewise.
* nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
Likewise.
* nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
Likewise.
* nptl/pthread_setschedparam.c (__pthread_setschedparam):
Likewise.
* socket/recvfrom.c (__recvfrom): Likewise.
* socket/sendto.c (__sendto): Likewise.
* socket/setsockopt.c (__setsockopt): Likewise.
* stdio-common/_itoa.c (_itoa): Likewise.
* stdio-common/_itowa.c (_itowa): Likewise.
* stdio-common/reg-printf.c (__register_printf_specifier):
Likewise.
(__register_printf_function): Likewise.
* stdio-common/tempname.c (__path_search): Likewise.
* stdlib/addmul_1.c (mpn_addmul_1): Likewise.
* stdlib/mul_1.c (mpn_mul_1): Likewise.
* stdlib/random_r.c (__initstate_r): Likewise.
* stdlib/setenv.c (__add_to_environ): Likewise.
* stdlib/submul_1.c (mpn_submul_1): Likewise.
* streams/getpmsg.c (getpmsg): Likewise.
* streams/putmsg.c (putmsg): Likewise.
* streams/putpmsg.c (putpmsg): Likewise.
* sunrpc/clnt_raw.c (clntraw_call): Likewise.
* sunrpc/clnt_tcp.c (clnttcp_call): Likewise.
* sunrpc/clnt_udp.c (clntudp_create): Likewise.
* sunrpc/clnt_unix.c (clntunix_call): Likewise.
* sunrpc/pm_getport.c (pmap_getport): Likewise.
* sunrpc/svc_udp.c (cache_get): Likewise.
* sunrpc/xdr_array.c (xdr_vector): Likewise.
* sysdeps/mach/hurd/getcwd.c
(__canonicalize_directory_name_internal): Likewise.
* sysdeps/mach/hurd/pselect.c (__pselect): Likewise.
* sysdeps/mach/hurd/recvfrom.c (__recvfrom): Likewise.
* sysdeps/mach/hurd/select.c (__select): Likewise.
* sysdeps/posix/ttyname_r.c (getttyname_r): Likewise.
* sysdeps/pthread/timer_settime.c (timer_settime): Likewise.
* sysdeps/sparc/nptl/pthread_barrier_init.c
(__pthread_barrier_init): Likewise.
* sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c
(__pthread_cond_timedwait): Likewise.
* sysdeps/unix/sysv/linux/i386/putmsg.c (putmsg): Likewise.
* sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop):
Likewise.
* sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Likewise.
* sysdeps/unix/sysv/linux/timer_settime.c (timer_settime):
Likewise.
* sysvipc/semtimedop.c (semtimedop): Likewise.
* time/setitimer.c (__setitimer): Likewise.
* time/strftime_l.c (emacs_strftime): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This automatically-generated patch converts 703 function definitions
in glibc from old-style K&R to prototype-style.
This conversion is deliberately simplistic, excluding any tricky cases
as even a patch covering only simple cases is still very large.
Currently excluded are: sysdeps files (to improve test coverage for
the initial patch); files containing assertions (to avoid line number
changes so that generated libraries can be compared); any cases where
the generated function declaration would involve lines over 79
characters and so need to be wrapped; any cases with array parameters
or other cases where parameter declarators don't end with the
parameter name; any other cases that my script didn't parse.
I didn't try to make the ChangeLog generation indicate when function
definitions are conditional; it just lists the functions changed
without regard to that.
Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).
* crypt/cert.c (good_bye): Convert to prototype-style function
definition.
(get8): Likewise.
(put8): Likewise.
* crypt/crypt-entry.c (crypt): Likewise.
(__fcrypt): Likewise.
* crypt/crypt_util.c (_ufc_prbits): Likewise.
(_ufc_set_bits): Likewise.
(_ufc_clearmem): Likewise.
(__init_des_r): Likewise.
(shuffle_sb): Likewise.
(shuffle_sb): Likewise.
(_ufc_setup_salt_r): Likewise.
(_ufc_mk_keytab_r): Likewise.
(_ufc_dofinalperm_r): Likewise.
(encrypt): Likewise.
(__setkey_r): Likewise.
(setkey): Likewise.
* crypt/md5.c (md5_init_ctx): Likewise.
(md5_read_ctx): Likewise.
(md5_finish_ctx): Likewise.
(md5_stream): Likewise.
(md5_buffer): Likewise.
(md5_process_bytes): Likewise.
* crypt/sha256.c (__sha256_init_ctx): Likewise.
(__sha256_finish_ctx): Likewise.
(__sha256_process_bytes): Likewise.
* crypt/sha512.c (__sha512_init_ctx): Likewise.
(__sha512_finish_ctx): Likewise.
(__sha512_process_bytes): Likewise.
* ctype/isctype.c (__isctype): Likewise.
* debug/backtrace.c (__backtrace): Likewise.
* debug/backtracesymsfd.c (__backtrace_symbols_fd): Likewise.
* debug/fgets_chk.c (__fgets_chk): Likewise.
* debug/fgets_u_chk.c (__fgets_unlocked_chk): Likewise.
* debug/memcpy_chk.c (__memcpy_chk): Likewise.
* debug/memmove_chk.c (MEMMOVE_CHK): Likewise.
* debug/mempcpy_chk.c (__mempcpy_chk): Likewise.
* debug/memset_chk.c (__memset_chk): Likewise.
* debug/strcat_chk.c (__strcat_chk): Likewise.
* debug/strncat_chk.c (__strncat_chk): Likewise.
* debug/strncpy_chk.c (__strncpy_chk): Likewise.
* debug/vsprintf_chk.c (_IO_str_chk_overflow): Likewise.
* dirent/dirfd.c (dirfd): Likewise.
* dirent/getdents.c (__getdirentries): Likewise.
* dirent/getdents64.c (getdirentries64): Likewise.
* dirent/rewinddir.c (__rewinddir): Likewise.
* dirent/seekdir.c (seekdir): Likewise.
* dirent/telldir.c (telldir): Likewise.
* elf/sln.c (makesymlinks): Likewise.
(makesymlink): Likewise.
* gmon/gmon.c (__moncontrol): Likewise.
(__monstartup): Likewise.
(write_hist): Likewise.
(write_call_graph): Likewise.
(write_bb_counts): Likewise.
* grp/setgroups.c (setgroups): Likewise.
* inet/inet_lnaof.c (inet_lnaof): Likewise.
* inet/inet_net.c (inet_network): Likewise.
* inet/inet_netof.c (inet_netof): Likewise.
* inet/rcmd.c (rresvport_af): Likewise.
(rresvport): Likewise.
* io/access.c (__access): Likewise.
* io/chdir.c (__chdir): Likewise.
* io/chmod.c (__chmod): Likewise.
* io/chown.c (__chown): Likewise.
* io/close.c (__close): Likewise.
* io/creat.c (creat): Likewise.
* io/creat64.c (creat64): Likewise.
* io/dup.c (__dup): Likewise.
* io/dup2.c (__dup2): Likewise.
* io/dup3.c (__dup3): Likewise.
* io/euidaccess.c (__euidaccess): Likewise.
* io/faccessat.c (faccessat): Likewise.
* io/fchmod.c (__fchmod): Likewise.
* io/fchmodat.c (fchmodat): Likewise.
* io/fchown.c (__fchown): Likewise.
* io/fchownat.c (fchownat): Likewise.
* io/fcntl.c (__fcntl): Likewise.
* io/flock.c (__flock): Likewise.
* io/fts.c (fts_load): Likewise.
(fts_close): Likewise.
(fts_read): Likewise.
(fts_set): Likewise.
(fts_children): Likewise.
(fts_build): Likewise.
(fts_stat): Likewise.
(fts_sort): Likewise.
(fts_alloc): Likewise.
(fts_lfree): Likewise.
(fts_palloc): Likewise.
(fts_padjust): Likewise.
(fts_maxarglen): Likewise.
(fts_safe_changedir): Likewise.
* io/getwd.c (getwd): Likewise.
* io/isatty.c (__isatty): Likewise.
* io/lchown.c (__lchown): Likewise.
* io/link.c (__link): Likewise.
* io/linkat.c (linkat): Likewise.
* io/lseek.c (__libc_lseek): Likewise.
* io/mkdir.c (__mkdir): Likewise.
* io/mkdirat.c (mkdirat): Likewise.
* io/mkfifo.c (mkfifo): Likewise.
* io/mkfifoat.c (mkfifoat): Likewise.
* io/open.c (__libc_open): Likewise.
* io/open64.c (__libc_open64): Likewise.
* io/readlink.c (__readlink): Likewise.
* io/readlinkat.c (readlinkat): Likewise.
* io/rmdir.c (__rmdir): Likewise.
* io/symlink.c (__symlink): Likewise.
* io/symlinkat.c (symlinkat): Likewise.
* io/ttyname.c (ttyname): Likewise.
* io/ttyname_r.c (__ttyname_r): Likewise.
* io/umask.c (__umask): Likewise.
* io/unlink.c (__unlink): Likewise.
* io/unlinkat.c (unlinkat): Likewise.
* io/utime.c (utime): Likewise.
* libio/clearerr.c (clearerr): Likewise.
* libio/clearerr_u.c (clearerr_unlocked): Likewise.
* libio/feof.c (_IO_feof): Likewise.
* libio/feof_u.c (feof_unlocked): Likewise.
* libio/ferror.c (_IO_ferror): Likewise.
* libio/ferror_u.c (ferror_unlocked): Likewise.
* libio/filedoalloc.c (_IO_file_doallocate): Likewise.
* libio/fileno.c (__fileno): Likewise.
* libio/fputc.c (fputc): Likewise.
* libio/fputc_u.c (fputc_unlocked): Likewise.
* libio/fputwc.c (fputwc): Likewise.
* libio/fputwc_u.c (fputwc_unlocked): Likewise.
* libio/freopen.c (freopen): Likewise.
* libio/freopen64.c (freopen64): Likewise.
* libio/fseek.c (fseek): Likewise.
* libio/fseeko.c (fseeko): Likewise.
* libio/fseeko64.c (fseeko64): Likewise.
* libio/ftello.c (__ftello): Likewise.
* libio/ftello64.c (ftello64): Likewise.
* libio/fwide.c (fwide): Likewise.
* libio/genops.c (_IO_un_link): Likewise.
(_IO_link_in): Likewise.
(_IO_least_marker): Likewise.
(_IO_switch_to_main_get_area): Likewise.
(_IO_switch_to_backup_area): Likewise.
(_IO_switch_to_get_mode): Likewise.
(_IO_free_backup_area): Likewise.
(_IO_switch_to_put_mode): Likewise.
(__overflow): Likewise.
(__underflow): Likewise.
(__uflow): Likewise.
(_IO_setb): Likewise.
(_IO_doallocbuf): Likewise.
(_IO_default_underflow): Likewise.
(_IO_default_uflow): Likewise.
(_IO_default_xsputn): Likewise.
(_IO_sgetn): Likewise.
(_IO_default_xsgetn): Likewise.
(_IO_sync): Likewise.
(_IO_default_setbuf): Likewise.
(_IO_default_seekpos): Likewise.
(_IO_default_doallocate): Likewise.
(_IO_init): Likewise.
(_IO_old_init): Likewise.
(_IO_default_sync): Likewise.
(_IO_default_finish): Likewise.
(_IO_default_seekoff): Likewise.
(_IO_sputbackc): Likewise.
(_IO_sungetc): Likewise.
(_IO_set_column): Likewise.
(_IO_set_column): Likewise.
(_IO_adjust_column): Likewise.
(_IO_get_column): Likewise.
(_IO_init_marker): Likewise.
(_IO_remove_marker): Likewise.
(_IO_marker_difference): Likewise.
(_IO_marker_delta): Likewise.
(_IO_seekmark): Likewise.
(_IO_unsave_markers): Likewise.
(_IO_nobackup_pbackfail): Likewise.
(_IO_default_pbackfail): Likewise.
(_IO_default_seek): Likewise.
(_IO_default_stat): Likewise.
(_IO_default_read): Likewise.
(_IO_default_write): Likewise.
(_IO_default_showmanyc): Likewise.
(_IO_default_imbue): Likewise.
(_IO_iter_next): Likewise.
(_IO_iter_file): Likewise.
* libio/getc.c (_IO_getc): Likewise.
* libio/getwc.c (_IO_getwc): Likewise.
* libio/iofclose.c (_IO_new_fclose): Likewise.
* libio/iofdopen.c (_IO_new_fdopen): Likewise.
* libio/iofflush.c (_IO_fflush): Likewise.
* libio/iofflush_u.c (__fflush_unlocked): Likewise.
* libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
* libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
* libio/iofgets.c (_IO_fgets): Likewise.
* libio/iofgets_u.c (__fgets_unlocked): Likewise.
* libio/iofgetws.c (fgetws): Likewise.
* libio/iofgetws_u.c (fgetws_unlocked): Likewise.
* libio/iofopen64.c (_IO_fopen64): Likewise.
* libio/iofopncook.c (_IO_cookie_read): Likewise.
(_IO_cookie_write): Likewise.
(_IO_cookie_seek): Likewise.
(_IO_cookie_close): Likewise.
(_IO_cookie_seekoff): Likewise.
(_IO_old_cookie_seek): Likewise.
* libio/iofputs.c (_IO_fputs): Likewise.
* libio/iofputs_u.c (__fputs_unlocked): Likewise.
* libio/iofputws.c (fputws): Likewise.
* libio/iofputws_u.c (fputws_unlocked): Likewise.
* libio/iofread.c (_IO_fread): Likewise.
* libio/iofread_u.c (__fread_unlocked): Likewise.
* libio/iofsetpos.c (_IO_new_fsetpos): Likewise.
* libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise.
* libio/ioftell.c (_IO_ftell): Likewise.
* libio/iofwrite.c (_IO_fwrite): Likewise.
* libio/iogetdelim.c (_IO_getdelim): Likewise.
* libio/iogets.c (_IO_gets): Likewise.
* libio/iopadn.c (_IO_padn): Likewise.
* libio/iopopen.c (_IO_new_proc_open): Likewise.
(_IO_new_popen): Likewise.
(_IO_new_proc_close): Likewise.
* libio/ioputs.c (_IO_puts): Likewise.
* libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise.
(_IO_seekoff): Likewise.
* libio/ioseekpos.c (_IO_seekpos_unlocked): Likewise.
(_IO_seekpos): Likewise.
* libio/iosetbuffer.c (_IO_setbuffer): Likewise.
* libio/iosetvbuf.c (_IO_setvbuf): Likewise.
* libio/ioungetc.c (_IO_ungetc): Likewise.
* libio/ioungetwc.c (ungetwc): Likewise.
* libio/iovdprintf.c (_IO_vdprintf): Likewise.
* libio/iovsscanf.c (_IO_vsscanf): Likewise.
* libio/iowpadn.c (_IO_wpadn): Likewise.
* libio/libc_fatal.c (__libc_fatal): Likewise.
* libio/memstream.c (__open_memstream): Likewise.
(_IO_mem_sync): Likewise.
(_IO_mem_finish): Likewise.
* libio/oldfileops.c (_IO_old_file_init): Likewise.
(_IO_old_file_close_it): Likewise.
(_IO_old_file_finish): Likewise.
(_IO_old_file_fopen): Likewise.
(_IO_old_file_attach): Likewise.
(_IO_old_file_setbuf): Likewise.
(_IO_old_do_write): Likewise.
(old_do_write): Likewise.
(_IO_old_file_underflow): Likewise.
(_IO_old_file_overflow): Likewise.
(_IO_old_file_sync): Likewise.
(_IO_old_file_seekoff): Likewise.
(_IO_old_file_write): Likewise.
(_IO_old_file_xsputn): Likewise.
* libio/oldiofclose.c (_IO_old_fclose): Likewise.
* libio/oldiofdopen.c (_IO_old_fdopen): Likewise.
* libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
* libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
* libio/oldiofopen.c (_IO_old_fopen): Likewise.
* libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise.
* libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise.
* libio/oldiopopen.c (_IO_old_proc_open): Likewise.
(_IO_old_popen): Likewise.
(_IO_old_proc_close): Likewise.
* libio/oldpclose.c (__old_pclose): Likewise.
* libio/pclose.c (__new_pclose): Likewise.
* libio/peekc.c (_IO_peekc_locked): Likewise.
* libio/putc.c (_IO_putc): Likewise.
* libio/putc_u.c (putc_unlocked): Likewise.
* libio/putchar.c (putchar): Likewise.
* libio/putchar_u.c (putchar_unlocked): Likewise.
* libio/putwc.c (putwc): Likewise.
* libio/putwc_u.c (putwc_unlocked): Likewise.
* libio/putwchar.c (putwchar): Likewise.
* libio/putwchar_u.c (putwchar_unlocked): Likewise.
* libio/rewind.c (rewind): Likewise.
* libio/setbuf.c (setbuf): Likewise.
* libio/setlinebuf.c (setlinebuf): Likewise.
* libio/vasprintf.c (_IO_vasprintf): Likewise.
* libio/vscanf.c (_IO_vscanf): Likewise.
* libio/vsnprintf.c (_IO_strn_overflow): Likewise.
* libio/vswprintf.c (_IO_wstrn_overflow): Likewise.
* libio/wfiledoalloc.c (_IO_wfile_doallocate): Likewise.
* libio/wgenops.c (_IO_least_wmarker): Likewise.
(_IO_switch_to_main_wget_area): Likewise.
(_IO_switch_to_wbackup_area): Likewise.
(_IO_wsetb): Likewise.
(_IO_wdefault_pbackfail): Likewise.
(_IO_wdefault_finish): Likewise.
(_IO_wdefault_uflow): Likewise.
(__woverflow): Likewise.
(__wuflow): Likewise.
(__wunderflow): Likewise.
(_IO_wdefault_xsputn): Likewise.
(_IO_wdefault_xsgetn): Likewise.
(_IO_wdoallocbuf): Likewise.
(_IO_wdefault_doallocate): Likewise.
(_IO_switch_to_wget_mode): Likewise.
(_IO_free_wbackup_area): Likewise.
(_IO_switch_to_wput_mode): Likewise.
(_IO_sputbackwc): Likewise.
(_IO_sungetwc): Likewise.
(_IO_adjust_wcolumn): Likewise.
(_IO_init_wmarker): Likewise.
(_IO_wmarker_delta): Likewise.
(_IO_seekwmark): Likewise.
(_IO_unsave_wmarkers): Likewise.
* libio/wmemstream.c (open_wmemstream): Likewise.
(_IO_wmem_sync): Likewise.
(_IO_wmem_finish): Likewise.
* locale/nl_langinfo.c (nl_langinfo): Likewise.
* locale/nl_langinfo_l.c (__nl_langinfo_l): Likewise.
* locale/programs/simple-hash.c (init_hash): Likewise.
(delete_hash): Likewise.
(insert_entry): Likewise.
(set_entry): Likewise.
(next_prime): Likewise.
(is_prime): Likewise.
* locale/programs/xmalloc.c (fixup_null_alloc): Likewise.
(xmalloc): Likewise.
(xrealloc): Likewise.
* locale/programs/xstrdup.c (xstrdup): Likewise.
* localedata/collate-test.c (xstrcoll): Likewise.
* localedata/xfrm-test.c (xstrcmp): Likewise.
* login/getlogin_r.c (__getlogin_r): Likewise.
* login/getpt.c (__posix_openpt): Likewise.
* login/login_tty.c (login_tty): Likewise.
* login/setlogin.c (setlogin): Likewise.
* mach/msg-destroy.c (__mach_msg_destroy): Likewise.
(mach_msg_destroy_port): Likewise.
(mach_msg_destroy_memory): Likewise.
* malloc/mcheck.c (flood): Likewise.
* misc/acct.c (acct): Likewise.
* misc/brk.c (__brk): Likewise.
* misc/chflags.c (chflags): Likewise.
* misc/chroot.c (chroot): Likewise.
* misc/fchflags.c (fchflags): Likewise.
* misc/fstab.c (getfsspec): Likewise.
(getfsfile): Likewise.
* misc/fsync.c (fsync): Likewise.
* misc/ftruncate.c (__ftruncate): Likewise.
* misc/ftruncate64.c (__ftruncate64): Likewise.
* misc/getdomain.c (getdomainname): Likewise.
(getdomainname): Likewise.
* misc/gethostname.c (__gethostname): Likewise.
* misc/getpass.c (getpass): Likewise.
* misc/getttyent.c (skip): Likewise.
(value): Likewise.
* misc/gtty.c (gtty): Likewise.
* misc/hsearch.c (hsearch): Likewise.
(hcreate): Likewise.
* misc/hsearch_r.c (__hcreate_r): Likewise.
(__hdestroy_r): Likewise.
* misc/ioctl.c (__ioctl): Likewise.
* misc/mkdtemp.c (mkdtemp): Likewise.
* misc/mkostemp.c (mkostemp): Likewise.
* misc/mkostemp64.c (mkostemp64): Likewise.
* misc/mkostemps.c (mkostemps): Likewise.
* misc/mkostemps64.c (mkostemps64): Likewise.
* misc/mkstemp.c (mkstemp): Likewise.
* misc/mkstemp64.c (mkstemp64): Likewise.
* misc/mkstemps.c (mkstemps): Likewise.
* misc/mkstemps64.c (mkstemps64): Likewise.
* misc/mktemp.c (__mktemp): Likewise.
* misc/preadv.c (preadv): Likewise.
* misc/preadv64.c (preadv64): Likewise.
* misc/pwritev.c (pwritev): Likewise.
* misc/pwritev64.c (pwritev64): Likewise.
* misc/readv.c (__readv): Likewise.
* misc/revoke.c (revoke): Likewise.
* misc/setdomain.c (setdomainname): Likewise.
* misc/setegid.c (setegid): Likewise.
* misc/seteuid.c (seteuid): Likewise.
* misc/sethostid.c (sethostid): Likewise.
* misc/sethostname.c (sethostname): Likewise.
* misc/setregid.c (__setregid): Likewise.
* misc/setreuid.c (__setreuid): Likewise.
* misc/sstk.c (sstk): Likewise.
* misc/stty.c (stty): Likewise.
* misc/syscall.c (syscall): Likewise.
* misc/syslog.c (setlogmask): Likewise.
* misc/truncate.c (__truncate): Likewise.
* misc/truncate64.c (truncate64): Likewise.
* misc/ualarm.c (ualarm): Likewise.
* misc/usleep.c (usleep): Likewise.
* misc/ustat.c (ustat): Likewise.
* misc/writev.c (__writev): Likewise.
* nptl/cleanup_compat.c (_pthread_cleanup_pop): Likewise.
* nptl/old_pthread_cond_broadcast.c
(__pthread_cond_broadcast_2_0): Likewise.
* nptl/old_pthread_cond_destroy.c (__pthread_cond_destroy_2_0):
Likewise.
* nptl/old_pthread_cond_signal.c (__pthread_cond_signal_2_0):
Likewise.
* nptl/old_pthread_cond_wait.c (__pthread_cond_wait_2_0):
Likewise.
* nptl/pt-raise.c (raise): Likewise.
* nptl/pthread_barrier_destroy.c (pthread_barrier_destroy):
Likewise.
* nptl/pthread_barrier_wait.c (__pthread_barrier_wait): Likewise.
* nptl/pthread_barrierattr_destroy.c
(pthread_barrierattr_destroy): Likewise.
* nptl/pthread_barrierattr_init.c (pthread_barrierattr_init):
Likewise.
* nptl/pthread_barrierattr_setpshared.c
(pthread_barrierattr_setpshared): Likewise.
* nptl/pthread_cond_broadcast.c (__pthread_cond_broadcast):
Likewise.
* nptl/pthread_cond_destroy.c (__pthread_cond_destroy): Likewise.
* nptl/pthread_cond_init.c (__pthread_cond_init): Likewise.
* nptl/pthread_cond_signal.c (__pthread_cond_signal): Likewise.
* nptl/pthread_condattr_destroy.c (__pthread_condattr_destroy):
Likewise.
* nptl/pthread_condattr_getclock.c (pthread_condattr_getclock):
Likewise.
* nptl/pthread_condattr_getpshared.c
(pthread_condattr_getpshared): Likewise.
* nptl/pthread_condattr_init.c (__pthread_condattr_init):
Likewise.
* nptl/pthread_condattr_setpshared.c
(pthread_condattr_setpshared): Likewise.
* nptl/pthread_detach.c (pthread_detach): Likewise.
* nptl/pthread_equal.c (__pthread_equal): Likewise.
* nptl/pthread_getcpuclockid.c (pthread_getcpuclockid): Likewise.
* nptl/pthread_getspecific.c (__pthread_getspecific): Likewise.
* nptl/pthread_key_delete.c (pthread_key_delete): Likewise.
* nptl/pthread_mutex_consistent.c (pthread_mutex_consistent):
Likewise.
* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy):
Likewise.
* nptl/pthread_mutex_getprioceiling.c
(pthread_mutex_getprioceiling): Likewise.
* nptl/pthread_mutexattr_destroy.c (__pthread_mutexattr_destroy):
Likewise.
* nptl/pthread_mutexattr_getprotocol.c
(pthread_mutexattr_getprotocol): Likewise.
* nptl/pthread_mutexattr_getpshared.c
(pthread_mutexattr_getpshared): Likewise.
* nptl/pthread_mutexattr_getrobust.c
(pthread_mutexattr_getrobust): Likewise.
* nptl/pthread_mutexattr_gettype.c (pthread_mutexattr_gettype):
Likewise.
* nptl/pthread_mutexattr_init.c (__pthread_mutexattr_init):
Likewise.
* nptl/pthread_mutexattr_setprioceiling.c
(pthread_mutexattr_setprioceiling): Likewise.
* nptl/pthread_mutexattr_setprotocol.c
(pthread_mutexattr_setprotocol): Likewise.
* nptl/pthread_mutexattr_setpshared.c
(pthread_mutexattr_setpshared): Likewise.
* nptl/pthread_mutexattr_setrobust.c
(pthread_mutexattr_setrobust): Likewise.
* nptl/pthread_mutexattr_settype.c (__pthread_mutexattr_settype):
Likewise.
* nptl/pthread_rwlock_destroy.c (__pthread_rwlock_destroy):
Likewise.
* nptl/pthread_rwlockattr_destroy.c (pthread_rwlockattr_destroy):
Likewise.
* nptl/pthread_rwlockattr_getkind_np.c
(pthread_rwlockattr_getkind_np): Likewise.
* nptl/pthread_rwlockattr_getpshared.c
(pthread_rwlockattr_getpshared): Likewise.
* nptl/pthread_rwlockattr_init.c (pthread_rwlockattr_init):
Likewise.
* nptl/pthread_rwlockattr_setkind_np.c
(pthread_rwlockattr_setkind_np): Likewise.
* nptl/pthread_rwlockattr_setpshared.c
(pthread_rwlockattr_setpshared): Likewise.
* nptl/pthread_setcancelstate.c (__pthread_setcancelstate):
Likewise.
* nptl/pthread_setcanceltype.c (__pthread_setcanceltype):
Likewise.
* nptl/pthread_setconcurrency.c (pthread_setconcurrency):
Likewise.
* nptl/pthread_setschedprio.c (pthread_setschedprio): Likewise.
* nptl/pthread_setspecific.c (__pthread_setspecific): Likewise.
* nptl/pthread_spin_destroy.c (pthread_spin_destroy): Likewise.
* nptl/pthread_tryjoin.c (pthread_tryjoin_np): Likewise.
* nptl/sem_close.c (sem_close): Likewise.
* nptl/sem_destroy.c (__new_sem_destroy): Likewise.
* nptl/sem_init.c (__old_sem_init): Likewise.
* nptl/sigaction.c (__sigaction): Likewise.
* nptl/unregister-atfork.c (__unregister_atfork): Likewise.
* posix/_exit.c (_exit): Likewise.
* posix/alarm.c (alarm): Likewise.
* posix/confstr.c (confstr): Likewise.
* posix/fpathconf.c (__fpathconf): Likewise.
* posix/getgroups.c (__getgroups): Likewise.
* posix/getpgid.c (__getpgid): Likewise.
* posix/group_member.c (__group_member): Likewise.
* posix/pathconf.c (__pathconf): Likewise.
* posix/sched_getaffinity.c (sched_getaffinity): Likewise.
* posix/sched_setaffinity.c (sched_setaffinity): Likewise.
* posix/setgid.c (__setgid): Likewise.
* posix/setpgid.c (__setpgid): Likewise.
* posix/setuid.c (__setuid): Likewise.
* posix/sleep.c (__sleep): Likewise.
* posix/sysconf.c (__sysconf): Likewise.
* posix/times.c (__times): Likewise.
* posix/uname.c (__uname): Likewise.
* posix/waitid.c (__waitid): Likewise.
* pwd/getpw.c (__getpw): Likewise.
* resolv/base64.c (b64_pton): Likewise.
* resolv/gai_sigqueue.c (__gai_sigqueue): Likewise.
* resolv/gethnamaddr.c (Dprintf): Likewise.
(gethostbyname): Likewise.
(gethostbyname2): Likewise.
(gethostbyaddr): Likewise.
(_sethtent): Likewise.
(_gethtbyname): Likewise.
(_gethtbyname2): Likewise.
(_gethtbyaddr): Likewise.
(map_v4v6_address): Likewise.
(map_v4v6_hostent): Likewise.
(addrsort): Likewise.
(ht_sethostent): Likewise.
(ht_gethostbyname): Likewise.
(ht_gethostbyaddr): Likewise.
* resolv/inet_net_ntop.c (inet_net_ntop): Likewise.
(inet_net_ntop_ipv4): Likewise.
* resolv/inet_neta.c (inet_neta): Likewise.
* resolv/inet_ntop.c (inet_ntop): Likewise.
(inet_ntop4): Likewise.
(inet_ntop6): Likewise.
* resolv/inet_pton.c (__inet_pton): Likewise.
(inet_pton4): Likewise.
(inet_pton6): Likewise.
* resolv/res_debug.c (loc_aton): Likewise.
(loc_ntoa): Likewise.
* resource/getpriority.c (__getpriority): Likewise.
* resource/getrusage.c (__getrusage): Likewise.
* resource/nice.c (nice): Likewise.
* resource/setpriority.c (__setpriority): Likewise.
* resource/setrlimit64.c (setrlimit64): Likewise.
* resource/vlimit.c (vlimit): Likewise.
* resource/vtimes.c (vtimes): Likewise.
* rt/aio_error.c (aio_error): Likewise.
* rt/aio_return.c (aio_return): Likewise.
* rt/aio_sigqueue.c (__aio_sigqueue): Likewise.
* signal/kill.c (__kill): Likewise.
* signal/killpg.c (killpg): Likewise.
* signal/raise.c (raise): Likewise.
* signal/sigaction.c (__sigaction): Likewise.
* signal/sigaddset.c (sigaddset): Likewise.
* signal/sigaltstack.c (sigaltstack): Likewise.
* signal/sigandset.c (sigandset): Likewise.
* signal/sigblock.c (__sigblock): Likewise.
* signal/sigdelset.c (sigdelset): Likewise.
* signal/sigempty.c (sigemptyset): Likewise.
* signal/sigfillset.c (sigfillset): Likewise.
* signal/sighold.c (sighold): Likewise.
* signal/sigignore.c (sigignore): Likewise.
* signal/sigintr.c (siginterrupt): Likewise.
* signal/sigisempty.c (sigisemptyset): Likewise.
* signal/sigismem.c (sigismember): Likewise.
* signal/signal.c (signal): Likewise.
* signal/sigorset.c (sigorset): Likewise.
* signal/sigpause.c (__sigpause): Likewise.
* signal/sigpending.c (sigpending): Likewise.
* signal/sigprocmask.c (__sigprocmask): Likewise.
* signal/sigrelse.c (sigrelse): Likewise.
* signal/sigreturn.c (__sigreturn): Likewise.
* signal/sigset.c (sigset): Likewise.
* signal/sigsetmask.c (__sigsetmask): Likewise.
* signal/sigstack.c (sigstack): Likewise.
* signal/sigsuspend.c (__sigsuspend): Likewise.
* signal/sigvec.c (sigvec_wrapper_handler): Likewise.
* signal/sysv_signal.c (__sysv_signal): Likewise.
* socket/accept.c (accept): Likewise.
* socket/accept4.c (__libc_accept4): Likewise.
* socket/bind.c (__bind): Likewise.
* socket/connect.c (__connect): Likewise.
* socket/getpeername.c (getpeername): Likewise.
* socket/getsockname.c (__getsockname): Likewise.
* socket/getsockopt.c (getsockopt): Likewise.
* socket/listen.c (__listen): Likewise.
* socket/recv.c (__recv): Likewise.
* socket/recvmsg.c (__recvmsg): Likewise.
* socket/send.c (__send): Likewise.
* socket/sendmsg.c (__sendmsg): Likewise.
* socket/shutdown.c (shutdown): Likewise.
* socket/sockatmark.c (sockatmark): Likewise.
* socket/socket.c (__socket): Likewise.
* stdio-common/ctermid.c (ctermid): Likewise.
* stdio-common/cuserid.c (cuserid): Likewise.
* stdio-common/printf-prs.c (parse_printf_format): Likewise.
* stdio-common/remove.c (remove): Likewise.
* stdio-common/rename.c (rename): Likewise.
* stdio-common/renameat.c (renameat): Likewise.
* stdio-common/tempname.c (__gen_tempname): Likewise.
* stdio-common/xbug.c (InitBuffer): Likewise.
(AppendToBuffer): Likewise.
(ReadFile): Likewise.
* stdlib/a64l.c (a64l): Likewise.
* stdlib/drand48_r.c (drand48_r): Likewise.
* stdlib/getcontext.c (getcontext): Likewise.
* stdlib/getenv.c (getenv): Likewise.
* stdlib/l64a.c (l64a): Likewise.
* stdlib/llabs.c (llabs): Likewise.
* stdlib/lldiv.c (lldiv): Likewise.
* stdlib/lrand48_r.c (lrand48_r): Likewise.
* stdlib/mrand48_r.c (mrand48_r): Likewise.
* stdlib/putenv.c (putenv): Likewise.
* stdlib/random.c (__srandom): Likewise.
(__initstate): Likewise.
(__setstate): Likewise.
* stdlib/random_r.c (__srandom_r): Likewise.
(__setstate_r): Likewise.
(__random_r): Likewise.
* stdlib/secure-getenv.c (__libc_secure_getenv): Likewise.
* stdlib/setcontext.c (setcontext): Likewise.
* stdlib/setenv.c (setenv): Likewise.
(unsetenv): Likewise.
* stdlib/srand48.c (srand48): Likewise.
* stdlib/srand48_r.c (__srand48_r): Likewise.
* stdlib/swapcontext.c (swapcontext): Likewise.
* stdlib/system.c (__libc_system): Likewise.
* stdlib/tst-strtod.c (expand): Likewise.
* stdlib/tst-strtol.c (expand): Likewise.
* stdlib/tst-strtoll.c (expand): Likewise.
* streams/fattach.c (fattach): Likewise.
* streams/fdetach.c (fdetach): Likewise.
* streams/getmsg.c (getmsg): Likewise.
* streams/isastream.c (isastream): Likewise.
* string/ffs.c (__ffs): Likewise.
* string/ffsll.c (ffsll): Likewise.
* string/memcmp.c (memcmp_common_alignment): Likewise.
(memcmp_not_common_alignment): Likewise.
(MEMCMP): Likewise.
* string/memcpy.c (memcpy): Likewise.
* string/memmove.c (MEMMOVE): Likewise.
* string/memset.c (memset): Likewise.
* string/rawmemchr.c (RAWMEMCHR): Likewise.
* string/strchrnul.c (STRCHRNUL): Likewise.
* string/strerror.c (strerror): Likewise.
* string/strndup.c (__strndup): Likewise.
* string/strverscmp.c (__strverscmp): Likewise.
* sunrpc/clnt_raw.c (clntraw_freeres): Likewise.
* sunrpc/clnt_tcp.c (clnttcp_geterr): Likewise.
(clnttcp_freeres): Likewise.
* sunrpc/clnt_unix.c (clntunix_freeres): Likewise.
* sunrpc/pmap_prot.c (xdr_pmap): Likewise.
* sunrpc/pmap_prot2.c (xdr_pmaplist): Likewise.
* sunrpc/pmap_rmt.c (xdr_rmtcallres): Likewise.
* sunrpc/rpc_prot.c (xdr_replymsg): Likewise.
(xdr_callhdr): Likewise.
* sunrpc/rpcinfo.c (udpping): Likewise.
(tcpping): Likewise.
(pstatus): Likewise.
(pmapdump): Likewise.
(brdcst): Likewise.
(deletereg): Likewise.
(getprognum): Likewise.
(getvers): Likewise.
(get_inet_address): Likewise.
* sunrpc/svc_raw.c (svcraw_recv): Likewise.
* sunrpc/svc_udp.c (svcudp_create): Likewise.
(svcudp_stat): Likewise.
(svcudp_recv): Likewise.
(svcudp_reply): Likewise.
(svcudp_getargs): Likewise.
(svcudp_freeargs): Likewise.
(svcudp_destroy): Likewise.
* sunrpc/xdr.c (xdr_bytes): Likewise.
(xdr_netobj): Likewise.
(xdr_string): Likewise.
(xdr_wrapstring): Likewise.
* sunrpc/xdr_float.c (xdr_float): Likewise.
(xdr_double): Likewise.
* sunrpc/xdr_mem.c (xdrmem_setpos): Likewise.
* sunrpc/xdr_ref.c (xdr_pointer): Likewise.
* sysvipc/ftok.c (ftok): Likewise.
* sysvipc/msgctl.c (msgctl): Likewise.
* sysvipc/msgget.c (msgget): Likewise.
* sysvipc/msgrcv.c (msgrcv): Likewise.
* sysvipc/msgsnd.c (msgsnd): Likewise.
* sysvipc/semget.c (semget): Likewise.
* sysvipc/semop.c (semop): Likewise.
* sysvipc/shmat.c (shmat): Likewise.
* sysvipc/shmctl.c (shmctl): Likewise.
* sysvipc/shmdt.c (shmdt): Likewise.
* sysvipc/shmget.c (shmget): Likewise.
* termios/cfmakeraw.c (cfmakeraw): Likewise.
* termios/speed.c (cfgetospeed): Likewise.
(cfgetispeed): Likewise.
(cfsetospeed): Likewise.
(cfsetispeed): Likewise.
* termios/tcflow.c (tcflow): Likewise.
* termios/tcflush.c (tcflush): Likewise.
* termios/tcgetattr.c (__tcgetattr): Likewise.
* termios/tcgetpgrp.c (tcgetpgrp): Likewise.
* termios/tcgetsid.c (tcgetsid): Likewise.
* termios/tcsendbrk.c (tcsendbreak): Likewise.
* termios/tcsetpgrp.c (tcsetpgrp): Likewise.
* time/adjtime.c (__adjtime): Likewise.
* time/dysize.c (dysize): Likewise.
* time/ftime.c (ftime): Likewise.
* time/getitimer.c (__getitimer): Likewise.
* time/gettimeofday.c (__gettimeofday): Likewise.
* time/gmtime.c (__gmtime_r): Likewise.
(gmtime): Likewise.
* time/localtime.c (__localtime_r): Likewise.
(localtime): Likewise.
* time/offtime.c (__offtime): Likewise.
* time/settimeofday.c (__settimeofday): Likewise.
* time/stime.c (stime): Likewise.
* time/strftime_l.c (tm_diff): Likewise.
(iso_week_days): Likewise.
* time/strptime.c (strptime): Likewise.
* time/time.c (time): Likewise.
* time/timespec_get.c (timespec_get): Likewise.
* time/tzset.c (tzset_internal): Likewise.
(compute_change): Likewise.
(__tz_compute): Likewise.
* wcsmbs/btowc.c (__btowc): Likewise.
* wcsmbs/mbrlen.c (__mbrlen): Likewise.
* wcsmbs/mbsinit.c (__mbsinit): Likewise.
* wcsmbs/mbsrtowcs.c (__mbsrtowcs): Likewise.
* wcsmbs/wcpcpy.c (__wcpcpy): Likewise.
* wcsmbs/wcpncpy.c (__wcpncpy): Likewise.
* wcsmbs/wcscat.c (__wcscat): Likewise.
* wcsmbs/wcschrnul.c (__wcschrnul): Likewise.
* wcsmbs/wcscmp.c (WCSCMP): Likewise.
* wcsmbs/wcscpy.c (WCSCPY): Likewise.
* wcsmbs/wcscspn.c (wcscspn): Likewise.
* wcsmbs/wcsdup.c (wcsdup): Likewise.
* wcsmbs/wcslen.c (__wcslen): Likewise.
* wcsmbs/wcsncat.c (WCSNCAT): Likewise.
* wcsmbs/wcsncmp.c (WCSNCMP): Likewise.
* wcsmbs/wcsncpy.c (__wcsncpy): Likewise.
* wcsmbs/wcsnlen.c (__wcsnlen): Likewise.
* wcsmbs/wcspbrk.c (wcspbrk): Likewise.
* wcsmbs/wcsrchr.c (WCSRCHR): Likewise.
* wcsmbs/wcsspn.c (wcsspn): Likewise.
* wcsmbs/wcsstr.c (wcsstr): Likewise.
* wcsmbs/wcstok.c (wcstok): Likewise.
* wcsmbs/wctob.c (wctob): Likewise.
* wcsmbs/wmemchr.c (__wmemchr): Likewise.
* wcsmbs/wmemcmp.c (WMEMCMP): Likewise.
* wcsmbs/wmemcpy.c (__wmemcpy): Likewise.
* wcsmbs/wmemmove.c (__wmemmove): Likewise.
* wcsmbs/wmempcpy.c (__wmempcpy): Likewise.
* wcsmbs/wmemset.c (__wmemset): Likewise.
* wctype/wcfuncs.c (__towlower): Likewise.
(__towupper): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adding this parameter will give architectures more freedom in
how they choose to update this variable. This change has no
effect on architectures which choose not to use it.
* nptl/pthread_mutex_unlock.c(lll_unlock_elision):
Add elision adapt_count parameter to list of arguments.
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
(lll_unlock_elision): Update with new parameter list
* sysdeps/unix/sysv/linux/s390/lowlevellock.h
(lll_unlock_elision): Likewise
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
(lll_unlock_elision): Likewise
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch pthread cancellation tests to check for failures cases
wherer the syscall cancel wrapper should both set the error and
the errno values.
Tested on i686, x86_64, x32, powerpc64le, and aarch64.
* nptl/Makefile (tests): Add tst-cancel26.c and tst-cancel27.c.
* nptl/tst-cancel26.c: New file.
* nptl/tst-cancel27.c: Likewise.
|
|
|
|
|
| |
This requires a C++ compiler with thread_local support, and a new
configure check is needed.
|
|
|
|
|
|
| |
Those ignored symbols are listed a few lines below.
* nptl/Versions: Remove ignored symbols.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch references __pthread_setcancelstate instead of
pthread_setcancelstate in libc.a.
[BZ #18970]
* misc/error.c (error): Replace pthread_setcancelstate with
__pthread_setcancelstate.
(error_at_line): Likewise.
* posix/wordexp.c (parse_comm): Likewise.
* stdlib/fmtmsg.c (fmtmsg): Likewise.
* nptl/forward.c (pthread_setcancelstate): Renamed to ...
(__pthread_setcancelstate): This.
(pthread_setcancelstate): Add an alias.
* nptl/nptl-init.c (pthread_functions): Replace
ptr_pthread_setcancelstate with ptr___pthread_setcancelstate.
* sysdeps/nptl/pthread-functions.h (pthread_functions): Likewise.
* nptl/pthreadP.h (__pthread_setcancelstate): Mark it with
hidden_proto.
* nptl/pthread_setcancelstate.c (__pthread_setcancelstate): Mark
it with hidden_def.
* sysdeps/nptl/libc-lockP.h (__pthread_setcancelstate): New.
(pthread_setcancelstate): Renamed to ...
(__pthread_setcancelstate): This.
* sysdeps/unix/sysv/linux/fatal-prepare.h (FATAL_PREPARE): Use
__libc_ptf_call with __pthread_setcancelstate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was noted in
<https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html> that the
bits/*.h naming scheme should only be used for installed headers.
This patch renames bits/libc-lock.h to plain libc-lock.h and
bits/libc-lockP.h to plain libc-lockP.h to follow that convention.
Note that I don't know where libc-lockP.h comes from for Hurd (the
Hurd libc-lock.h includes libc-lockP.h, but the only libc-lockP.h in
the glibc source tree is for NPTL) - some unmerged patch? - but I
updated the #include in the Hurd libc-lock.h anyway.
Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).
[BZ #14912]
* bits/libc-lock.h: Move to ...
* sysdeps/generic/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/mach/hurd/bits/libc-lock.h: Move to ...
* sysdeps/mach/hurd/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
[_LIBC]: Include <libc-lockP.h> instead of <bits/libc-lockP.h>.
* sysdeps/mach/bits/libc-lock.h: Move to ...
* sysdeps/mach/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/nptl/bits/libc-lock.h: Move to ...
* sysdeps/nptl/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/nptl/bits/libc-lockP.h: Move to ...
* sysdeps/nptl/libc-lockP.h: ...here.
(_BITS_LIBC_LOCKP_H): Rename macro to _LIBC_LOCKP_H.
* crypt/crypt_util.c: Include <libc-lock.h> instead of
<bits/libc-lock.h>.
* dirent/scandir-tail.c: Likewise.
* dlfcn/dlerror.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.c: Likewise.
* elf/dl-lookup.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-support.c: Likewise.
* elf/dl-writev.h: Likewise.
* elf/rtld.c: Likewise.
* grp/fgetgrent.c: Likewise.
* gshadow/fgetsgent.c: Likewise.
* gshadow/sgetsgent.c: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_db.c: Likewise.
* iconv/gconv_dl.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_trans.c: Likewise.
* include/link.h: Likewise.
* inet/getnameinfo.c: Likewise.
* inet/getnetgrent.c: Likewise.
* inet/getnetgrent_r.c: Likewise.
* intl/bindtextdom.c: Likewise.
* intl/dcigettext.c: Likewise.
* intl/finddomain.c: Likewise.
* intl/gettextP.h: Likewise.
* intl/loadmsgcat.c: Likewise.
* intl/localealias.c: Likewise.
* intl/textdomain.c: Likewise.
* libidn/idn-stub.c: Likewise.
* libio/libioP.h: Likewise.
* locale/duplocale.c: Likewise.
* locale/freelocale.c: Likewise.
* locale/newlocale.c: Likewise.
* locale/setlocale.c: Likewise.
* login/getutent_r.c: Likewise.
* login/getutid_r.c: Likewise.
* login/getutline_r.c: Likewise.
* login/utmp-private.h: Likewise.
* login/utmpname.c: Likewise.
* malloc/mtrace.c: Likewise.
* misc/efgcvt.c: Likewise.
* misc/error.c: Likewise.
* misc/fstab.c: Likewise.
* misc/getpass.c: Likewise.
* misc/mntent.c: Likewise.
* misc/syslog.c: Likewise.
* nis/nis_call.c: Likewise.
* nis/nis_callback.c: Likewise.
* nis/nss-default.c: Likewise.
* nis/nss_compat/compat-grp.c: Likewise.
* nis/nss_compat/compat-initgroups.c: Likewise.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/nss_nis/nis-alias.c: Likewise.
* nis/nss_nis/nis-ethers.c: Likewise.
* nis/nss_nis/nis-grp.c: Likewise.
* nis/nss_nis/nis-hosts.c: Likewise.
* nis/nss_nis/nis-network.c: Likewise.
* nis/nss_nis/nis-proto.c: Likewise.
* nis/nss_nis/nis-pwd.c: Likewise.
* nis/nss_nis/nis-rpc.c: Likewise.
* nis/nss_nis/nis-service.c: Likewise.
* nis/nss_nis/nis-spwd.c: Likewise.
* nis/nss_nisplus/nisplus-alias.c: Likewise.
* nis/nss_nisplus/nisplus-ethers.c: Likewise.
* nis/nss_nisplus/nisplus-grp.c: Likewise.
* nis/nss_nisplus/nisplus-hosts.c: Likewise.
* nis/nss_nisplus/nisplus-initgroups.c: Likewise.
* nis/nss_nisplus/nisplus-network.c: Likewise.
* nis/nss_nisplus/nisplus-proto.c: Likewise.
* nis/nss_nisplus/nisplus-pwd.c: Likewise.
* nis/nss_nisplus/nisplus-rpc.c: Likewise.
* nis/nss_nisplus/nisplus-service.c: Likewise.
* nis/nss_nisplus/nisplus-spwd.c: Likewise.
* nis/ypclnt.c: Likewise.
* nptl/libc_pthread_init.c: Likewise.
* nss/getXXbyYY.c: Likewise.
* nss/getXXent.c: Likewise.
* nss/getXXent_r.c: Likewise.
* nss/nss_db/db-XXX.c: Likewise.
* nss/nss_db/db-netgrp.c: Likewise.
* nss/nss_db/nss_db.h: Likewise.
* nss/nss_files/files-XXX.c: Likewise.
* nss/nss_files/files-alias.c: Likewise.
* nss/nsswitch.c: Likewise.
* posix/regex_internal.h: Likewise.
* posix/wordexp.c: Likewise.
* pwd/fgetpwent.c: Likewise.
* resolv/res_hconf.c: Likewise.
* resolv/res_libc.c: Likewise.
* shadow/fgetspent.c: Likewise.
* shadow/lckpwdf.c: Likewise.
* shadow/sgetspent.c: Likewise.
* socket/opensock.c: Likewise.
* stdio-common/reg-modifier.c: Likewise.
* stdio-common/reg-printf.c: Likewise.
* stdio-common/reg-type.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
* stdio-common/vfscanf.c: Likewise.
* stdlib/abort.c: Likewise.
* stdlib/cxa_atexit.c: Likewise.
* stdlib/fmtmsg.c: Likewise.
* stdlib/random.c: Likewise.
* stdlib/setenv.c: Likewise.
* string/strsignal.c: Likewise.
* sunrpc/auth_none.c: Likewise.
* sunrpc/bindrsvprt.c: Likewise.
* sunrpc/create_xid.c: Likewise.
* sunrpc/key_call.c: Likewise.
* sunrpc/rpc_thread.c: Likewise.
* sysdeps/arm/backtrace.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/stdio-lock.h: Likewise.
* sysdeps/generic/unwind-dw2-fde.c: Likewise.
* sysdeps/i386/backtrace.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.c: Likewise.
* sysdeps/m68k/backtrace.c: Likewise.
* sysdeps/mach/hurd/cthreads.c: Likewise.
* sysdeps/mach/hurd/dirstream.h: Likewise.
* sysdeps/mach/hurd/malloc-machine.h: Likewise.
* sysdeps/nptl/malloc-machine.h: Likewise.
* sysdeps/nptl/stdio-lock.h: Likewise.
* sysdeps/posix/dirstream.h: Likewise.
* sysdeps/posix/getaddrinfo.c: Likewise.
* sysdeps/posix/system.c: Likewise.
* sysdeps/pthread/aio_suspend.c: Likewise.
* sysdeps/s390/s390-32/backtrace.c: Likewise.
* sysdeps/s390/s390-64/backtrace.c: Likewise.
* sysdeps/unix/sysv/linux/check_pf.c: Likewise.
* sysdeps/unix/sysv/linux/if_index.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c: Likewise.
* sysdeps/unix/sysv/linux/shm-directory.c: Likewise.
* sysdeps/unix/sysv/linux/system.c: Likewise.
* sysdeps/x86_64/backtrace.c: Likewise.
* time/alt_digit.c: Likewise.
* time/era.c: Likewise.
* time/tzset.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* nptl/tst-initializers1.c (do_test): Refer to <libc-lock.h>
instead of <bits/libc-lock.h> in comment.
|
|
|
|
|
|
| |
The third arg can either be a string with "g" or "G", or it is a number.
The empty string elicits a warning with newer versions like so:
gawk: scripts/sysd-rules.awk:56: warning: gensub: third argument `' treated as 1
|
|
|
|
|
|
| |
On arches that set _STACK_GROWS_UP, the stacktop variable is declared
and set, but never actually used. Refactor the code a bit so that the
variable is only declared/set under _STACK_GROWS_DOWN settings.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The recently introduced TLS variables in the thread-local destructor
implementation (__cxa_thread_atexit_impl) used the default GD access
model, resulting in a call to __tls_get_addr. This causes a deadlock
with recent changes to the way TLS is initialized because DTV
allocations are delayed and hence despite knowing the offset to the
variable inside its TLS block, the thread has to take the global rtld
lock to safely update the TLS offset.
This causes deadlocks when a thread is instantiated and joined inside
a destructor of a dlopen'd DSO. The correct long term fix is to
somehow not take the lock, but that will need a lot deeper change set
to alter the way in which the big rtld lock is used.
Instead, this patch just eliminates the call to __tls_get_addr for the
thread-local variables inside libc.so, libpthread.so and rtld by
building all of their units with -mtls-model=initial-exec.
There were concerns that the static storage for TLS is limited and
hence we should not be using it. Additionally, dynamically loaded
modules may result in libc.so looking for this static storage pretty
late in static binaries. Both concerns are valid when using TLSDESC
since that is where one may attempt to allocate a TLS block from
static storage for even those variables that are not IE. They're not
very strong arguments for the traditional TLS model though, since it
assumes that the static storage would be used sparingly and definitely
not by default. Hence, for now this would only theoretically affect
ARM architectures.
The impact is hence limited to statically linked binaries that dlopen
modules that in turn load libc.so, all that on arm hardware. It seems
like a small enough impact to justify fixing the larger problem that
currently affects everything everywhere.
This still does not solve the original problem completely. That is,
it is still possible to deadlock on the big rtld lock with a small
tweak to the test case attached to this patch. That problem is
however not a regression in 2.22 and hence could be tackled as a
separate project. The test case is picked up as is from Alex's patch.
This change has been tested to verify that it does not cause any
issues on x86_64.
ChangeLog:
[BZ #18457]
* nptl/Makefile (tests): New test case tst-join7.
(modules-names): New test case module tst-join7mod.
* nptl/tst-join7.c: New file.
* nptl/tst-join7mod.c: New file.
* Makeconfig (tls-model): Pass -ftls-model=initial-exec for
all translation units in libc.so, libpthread.so and rtld.
|
|
|
|
|
|
|
|
|
| |
* elf/Makefile [ifeq (yes,$(build-shared)) (tests)] (tst-nodelete):
Add iff $CXX is set.
[ifeq (yes,$(build-shared)) (modules-names)] (tst-nodelete-rtldmod):
Likewise.
(tst-nodelete-zmodiff): Likewise.
* nptl/Makefile [[ifeq (,$(CXX))] (tests-unsupported)]: Add tst-once5.
|
|
|
|
|
|
|
| |
The Linux kernel futex documentation now states that since Linux 2.6.22,
FUTEX_WAIT does return EINTR only when interrupted by a signal, and not
spuriously anymore. We only support more recent kernels, so clean up
EINTR handling in the semaphore and update the comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds new functions for futex operations, starting with wait,
abstimed_wait, reltimed_wait, wake. They add documentation and error
checking according to the current draft of the Linux kernel futex manpage.
Waiting with absolute or relative timeouts is split into separate functions.
This allows for removing a few cases of code duplication in pthreads code,
which uses absolute timeouts; also, it allows us to put platform-specific
code to go from an absolute to a relative timeout into the platform-specific
futex abstractions..
Futex operations that can be canceled are also split out into separate
functions suffixed by "_cancelable".
There are separate versions for both Linux and NaCl; while they currently
differ only slightly, my expectation is that the separate versions of
lowlevellock-futex.h will eventually be merged into futex-internal.h
when we get to move the lll_ functions over to the new futex API.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and also powerpc64 and powerpc64le. See the discussion in the thread
below for details. This change reverts the problematic bits leaving
the added test in place and marking XFAIL in anticipation of fixing
the bug in the near future.
https://sourceware.org/ml/libc-alpha/2015-07/msg00141.html
[BZ #18435]
* nptl/pthreadP.h (pthread_cleanup_push, pthread_cleanup_pop):
Revert commit ed225df3ad9cbac3c22ec3f0fbbed1f9c61d1c54.
* nptl/Makefile (test-xfail-tst-once5): Define.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the initialization routine to exit by throwing an exception.
Such an execution, termed exceptional, requires call_once to
propagate the exception to its caller. A program may contain
any number of exceptional executions but only one returning
execution (which, if it exists, must be the last execution
with the same once flag).
On POSIX systems such as Linux, std::call_once is implemented
in terms of pthread_once. However, as discussed in libstdc++
bug 66146 - "call_once not C++11-compliant on ppc64le," GLIBC's
pthread_once hangs when the initialization function exits by
throwing an exception on at least arm and ppc64 (though
apparently not on x86_64). This effectively prevents call_once
from conforming to the C++ requirements since there doesn't
appear to be a thread-safe way to work around this problem in
libstdc++.
This patch changes pthread_once to handle gracefully init
functions that exit by throwing exceptions. It was successfully
tested on ppc64, ppc64le, and x86_64.
[BZ #18435]
* nptl/Makefile: Add tst-once5.cc.
* nptl/pthreadP.h (pthread_cleanup_push, pthread_cleanup_pop):
Remove macro redefinitions.
* nptl/tst-once5.cc: New test.
|
|
|
|
|
|
|
| |
The probes are not provided on all architectures (and only partially by the
x86 assembly implementation), and we are not aware of actual uses of these
probes.
a need for them.
|
|
|
|
|
|
|
|
|
| |
This patch combines BUSY_WAIT_NOP and atomic_delay into a new
atomic_spin_nop function and adjusts all clients. The new function is
put into atomic.h because what is best done in a spin loop is
architecture-specific, and atomics must be used for spinning. The
function name is meant to tell users that this has no effect on
synchronization semantics but is a performance aid for spinning.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mq_notify (present in POSIX by 1996) brings in references to
pthread_barrier_init and pthread_barrier_wait (new in the 2001 edition
of POSIX). This patch fixes this by making those functions into weak
aliases of __pthread_barrier_*, exporting the __pthread_barrier_*
names at version GLIBC_PRIVATE and using them in mq_notify.
Tested for x86_64 and x86 (testsuite, and comparison of installed
stripped shared libraries). Changes in addresses from dynamic symbol
table / PLT changes render most comparisons not particularly useful,
but when the addresses of subsequent code don't change there's no sign
of unexpected changes there. This patch does not remove any
linknamespace XFAILs because of other namespace issues remaining with
mqueue.h functions.
[BZ #18544]
* nptl/pthread_barrier_init.c (pthread_barrier_init): Rename to
__pthread_barrier_init and define as weak alias of
__pthread_barrier_init.
* sysdeps/sparc/nptl/pthread_barrier_init.c
(pthread_barrier_init): Likewise.
* nptl/pthread_barrier_wait.c (pthread_barrier_wait): Rename to
__pthread_barrier_wait and define as weak alias of
__pthread_barrier_wait.
* sysdeps/sparc/nptl/pthread_barrier_wait.c
(pthread_barrier_wait): Likewise.
* sysdeps/sparc/sparc32/pthread_barrier_wait.c
(pthread_barrier_wait): Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
(pthread_barrier_wait): Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
(pthread_barrier_wait): Likewise.
* nptl/Versions (libpthread): Export __pthread_barrier_init and
__pthread_barrier_wait at version GLIBC_PRIVATE.
* include/pthread.h (__pthread_barrier_init): Declare.
(__pthread_barrier_wait): Likewise.
* sysdeps/unix/sysv/linux/mq_notify.c (notification_function):
Call __pthread_barrier_wait instead of pthread_barrier_wait.
(helper_thread): Likewise.
(init_mq_netlink): Call __pthread_barrier_init instead of
pthread_barrier_init.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The sem_* functions bring in references to tdelete, tfind, tsearch and
twalk. But the t* functions are XSI-shaded, while sem_* aren't. This
patch fixes this by using __t* instead, exporting those functions from
libc at version GLIBC_PRIVATE (since sem_* are in libpthread) and
using libc_hidden_* for the benefit of calls within libc.
Tested for x86_64 and x86 (testsuite, and comparison of disassembly of
installed stripped shared libraries). libpthread gets changes from
PLT reordering; addresses in libc change because of PLT / dynamic
symbol table changes.
[BZ #18536]
* misc/tsearch.c (__tsearch): Use libc_hidden_def.
(__tfind): Likewise.
(__tdelete): Likewise.
(__twalk): Likewise.
* misc/Versions (libc): Add __tdelete, __tfind, __tsearch and
__twalk to GLIBC_PRIVATE.
* include/search.h (__tsearch): Use libc_hidden_proto.
(__tfind): Likewise.
(__tdelete): Likewise.
(__twalk): Likewise.
* nptl/sem_close.c (sem_close): Call __twalk instead of twalk.
Call __tdelete instead of tdelete.
* nptl/sem_open.c (check_add_mapping): Call __tfind instead of
tfind. Call __tsearch instead of tsearch.
* sysdeps/sparc/sparc32/sem_open.c (check_add_mapping): Likewise.
* conform/Makefile (test-xfail-POSIX/semaphore.h/linknamespace):
Remove variable.
(test-xfail-POSIX2008/semaphore.h/linknamespace): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 2008 edition of POSIX removed h_errno, but some functions still
bring in references to the h_errno external symbol. As this symbol is
not a part of the public ABI (only __h_errno_location is), this patch
fixes this by renaming the GLIBC_PRIVATE TLS symbol to __h_errno.
Tested for x86_64 and x86 (testsuite, and comparison of installed
shared libraries). Disassembly of all shared libraries using h_errno
changes because of the renaming (and changes to associated TLS / GOT
offsets in some cases); disassembly of libpthread on x86_64 changes
more substantially because the enlargement of .dynsym affects
subsequent addresses.
[BZ #18520]
* inet/herrno.c (h_errno): Rename to __h_errno.
(__libc_h_errno): Define as alias of __h_errno not h_errno.
* include/netdb.h [IS_IN_LIB && !IS_IN (libc)] (h_errno): Define
to __h_errno instead of h_errno.
* nptl/herrno.c (h_errno): Rename to __h_errno.
(__h_errno_location): Refer to __h_errno not h_errno.
* resolv/Versions (h_errno): Rename to __h_errno.
* conform/Makefile (test-xfail-XOPEN2K8/grp.h/linknamespace):
Remove variable.
(test-xfail-XOPEN2K8/pwd.h/linknamespace): Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In commit 02657da2cf4457804ed938ee08b8316249126444, .interp section
was removed from libpthread.so. This led to an error:
$ /lib64/libpthread.so.0
Native POSIX Threads Library by Ulrich Drepper et al
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Forced unwind support included.
Segmentation fault
(gdb) bt
#0 0x00000000000055a6 in _exit@plt ()
Unfortunately, there is no way to add a regression test for the bug
because .interp specifies the path to dynamic linker of the target
system.
[BZ #18479]
* nptl/pt-interp.c: New file.
* nptl/Makefile (libpthread-routines, libpthread-shared-only-routines):
Add pt-interp.
[$(build-shared) = yes] ($(objpfx)pt-interp.os): Depend on
$(common-objpfx)runtime-linker.h.
|
|
|
|
|
|
|
|
|
| |
This adds wake-ups that would be missing if assuming that for a
non-writer-preferring rwlock, if one thread has acquired a rdlock and
does not release it, another thread will eventually acquire a rdlock too
despite concurrent write lock acquisition attempts. BZ 14958 is about
supporting this assumption. Strictly speaking, this isn't a valid
test case, but nonetheless worth supporting (see comment 7 of BZ 14958).
|
|
|
|
|
|
|
|
|
|
| |
If we set up a rwlock to prefer writers (and disallow recursive rdlock
acquisitions), then readers will block for writers that are blocked to
acquire the lock (otherwise, readers could constantly enter and exit,
and the writer would never get the lock). However, the existing
implementation did not wake such readers when the writer timed out.
This patch adds the missing wake-up.
There's no similar case for writers being blocked on readers.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch removes the socket.S implementation for all ports and replace
it by a C implementation using socketcall. For ports that implement
the syscall directly, there is no change.
The patch idea is to simplify the socket function implementation that
uses the socketcall to be based on C implemetation instead of a pseudo
assembly implementation with arch specific parts. The patch then remove
the assembly implementatation for the ports which uses socketcall
(i386, microblaze, mips, powerpc, sparc, m68k, s390 and sh).
I have cross-build GLIBC for afore-mentioned ports and tested on both
i386 and ppc32 without regressions.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While trying to get nptl/tst-initializers1.c to include the test skeleton, I
came across a couple of speed bumps. Firstly: after making the appropriate
changes to the test, running `make check' led to this error:
> In file included from ../malloc/malloc.h:24:0,
..
> from tst-initializers1.c:60:
> ../include/stdio.h:111:1: error: unknown type name `wint_t'
> extern wint_t __getwc_unlocked (FILE *__fp);
So, `wint_t' is used before being defined. Question: Why did test-skeleton.c
not cause this error in any of the other tests that include it?
Anyway, I noticed include/stdio.h includes stddef.h, which in turn defines
`wint_t', but only if `__need_wint_t' is defined. So I put in a
`#define __need_wint_t' before the include to get rid of the error. Is that
the correct fix?
A subsequent `make && make check' led to this second error:
> from tst-initializers1-c89.c:1:
> ../test-skeleton.c: In function `main':
> ../test-skeleton.c:356:11: error: `for' loop initial declarations are only
> allowed in C99 mode
> for (struct temp_name_list *n = temp_name_list;
Although there seem to be several other C89 no-noes in test-skeleton.c, I
needed only to fix this specific one for gcc-4.8.3 to stop complaining.
|
|
|
|
|
|
| |
This patch moves the libc-vdso.h internal header from bits folder to
default architecture one and also corrects the remaning includes in
the files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sem_timedwait converts absolute timeouts to relative to pass them to
the futex syscall. (Before the recent reimplementation, on x86_64 it
used FUTEX_CLOCK_REALTIME, but not on other architectures.)
Correctly implementing POSIX requirements, however, requires use of
FUTEX_CLOCK_REALTIME; passing a relative timeout to the kernel does
not conform to POSIX. The POSIX specification for sem_timedwait says
"The timeout shall be based on the CLOCK_REALTIME clock.". The POSIX
specification for clock_settime says "If the value of the
CLOCK_REALTIME clock is set via clock_settime(), the new value of the
clock shall be used to determine the time of expiration for absolute
time services based upon the CLOCK_REALTIME clock. This applies to the
time at which armed absolute timers expire. If the absolute time
requested at the invocation of such a time service is before the new
value of the clock, the time service shall expire immediately as if
the clock had reached the requested time normally.". If a relative
timeout is passed to the kernel, it is interpreted according to the
CLOCK_MONOTONIC clock, and so fails to meet that POSIX requirement in
the event of clock changes.
This patch makes sem_timedwait use lll_futex_timed_wait_bitset with
FUTEX_CLOCK_REALTIME when possible, as done in some other places in
NPTL. FUTEX_CLOCK_REALTIME is always available for supported Linux
kernel versions; unavailability of lll_futex_timed_wait_bitset is only
an issue for hppa (an issue noted in
<https://sourceware.org/glibc/wiki/PortStatus>, and fixed by the
unreviewed
<https://sourceware.org/ml/libc-alpha/2014-12/msg00655.html> that
removes the hppa lowlevellock.h completely).
In the FUTEX_CLOCK_REALTIME case, the glibc code still needs to check
for negative tv_sec and handle that as timeout, because the Linux
kernel returns EINVAL not ETIMEDOUT for that case, so resulting in
failures of nptl/tst-abstime and nptl/tst-sem13 in the absence of that
check. If we're trying to distinguish between Linux-specific and
generic-futex NPTL code, I suppose having this in an nptl/ file isn't
ideal, but there doesn't seem to be any better place at present.
It's not possible to add a testcase for this issue to the testsuite
because of the requirement to change the system clock as part of a
test (this is a case where testing would require some form of
container, with root in that container, and one whose CLOCK_REALTIME
is isolated from that of the host; I'm not sure what forms of
containers, short of a full virtual machine, provide that clock
isolation).
Tested for x86_64. Also tested for powerpc with the testcase included
in the bug.
[BZ #18138]
* nptl/sem_waitcommon.c: Include <kernel-features.h>.
(futex_abstimed_wait)
[__ASSUME_FUTEX_CLOCK_REALTIME && lll_futex_timed_wait_bitset]:
Use lll_futex_timed_wait_bitset with FUTEX_CLOCK_REALTIME instead
of lll_futex_timed_wait.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for ChangeLog
[BZ #17090]
[BZ #17620]
[BZ #17621]
[BZ #17628]
* NEWS: Update.
* elf/dl-tls.c (_dl_update_slotinfo): Clean up outdated DTV
entries with Static TLS too. Skip entries past the end of the
allocated DTV, from Alan Modra.
(tls_get_addr_tail): Update to glibc_likely/unlikely. Move
Static TLS DTV entry set up from...
(_dl_allocate_tls_init): ... here (fix modid assertion), ...
* elf/dl-reloc.c (_dl_nothread_init_static_tls): ... here...
* nptl/allocatestack.c (init_one_static_tls): ... and here...
* elf/dlopen.c (dl_open_worker): Drop l_tls_modid upper bound
for Static TLS.
* elf/tlsdeschtab.h (map_generation): Return size_t. Check
that the slot we find is associated with the given map before
using its generation count.
* nptl_db/db_info.c: Include ldsodefs.h.
(rtld_global, dtv_slotinfo_list, dtv_slotinfo): New typedefs.
* nptl_db/structs.def (DB_RTLD_VARIABLE): New macro.
(DB_MAIN_VARIABLE, DB_RTLD_GLOBAL_FIELD): Likewise.
(link_map::l_tls_offset): New struct field.
(dtv_t::counter): Likewise.
(rtld_global): New struct.
(_rtld_global): New rtld variable.
(dl_tls_dtv_slotinfo_list): New rtld global field.
(dtv_slotinfo_list): New struct.
(dtv_slotinfo): Likewise.
* nptl_db/td_symbol_list.c: Drop gnu/lib-names.h include.
(td_lookup): Rename to...
(td_mod_lookup): ... this. Use new mod parameter instead of
LIBPTHREAD_SO.
* nptl_db/td_thr_tlsbase.c: Include link.h.
(dtv_slotinfo_list, dtv_slotinfo): New functions.
(td_thr_tlsbase): Check DTV generation. Compute Static TLS
addresses even if the DTV is out of date or missing them.
* nptl_db/fetch-value.c (_td_locate_field): Do not refuse to
index zero-length arrays.
* nptl_db/thread_dbP.h: Include gnu/lib-names.h.
(td_lookup): Make it a macro implemented in terms of...
(td_mod_lookup): ... this declaration.
* nptl_db/db-symbols.awk (DB_RTLD_VARIABLE): Override.
(DB_MAIN_VARIABLE): Likewise.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
#15790)
pthread_mutexattr_settype adds PTHREAD_MUTEX_NO_ELISION_NP to kind,
which is an internal flag that pthread_mutexattr_gettype shouldn't
expose, since pthread_mutexattr_settype wouldn't accept it.
|