[AArch64] fix an issue with older /proc/cpuinfo layout
authorPaul Osmialowski <pawel.osmialowski@arm.com>
Wed, 13 Dec 2017 16:12:24 +0000 (16:12 +0000)
committerPaul Osmialowski <pawel.osmialowski@arm.com>
Wed, 13 Dec 2017 16:12:24 +0000 (16:12 +0000)
There are two /proc/cpuinfo layots in use for AArch64: old and new.
The old one has all 'processor : n' lines in one section, hence
checking for duplications does not make sense.

Differential Revision: https://reviews.llvm.org/D41000

llvm-svn: 320593

openmp/runtime/src/kmp_affinity.cpp

index d7a0eda0d92ac1b229021ba901dd102f21232907..9cc504b65208cf3c8d6dff28aece0761f3a7a9b3 100644 (file)
@@ -2028,7 +2028,15 @@ static int __kmp_affinity_create_cpuinfo_map(AddrUnsPair **address2os,
         if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1))
           goto no_val;
         if (threadInfo[num_avail][osIdIndex] != UINT_MAX)
+#if KMP_ARCH_AARCH64
+          // Handle the old AArch64 /proc/cpuinfo layout differently,
+          // it contains all of the 'processor' entries listed in a
+          // single 'Processor' section, therefore the normal looking
+          // for duplicates in that section will always fail.
+          num_avail++;
+#else
           goto dup_field;
+#endif
         threadInfo[num_avail][osIdIndex] = val;
 #if KMP_OS_LINUX && !(KMP_ARCH_X86 || KMP_ARCH_X86_64)
         char path[256];