Add secondary counter in place of tls_nodelete flag

The tls_nodelete state should apply to load_group not
isolated soinfo. This actually also means that multiple
soinfos may have tls_counter on their dso_handles.

This change replaces TLS_NODELETE flag with secondary counter.
Note that access to the secondary counter (located inside soinfo)
is pretty expensive because it requires soinfo lookup by dso_handle
whereas dso_handle counter is much faster. This is why it is updated
only when dso_handle counter starts or hits 0.

Bug: http://b/80278285
Test: bionic-unit-tests --gtest_filter=dl*
Change-Id: I535583f6714e45fa2a7eaf7bb3126da20ee7cba9
diff --git a/tests/Android.bp b/tests/Android.bp
index fb0e8b1..707d0fe 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -573,6 +573,7 @@
         "libtest_with_dependency_loop_c",
         "libtest_with_dependency_loop",
         "libtest_with_dependency",
+        "libtest_indirect_thread_local_dtor",
         "libtest_invalid-empty_shdr_table.so",
         "libtest_invalid-rw_load_segment.so",
         "libtest_invalid-unaligned_shdr_offset.so",
@@ -583,6 +584,7 @@
         "libtest_invalid-textrels.so",
         "libtest_invalid-textrels2.so",
         "libtest_thread_local_dtor",
+        "libtest_thread_local_dtor2",
         "preinit_getauxval_test_helper",
         "preinit_syscall_test_helper",
         "libnstest_private_external",