Hi, this patch is our attempt at resolving the slow shared object sorting situation in #17645, #15310, and some effort at #15311. I realize this is pretty unsuitable timing to be submitting a patch of such nature now (probably way too late to be included into 2.30), but still sending now anyways as this will probably need quite some discussion before being approved. Prior attempts at solving this slow sorting behavior appeared to have failed due to inadequate proposed testing, therefore cannot convince reviewers to touch what seems to be perceived as a sensitive and easy to break part of ld.so. Therefore the first part of this patch is not a change to the dynamic loader code proper, but a testing framework for constructing DSO sorting tests. It consists of a new Python script 'dso-ordering-test.py' that serves to generate both testcase source files and the needed Makefile fragments from a short description string, for example: a->b->c->d // four objects linked one after another a->[bc]->d;b->c // a depends on b and c, which both depend on d, // b depends on c (b,c linked to object a in fixed order) a->b->c;{+a;%a;-a} // a, b, c serially dependent, main program uses // dlopen/dlsym/dlclose on object a a->b->c;{}!->[abc] // a, b, c serially dependent; multiple tests generated // to test all permutations of a, b, c ordering linked // to main program (Above is just a short description of what the script can do, more documentation is in the script comments.) and, a patch to glibc/elf/Makefile which uses this script to add a few DSO sorting testcases. The description string notation and output form of the generated testcases is short enough that both the test descriptions and expected outcomes can all directly be specified in the Makefile. In terms of the tests I added using this script, I am not completely sure they are (together with existing tests) adequate to prove algorithmic integrity in face of any ld.so code changes, but the script should provide a solid tool to further improve on coverage. Also welcome suggestions if the current features are still lacking in expressing some case of shared object relations, or if the documentation still feels unclear. Thanks, Chung-Lin 2019-07-20 Chung-Lin Tang [BZ #17645] [BZ #15311] [BZ #15310] * elf/Makefile (test_dso_ordering): New make function. (tst-dso-ordering[123456789]): Define new DSO sorting tests. (tst-bz15311): Testcase from #15311. * scripts/dso-ordering-test.py: New script.