--- libc/elf/dl-lookup.c 2006-06-27 10:12:22.000000000 +0200 +++ libc/elf/dl-lookup.c 27 Jun 2006 14:59:07 -0000 @@ -364,7 +364,13 @@ Elf_Symndx *hash; Elf_Symndx nchain; - if (__builtin_expect (map->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM +#ifdef SHARED + extern int nognubuckets; +#else +#define nognubuckets 0 +#endif + if (!nognubuckets && + __builtin_expect (map->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] != NULL, 1)) { --- libc/elf/rtld.c.~1.362.~ 2006-04-08 12:50:07.000000000 -0700 +++ libc/elf/rtld.c 2006-06-27 07:54:51.000000000 -0700 @@ -2493,6 +2493,7 @@ process_dl_audit (char *str) extern char **_environ attribute_hidden; +int nognubuckets; static void process_envvars (enum mode *modep) { @@ -2520,6 +2521,11 @@ process_envvars (enum mode *modep) switch (len) { + case 1: + if (envline[0] == 'X') + nognubuckets = 1; + break; + case 4: /* Warning level, verbose or not. */ if (memcmp (envline, "WARN", 4) == 0)