diff options
author | Leonid Lisovskiy <lly.dev@gmail.com> | 2016-06-20 20:29:44 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-06-22 08:02:51 +0200 |
commit | 0bc1394750885d4e4b2064aff6c48dd542c6f4b8 (patch) | |
tree | f7d2c3930d353dabfcae271be2bd5fc956869e06 /ldso/ldso/ldso.c | |
parent | fcbbde85024f494d7ba573bf8a4474755452efdd (diff) |
ldso: Consistently set & use DL_OPENED flag in both ld.so and libdl
Previously, DL_OPENED flag was set in libdl only and never used.
Set it centralized in _dl_load_elf_shared_library() & use it in
both ld.so and libdl.
Additionally, rename it to DL_OPENED2 for clarity.
Signed-off-by: Leonid Lisovskiy <lly.dev@gmail.com>
Diffstat (limited to 'ldso/ldso/ldso.c')
-rw-r--r-- | ldso/ldso/ldso.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index 7bb6a349b..4e8a49ef5 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -905,7 +905,7 @@ of this helper program; chances are you did not intend to run this program.\n\ #ifdef __LDSO_LDD_SUPPORT__ if (trace_loaded_objects && !_dl_trace_prelink && - tpnt1->usage_count == 1) { + !(tpnt1->init_flag & DL_OPENED2)) { /* This is a real hack to make * ldd not print the library * itself when run on a @@ -997,7 +997,7 @@ of this helper program; chances are you did not intend to run this program.\n\ # ifdef __LDSO_LDD_SUPPORT__ if (trace_loaded_objects && !_dl_trace_prelink && - tpnt1->usage_count == 1) { + !(tpnt1->init_flag & DL_OPENED2)) { _dl_dprintf(1, "\t%s => %s (%x)\n", cp2, tpnt1->libname, DL_LOADADDR_BASE(tpnt1->loadaddr)); @@ -1034,6 +1034,8 @@ of this helper program; chances are you did not intend to run this program.\n\ /* Insert the ld.so only once */ ldso_tpnt = add_ldso(tpnt, load_addr, ldso_mapaddr, auxvt, rpnt); + } else { + ldso_tpnt->init_flag |= DL_OPENED2; } ldso_tpnt->usage_count++; tpnt1 = ldso_tpnt; @@ -1064,7 +1066,7 @@ of this helper program; chances are you did not intend to run this program.\n\ #ifdef __LDSO_LDD_SUPPORT__ if (trace_loaded_objects && !_dl_trace_prelink && - tpnt1->usage_count == 1) { + !(tpnt1->init_flag & DL_OPENED2)) { _dl_dprintf(1, "\t%s => %s (%x)\n", lpntstr, tpnt1->libname, DL_LOADADDR_BASE(tpnt1->loadaddr)); |