| From 155a43edb0c161bb5122ad4eeee991b43a0278bc Mon Sep 17 00:00:00 2001 |
| From: Jian Cai <caij2003@gmail.com> |
| Date: Mon, 16 Sep 2019 21:47:47 +0000 |
| Subject: [PATCH] [compiler-rt][crt] make test case nontrivial in |
| check_cxx_section_exists |
| |
| Summary: |
| .init_array gets optimized away when building with -O2 and as a result, |
| check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY |
| when building crtbegin.o and crtend.o, which causes binaries linked with |
| them encounter segmentation fault. See https://crbug.com/855759 for |
| details. This change prevents .init_array section to be optimized away |
| even with -O2 or higher optimization level. |
| |
| Subscribers: dberris, mgorny, #sanitizers, llvm-commits |
| |
| Tags: #sanitizers, #llvm |
| |
| Differential Revision: https://reviews.llvm.org/D67628 |
| |
| llvm-svn: 372038 |
| --- |
| compiler-rt/lib/crt/CMakeLists.txt | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/compiler-rt/lib/crt/CMakeLists.txt b/compiler-rt/lib/crt/CMakeLists.txt |
| index 34c368f7ca4..90e94b93db4 100644 |
| --- a/compiler-rt/lib/crt/CMakeLists.txt |
| +++ b/compiler-rt/lib/crt/CMakeLists.txt |
| @@ -70,7 +70,7 @@ function(check_cxx_section_exists section output) |
| endfunction() |
| |
| check_cxx_section_exists(".init_array" COMPILER_RT_HAS_INITFINI_ARRAY |
| - SOURCE "__attribute__((constructor)) void f() {}\nint main() { return 0; }\n") |
| + SOURCE "volatile int x;\n__attribute__((constructor)) void f() {x = 0;}\nint main() { return 0; }\n") |
| |
| append_list_if(COMPILER_RT_HAS_STD_C11_FLAG -std=c11 CRT_CFLAGS) |
| append_list_if(COMPILER_RT_HAS_INITFINI_ARRAY -DCRT_HAS_INITFINI_ARRAY CRT_CFLAGS) |
| -- |
| 2.23.0.237.gc6a4ce50a0-goog |
| |