Age | Commit message (Collapse) | Author |
|
tst-audit4 and tst-audit5 fail under AVX emulator due to je instead of
jne. This patch fixes them.
|
|
SSE registers are used for passing parameters and must be preserved
in runtime relocations. This is inside ld.so enforced through the
tests in tst-xmmymm.sh. But the malloc routines used after startup
come from libc.so and can be arbitrarily complex. It's overkill
to save the SSE registers all the time because of that. These calls
are rare. Instead we save them on demand. The new infrastructure
put in place in this patch makes this possible and efficient.
|
|
|
|
|
|
|
|
This reverts commit 7b7f43bed134db6a0da34282fffcbf0af10d4613.
|
|
The test now takes the callgraph into account. Only code called
during runtime relocation is affected by the limitation. We now
determine the affected object files as closely as possible from
the outside. This allowed to remove some the specializations
for some of the string functions as they are only used in other
code paths.
|
|
This reduces the coarse static callgraph that can be discovered by
looking at the object files.
|
|
|
|
There were several issues when the initial 31 entries hashtab filled up.
size * 3 <= tab->n_elements is always false, table can't have more elements
than its size. I assume from libiberty/hashtab.c this meant to be check for
3/4 full. Even after fixing that, _dl_higher_prime_number (31) apparently
returns 31, only _dl_higher_prime_number (32) returns 61. And, size
variable wasn't updated during reallocation, which means during reallocation
the insertion of the new entry was done into a wrong spot.
All this lead to a hang in ld.so, because a search with n_elements 31 size
31 wouldn't ever terminate.
|
|
|
|
This patch introduces a test to make sure no function modifies the
xmm/ymm registers. With the exception of the auditing functions.
The test is probably too pessimistic. All code linked into ld.so
is checked. Perhaps at some point the callgraph starting from
_dl_fixup and _dl_profile_fixup is checked and we can start using
faster SSE-using functions in parts of ld.so.
|
|
|
|
|
|
All commits should have happened before the mutex lock is taken.
Therefore use the _rel variant of the cmpxchg atomic op.
|
|
|
|
When doing IPv4+6 lookups we have to pass up the error record from
send_dg.
|
|
|
|
|
|
getaddrinfo didn't update the status variable in that round of the
loop if no callback was used.
|
|
The file contained some code which was never used. Don't compile it
in.
|
|
Ever since the /usr/include/linux headers got cleaned up this isn't
necessary. Meanwhile everybody should have these cleanups.
|
|
|
|
|
|
|
|
We need this support in NPTL now to avoid the hand-coded tables.
|
|
|
|
When multiarch is enabled we have this information stored. Use it.
|
|
The most recent AP 485 describes a few more cache descriptors for
L3 caches with 24-way associativity.
|
|
There will be more than one function which, in multiarch mode, wants
to use SSSE3. We should not test in each of them for Atoms with
slow SSSE3. Instead, disable the SSSE3 bit in the startup code for
such machines.
|
|
The posix/tst-rfc3484* test cases caused warnings in newer gccs
because the unused but copied sin_zero part of sockaddr_in wasn't
explicitly initialized.
|
|
|
|
|
|
References to unique symbols from copy relocations can only come
from executables which cannot be unloaded anyway. Optimize the
code to set the unload flag a bit.
|
|
|
|
The hash value can be zero, so we need a different test for empty
slots. And unify the way we prevent a DSO from being unloaded.
|
|
|
|
|
|
|
|
|
|
This patch implements SSE4.2 strstr/strcasestr, using Knuth-Morris-Pratt
string searching algorithm.
|
|
|
|
If a locale does not have 8-bit characters with case conversion which
are different from the ASCII conversion (±0x20) then we can perform
some optimizations. These will follow later.
|
|
|
|
Add support for the new FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI
options of futex.
|
|
It just happens that __pthread_enable_asynccancel doesn't modify the $rdi
register. But this isn't guaranteed. Hence we reload the register after
the calls.
|
|
timeout.
|
|
|
|
timeout.
|
|
|