Fix run-time ARMv6 detection.
authorBen Noordhuis <info@bnoordhuis.nl>
Fri, 23 Jan 2015 06:00:37 +0000 (07:00 +0100)
committerBenedikt Meurer <bmeurer@chromium.org>
Fri, 23 Jan 2015 06:00:57 +0000 (06:00 +0000)
BUG=v8:3844
LOG=y
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/867713003

Patch from Ben Noordhuis <info@bnoordhuis.nl>.

Cr-Commit-Position: refs/heads/master@{#26234}

src/base/cpu.cc

index 1be0596..b5786a5 100644 (file)
@@ -456,7 +456,7 @@ CPU::CPU()
     //
     // See http://code.google.com/p/android/issues/detail?id=10812
     //
-    // We try to correct this by looking at the 'elf_format'
+    // We try to correct this by looking at the 'elf_platform'
     // field reported by the 'Processor' field, which is of the
     // form of "(v7l)" for an ARMv7-based CPU, and "(v6l)" for
     // an ARMv6-one. For example, the Raspberry Pi is one popular
@@ -468,6 +468,15 @@ CPU::CPU()
       }
       delete[] processor;
     }
+
+    // elf_platform moved to the model name field in Linux v3.8.
+    if (architecture_ == 7) {
+      char* processor = cpu_info.ExtractField("model name");
+      if (HasListItem(processor, "(v6l)")) {
+        architecture_ = 6;
+      }
+      delete[] processor;
+    }
   }
 
   // Try to extract the list of CPU features from ELF hwcaps.