HomePhabricator

[ASAN] Fix crash on i?86-linux (32-bit) against glibc 2.27 and later

Authored by Lekensteyn on Jun 10 2018, 4:17 AM.

Description

[ASAN] Fix crash on i?86-linux (32-bit) against glibc 2.27 and later

Summary:
Running sanitized 32-bit x86 programs on glibc 2.27 crashes at startup, with:

ERROR: AddressSanitizer: SEGV on unknown address 0xf7a8a250 (pc 0xf7f807f4 bp 0xff969fc8 sp 0xff969f7c T16777215)
The signal is caused by a WRITE memory access.
#0 0xf7f807f3 in _dl_get_tls_static_info (/lib/ld-linux.so.2+0x127f3)
#1 0xf7a92599  (/lib/libasan.so.5+0x112599)
#2 0xf7a80737  (/lib/libasan.so.5+0x100737)
#3 0xf7f7e14f in _dl_init (/lib/ld-linux.so.2+0x1014f)
#4 0xf7f6eb49  (/lib/ld-linux.so.2+0xb49)

The problem is that glibc changed the calling convention for the GLIBC_PRIVATE
symbol that sanitizer uses (even when it should not, GLIBC_PRIVATE is exactly
for symbols that can change at any time, be removed etc.), see
https://sourceware.org/ml/libc-alpha/2017-08/msg00497.html

Fixes https://github.com/google/sanitizers/issues/954

Patch By: Jakub Jelinek

Reviewed By: vitalybuka, Lekensteyn

Differential Revison: https://reviews.llvm.org/D44623

llvm-svn: 334363

Details

Committed
LekensteynJun 10 2018, 4:17 AM
Reviewer
vitalybuka
Parents
rG73c76c35a54f: [NEON] Support VST1xN intrinsics in AArch32 mode (Clang part)
Branches
Unknown
Tags
Unknown