[PATCH v10 1/4] elf: Add la_activity during application exit
Adhemerval Zanella
adhemerval.zanella@linaro.org
Tue Jan 18 13:10:40 GMT 2022
On 18/01/2022 08:29, Florian Weimer wrote:
> * Adhemerval Zanella via Libc-alpha:
>
>> diff --git a/elf/dl-fini.c b/elf/dl-fini.c
>> index de8eb1b3c9..2705a15c88 100644
>> --- a/elf/dl-fini.c
>> +++ b/elf/dl-fini.c
>> @@ -64,6 +64,11 @@ _dl_fini (void)
>> __rtld_lock_unlock_recursive (GL(dl_load_lock));
>> else
>> {
>> +#ifdef SHARED
>> + /* Auditing checkpoint: we will start deleting objects. */
>> + _dl_audit_activity_nsid (ns, LA_ACT_DELETE);
>> +#endif
>> +
>> /* Now we can allocate an array to hold all the pointers and
>> copy the pointers in. */
>> struct link_map *maps[nloaded];
>> @@ -153,6 +158,11 @@ _dl_fini (void)
>> /* Correct the previous increment. */
>> --l->l_direct_opencount;
>> }
>> +
>> +#ifdef SHARED
>> + /* Auditing checkpoint: we will start deleting objects. */
>> + _dl_audit_activity_nsid (ns, LA_ACT_CONSISTENT);
>> +#endif
>> }
>> }
>
> The tense in the second comment seems wrong.
Ack, in fact I think both comments do not add much (it is pretty obvious
from the function call). I will remove them.
>
>>
>> diff --git a/elf/tst-audit23.c b/elf/tst-audit23.c
>> new file mode 100644
>> index 0000000000..9a7e69c1e1
>> --- /dev/null
>> +++ b/elf/tst-audit23.c
>
>> + FILE *out = fmemopen (result.err.buffer, result.err.length, "r");
>> + TEST_VERIFY (out != NULL);
>> + char *buffer = NULL;
>> + size_t buffer_length = 0;
>> + while (xgetline (&buffer, &buffer_length, out))
>> + {
>> + if (startswith (buffer, "la_activity: "))
>
> It may be simpler (or easier to maintain going forward) to have the
> expected output (without varying pointers) and compare against that
> verbatim. This is what I implemented for some of the DNS tests.
The main issue is to handle the vDSO (is_vdso) and match the cookies
and address with the subsequent la_activities/la_objclose. So it
would require to keep track with some internal state anyway.
And checking on resolve/tst-ns_name.c I don't think it would be
simpler to use such scheme (specially the required handling it would
require to parse a possible input to handle line with multiple options
and different outputs).
More information about the Libc-alpha
mailing list