This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/21713] New: cacheinfo.c handle_intel errors on 486 processors


https://sourceware.org/bugzilla/show_bug.cgi?id=21713

            Bug ID: 21713
           Summary: cacheinfo.c handle_intel errors on 486 processors
           Product: glibc
           Version: 2.23
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: tedheadster at gmail dot com
                CC: drepper.fsp at gmail dot com
  Target Milestone: ---

This bug presumes we support ancient 32 bit i486 processors.

In sysdeps/x86_64/cacheinfo.c (called from 32bit i386 systems, oddly) it calls
handle_intel(). It immediately does an "assert(maxidx >= 2)". This fails on
early i486 processors, and I believe it even fails on Pentium 1 cpus.

Unfortunately, my Gentoo /sbin/init uses /lib/libc.so.6, so the system panics
when init gets a general protection fault and dies on the assert().

I was able to get the system to boot with the following patch, but it is
probably not the right solution:

--- glibc-2.23/sysdeps/x86_64/cacheinfo.c
+++ tmp/cacheinfo.c

@@ -259,7 +259,8 @@
 static long int __attribute__ ((noinline))
 handle_intel (int name, unsigned int maxidx)
 {
-  assert (maxidx >= 2);
+  if (maxidx < 2)
+    return 0;

  /* OK, we can use the CPUID instruction to get all info about the
     caches.  */

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]