Add more comments to dlclose() algorithm.

The algorithm for scanning dependencies upon dlclose is
less than immediately obvious. This patch adds two bits
of comments that explain why you start the dependency
search at l_initfini[1], and why you need to restart
the search.

---

2013-05-09  Carlos O'Donell  <carlos@redhat.com>

	* elf/dl-close.c (_dl_close_worker): Add comments.
This commit is contained in:
Carlos O'Donell 2013-05-09 17:37:15 -04:00
parent ed41ffefc3
commit 3612972234
2 changed files with 10 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2013-05-09 Carlos O'Donell <carlos@redhat.com>
* elf/dl-close.c (_dl_close_worker): Add comments.
2013-05-09 Joseph Myers <joseph@codesourcery.com>
[BZ #15359]

View File

@ -183,6 +183,8 @@ _dl_close_worker (struct link_map *map)
/* Mark all dependencies as used. */
if (l->l_initfini != NULL)
{
/* We are always the zeroth entry, and since we don't include
ourselves in the dependency analysis start at 1. */
struct link_map **lp = &l->l_initfini[1];
while (*lp != NULL)
{
@ -193,6 +195,10 @@ _dl_close_worker (struct link_map *map)
if (!used[(*lp)->l_idx])
{
used[(*lp)->l_idx] = 1;
/* If we marked a new object as used, and we've
already processed it, then we need to go back
and process again from that point forward to
ensure we keep all of its dependencies also. */
if ((*lp)->l_idx - 1 < done_index)
done_index = (*lp)->l_idx - 1;
}