+2012-11-29 Carlos O'Donell <carlos@systemhalted.org>
+
+ * elf/get-dynamic-info.h (elf_get_dynamic_info): Warn
+ for unsupported DF_1_* bits when DL_DEBUG_FILES is set.
+
2012-11-29 Mike Frysinger <vapier@gentoo.org>
* sysdeps/unix/sysv/linux/clock_getcpuclockid.c (HAS_CPUCLOCK): Delete.
{
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)];