patches/glibc/2.7/250-sh-chop-linux-version.patch
author Darcy Watkins <dwatkins@tranzeo.com>
Thu Aug 05 18:19:07 2010 +0200 (2010-08-05)
branch1.8
changeset 2073 a3b7a63dce01
permissions -rw-r--r--
cc/gcc: with static ppl, correctly link with libm

On some Fedora boxen (at least FC13), it is also required
to link with libm when static ppl is used.
(transplanted from bcd33fce4db9c18223b59ecdc96f10bf6dd574de)
yann@962
     1
--- glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h.orig	2007-09-15 23:54:08.000000000 +0100
yann@962
     2
+++ glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h	2008-08-20 09:26:26.000000000 +0100
yann@962
     3
@@ -83,6 +83,10 @@
yann@962
     4
   int parts;
yann@962
     5
   char *cp;
yann@962
     6
   struct utsname uts;
yann@962
     7
+  int dotsfound = 0;
yann@962
     8
+  int versionindex = 0;
yann@962
     9
+  char *choppoint;
yann@962
    10
+
yann@962
    11
 
yann@962
    12
   /* Try the uname system call.  */
yann@962
    13
   if (__uname (&uts))
yann@962
    14
@@ -102,8 +106,34 @@
yann@962
    15
   else
yann@962
    16
     buf = uts.release;
yann@962
    17
 
yann@962
    18
+  /* We are only interested in the first three kernel numbers, so */
yann@962
    19
+  /* chop off anything past that: */
yann@962
    20
+
yann@962
    21
+  choppoint = buf;
yann@962
    22
+  while (1)
yann@962
    23
+    {
yann@962
    24
+      versionindex++;
yann@962
    25
+      if (versionindex == 63) break;
yann@962
    26
+      if (*choppoint == '.') dotsfound++;
yann@962
    27
+      choppoint++;
yann@962
    28
+      if (dotsfound == 2)
yann@962
    29
+      {
yann@962
    30
+        if (*choppoint == '0' || *choppoint == '1'
yann@962
    31
+          || *choppoint == '2' || *choppoint == '3'
yann@962
    32
+          || *choppoint == '4' || *choppoint == '5'
yann@962
    33
+          || *choppoint == '6' || *choppoint == '7'
yann@962
    34
+          || *choppoint == '8' || *choppoint == '9')
yann@962
    35
+          continue;
yann@962
    36
+        else
yann@962
    37
+          {
yann@962
    38
+            *choppoint = 0;
yann@962
    39
+            break;
yann@962
    40
+          }
yann@962
    41
+      }
yann@962
    42
+    }
yann@962
    43
+
yann@962
    44
   /* Now convert it into a number.  The string consists of at most
yann@962
    45
-     three parts.  */
yann@962
    46
+     three parts.  Now it does, anyway.  ;-)  */
yann@962
    47
   version = 0;
yann@962
    48
   parts = 0;
yann@962
    49
   cp = buf;