[PATCH] D17190: [compiler-rt] Return correct size of struct pthread for glibc-2.12.2
Jonas Hahnfeld via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 12 00:24:35 PST 2016
Hahnfeld created this revision.
Hahnfeld added reviewers: samsonov, kcc, earthdok.
Hahnfeld added a subscriber: llvm-commits.
There seems to be a difference between 2.12.1 and 2.12.2 in 64-bit build.
Tested on Scientific Linux 6.6, based on RHEL.
http://reviews.llvm.org/D17190
Files:
lib/sanitizer_common/sanitizer_linux_libcdep.cc
Index: lib/sanitizer_common/sanitizer_linux_libcdep.cc
===================================================================
--- lib/sanitizer_common/sanitizer_linux_libcdep.cc
+++ lib/sanitizer_common/sanitizer_linux_libcdep.cc
@@ -222,6 +222,11 @@
char *end;
int minor = internal_simple_strtoll(buf + 8, &end, 10);
if (end != buf + 8 && (*end == '\0' || *end == '.')) {
+ int patch = 0;
+ if (*end == '.')
+ // strtoll will return 0 if no valid conversion could be performed
+ patch = internal_simple_strtoll(end + 1, nullptr, 10);
+
/* sizeof(struct pthread) values from various glibc versions. */
if (SANITIZER_X32)
val = 1728; // Assume only one particular version for x32.
@@ -235,9 +240,10 @@
val = FIRST_32_SECOND_64(1136, 1712);
else if (minor == 10)
val = FIRST_32_SECOND_64(1168, 1776);
- else if (minor <= 12)
+ else if (minor == 11 || (minor == 12 && patch == 1))
val = FIRST_32_SECOND_64(1168, 2288);
- else if (minor == 13)
+ // take patch = 0 as latest version (valid for RHEL 6)
+ else if ((minor == 12 && patch != 1) || minor == 13)
val = FIRST_32_SECOND_64(1168, 2304);
else
val = FIRST_32_SECOND_64(1216, 2304);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17190.47774.patch
Type: text/x-patch
Size: 1278 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160212/5bcc1f3a/attachment.bin>
More information about the llvm-commits
mailing list