about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/i386/dl-librecon.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/dl-librecon.h')
-rw-r--r--sysdeps/unix/sysv/linux/i386/dl-librecon.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/dl-librecon.h b/sysdeps/unix/sysv/linux/i386/dl-librecon.h
index 7d486c5d91..26311b32e4 100644
--- a/sysdeps/unix/sysv/linux/i386/dl-librecon.h
+++ b/sysdeps/unix/sysv/linux/i386/dl-librecon.h
@@ -48,6 +48,29 @@
 
 /* Recognizing extra environment variables.  */
 #define EXTRA_LD_ENVVARS \
+  case 13:								      \
+    if (memcmp (&envline[3], "ASSUME_KERNEL", 13) == 0)			      \
+      {									      \
+	unsigned long int i, j, osversion = 0;				      \
+	char *p = &envline[17], *q;					      \
+									      \
+	for (i = 0; i < 3; i++, p = q + 1)				      \
+	  {								      \
+	    j = __strtoul_internal (p, &q, 0, 0);			      \
+	    if (j >= 255 || p == q || (i < 2 && *q && *q != '.'))	      \
+	      {								      \
+		osversion = 0;						      \
+		break;							      \
+	      }								      \
+	    osversion |= j << (16 - 8 * i);				      \
+	    if (!*q)							      \
+	      break;							      \
+	  }								      \
+	if (osversion)							      \
+	  _dl_osversion = osversion;					      \
+	break;								      \
+      }									      \
+									      \
   case 15:								      \
     if (memcmp (&envline[3], "LIBRARY_VERSION", 15) == 0)		      \
       {									      \