[PATCH v5 2/4] Add system-wide tunables: cache ld.so.cache
DJ Delorie
dj@redhat.com
Fri Feb 27 19:38:19 GMT 2026
Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes:
> I agree with Yury here that we need to add some tests, at least some
> minimal one that stress the ld.so.cache reload (which is not the usual
> scenario). I would suggest add test-containts tests that:
Yup, I was thinking the same thing. One test should be able to test
both good->bad and bad->good as well as changes to paths.
> 1.3. If not modifying the ld.so.cache contents keep the same
> contents.
I assume this just requires doing two dlopen()'s back to back and making
sure they both work?
>> + static int copy_old_time = 0;
>
> Maybe use bool here?
Can do.
>> + /* At this point, NEW_CACHE_FILE_TIME is valid as well as
>> + CACHE_FILE_TIME, so we compare them. We list fields in the order
>> + they're most likely to be different in. */
>> + return ((new_cache_file_time.st_mtime != cache_file_time.st_mtime)
>> + || (new_cache_file_time.st_ino != cache_file_time.st_ino)
>> + || (new_cache_file_time.st_size != cache_file_time.st_size)
>> + || (new_cache_file_time.st_dev != cache_file_time.st_dev)
>> + );
>
> Maybe only keep the required fields, instead of while stat struct?
> If we use a struct the test could optimized in bulk by the compiler.
Done. I used this syntax to avoid having to "know" what the struct stat
field types are:
static struct {
typeof (struct __stat64_t64.st_mtime) mtime;
typeof (struct __stat64_t64.st_ino) ino;
typeof (struct __stat64_t64.st_size) size;
typeof (struct __stat64_t64.st_dev) dev;
} cache_file_time, new_cache_file_time;
More information about the Libc-alpha
mailing list