1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Warn about unsupported DT_FLAGS_1 flags.

The dynamic loader will now warn about unsupported DT_FLAGS_1
flags when run with LD_DEBUG=files or LD_DEBUG=all.
This commit is contained in:
Carlos O'Donell
2012-11-29 18:09:12 -08:00
parent 6355e122f5
commit c93ec1f091
2 changed files with 15 additions and 2 deletions

View File

@ -151,8 +151,16 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
{
l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;
/* Only DT_1_SUPPORTED_MASK bits are allowed. */
assert ((l->l_flags_1 & ~DT_1_SUPPORTED_MASK) == 0);
/* Only DT_1_SUPPORTED_MASK bits are supported, and we would like
to assert this, but we can't. Users have been setting
unsupported DF_1_* flags for a long time and glibc has ignored
them. Therefore to avoid breaking existing applications the
best we can do is add a warning during debugging with the
intent of notifying the user of the problem. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)
&& l->l_flags_1 & ~DT_1_SUPPORTED_MASK)
_dl_debug_printf ("\nWARNING: Unsupported flag value(s) of 0x%x in DT_FLAGS_1.\n",
l->l_flags_1 & ~DT_1_SUPPORTED_MASK);
if (l->l_flags_1 & DF_1_NOW)
info[DT_BIND_NOW] = info[VERSYMIDX (DT_FLAGS_1)];