| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(cherry picked from commit 0876917582041d17a9eb6b08894c1123a2affe74)
|
|
|
|
| |
(cherry picked from commit 4c35fb65c9ea221561bc5698358944a73383b3d6)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The aux_cache fix of bug 11149 introduced a new bug - normally,
ldconfig -r never cares if the auxiliary cache is not available and
that is not a fatal problem, however this is not the case in case
of ldconfig -r when executed as non-root. In that case, ldconfig -r
fails hard unless var/cache/ldconfig/ exists within the chroot. This
patch fixes that.
Conflicts:
ChangeLog
(cherry picked from commit 6db52fbb272979bdcd5d5dd7ab187e1893eda9e3)
|
|
|
|
|
|
|
|
| |
(cherry picked from commit f09677388a44cd1460f8986ef1b096c73bd5b958)
Fix assertion in ld.so, introduced by delayed adding to global list.
(cherry picked from commit fa41c84d73be804639ecb2250f0b793b1a6f765e)
|
|
|
|
| |
(cherry picked from commit bc96fbda275c305ddc1b0b6d94fc68d81369221a)
|
|
|
|
| |
(cherry picked from commit 22cd1c9bcf57c5829d65b6da825f7a459d40c9eb)
|
|
|
|
|
|
| |
ld.so.cache matching.
(cherry picked from commit 5dbc3b6cc0b759bf4b22d851ccb9cbf3e3cbc6ef)
|
|
|
|
| |
(cherry picked from commit 702e8f1450279f3e5dc22bf0935ee5ece4369fdb)
|
|
|
|
| |
(cherry picked from commit 8e9f92e9d5d7737afdacf79b76d98c4c42980508)
|
|
|
|
| |
(cherry picked from commit 80da2e093c0e465cfa6e561488aac51c236b6fd2)
|
|
|
|
| |
(cherry picked from commit b32b8b451b398ebae33d4cf8039c03f4d615c0c3)
|
|
|
|
| |
(cherry picked from commit 9acbe24da8c71704d03e30d1223f997442d4be0c)
|
|
|
|
| |
(cherry picked from commit 3f7dcb2b0f9f2e771f2fd0139f032198c2d01ba9)
|
|
|
|
| |
(cherry picked from commit 7dee26605bf8627f0673f81635c38c8a565dd2b7)
|
|
|
|
| |
(cherry picked from commit f2976023940a8ef3bbe0c7e593897e1b612370f1)
|
|
|
|
| |
(cherry picked from commit 49bd556d43f55d0bb6d76d57e846af85f0c986c9)
|
|
|
|
| |
(cherry picked from commit 18a26b301b6ab0d68474fbfffb0d17adf69e8824)
|
|
|
|
| |
(cherry picked from commit 4bc2bcba67e870778fb9397f29435ee1b66bebf3)
|
|
|
|
| |
(cherry picked from commit db07e962b6ea963dbb345439f6ab9b0cf74d87c5)
|
|
|
|
| |
(cherry picked from commit 7a033a828df19b4f3bfd7e4d66102f63d1167f08)
|
|
|
|
|
|
|
|
| |
On some architectures the update of the l_used field in the lookup
functions races with setting the other bits in the bitfield. Simply
avoid this and optimize use of l_used in general.
(cherry picked from commit 2af6396817fb9df98e63de75dd59fd999ee9f1d0)
|
| |
|
|
|
|
|
|
| |
do_sym should use DL_FIXUP_VALUE_XXX macros to call IFUNC function.
Otherwise, it won't compile on ia64. This patch fixes it and adds
a test.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
When DL_LOOKUP_ADD_DEPENDENCY was introduced a few callers of
_dl_lookup_versioned_symbol were not properly adjusted. One of them
survived until now.
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes mixed SSE/AVX audit and checks AVX only once in
_dl_runtime_profile. When an AVX or SSE register value in pltenter is
modified, we have to make sure that the SSE part value is the same in both
lr_xmm and lr_vector fields so that pltexit will get the correct value
from either lr_xmm or lr_vector fields. AVX-enabled pltenter should
update both lr_xmm and lr_vector fields to support stacked AVX/SSE
pltenter functions.
|
|
|
|
|
| |
An invalid symbol name pointer was entered into the hash table while
enlarging it.
|
|
|
|
|
|
|
|
|
|
| |
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 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.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
The prototype for _dl_higher_prime_number was missing. While at it,
the function is now marked with internal_function.
|
| |
|
| |
|
|
|
|
|
| |
It is not necessary/useful anymore to have the content separate
from dl-lookup.c.
|
|
|
|
|
|
|
|
|
| |
Some symbols have to be identified process-wide by their name. This is
particularly important for some C++ features (e.g., class local static data
and static variables in inline functions). This cannot completely be
implemented with ELF functionality so far. The STB_GNU_UNIQUE binding
helps by ensuring the dynamic linker will always use the same definition for
all symbols with the same name and this binding.
|
| |
|
| |
|
| |
|
| |
|
| |
|