[compiler-rt] r244827 - Move tests that use unistd.h and pthread.h to TestCases/Posix
Alexey Samsonov via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 12 16:05:59 PDT 2015
On Wed, Aug 12, 2015 at 3:58 PM, Reid Kleckner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: rnk
> Date: Wed Aug 12 17:58:56 2015
> New Revision: 244827
>
> URL: http://llvm.org/viewvc/llvm-project?rev=244827&view=rev
> Log:
> Move tests that use unistd.h and pthread.h to TestCases/Posix
>
> Added:
> compiler-rt/trunk/test/asan/TestCases/Posix/closed-fds.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/closed-fds.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/coverage-caller-callee.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/coverage-maybe-open-file.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/current_allocated_bytes.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/deep_thread_stack.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/dlclose-test.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/free_hook_realloc.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/gc-test.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/gc-test.cc
>
> compiler-rt/trunk/test/asan/TestCases/Posix/init-order-pthread-create.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/stack-overflow.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc
> compiler-rt/trunk/test/asan/TestCases/Posix/stack-use-after-return.cc
> - copied, changed from r244647,
> compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc
> Removed:
> compiler-rt/trunk/test/asan/TestCases/closed-fds.cc
> compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc
> compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc
> compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc
> compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc
> compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc
> compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc
> compiler-rt/trunk/test/asan/TestCases/gc-test.cc
> compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc
> compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/closed-fds.cc (from
> r244647, compiler-rt/trunk/test/asan/TestCases/closed-fds.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/closed-fds.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/closed-fds.cc&p1=compiler-rt/trunk/test/asan/TestCases/closed-fds.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied:
> compiler-rt/trunk/test/asan/TestCases/Posix/coverage-caller-callee.cc (from
> r244647, compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/coverage-caller-callee.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/coverage-caller-callee.cc&p1=compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied:
> compiler-rt/trunk/test/asan/TestCases/Posix/coverage-maybe-open-file.cc
> (from r244647,
> compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/coverage-maybe-open-file.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/coverage-maybe-open-file.cc&p1=compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied:
> compiler-rt/trunk/test/asan/TestCases/Posix/current_allocated_bytes.cc
> (from r244647,
> compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/current_allocated_bytes.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/current_allocated_bytes.cc&p1=compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/deep_thread_stack.cc
> (from r244647, compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/deep_thread_stack.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/deep_thread_stack.cc&p1=compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/dlclose-test.cc (from
> r244647, compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/dlclose-test.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/dlclose-test.cc&p1=compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/free_hook_realloc.cc
> (from r244647, compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/free_hook_realloc.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/free_hook_realloc.cc&p1=compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/gc-test.cc (from
> r244647, compiler-rt/trunk/test/asan/TestCases/gc-test.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/gc-test.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/gc-test.cc&p1=compiler-rt/trunk/test/asan/TestCases/gc-test.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied:
> compiler-rt/trunk/test/asan/TestCases/Posix/init-order-pthread-create.cc
> (from r244647,
> compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/init-order-pthread-create.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/init-order-pthread-create.cc&p1=compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> (original)
> +++
> compiler-rt/trunk/test/asan/TestCases/Posix/init-order-pthread-create.cc
> Wed Aug 12 17:58:56 2015
> @@ -1,7 +1,7 @@
> // Check that init-order checking is properly disabled if pthread_create
> is
> // called.
>
> -// RUN: %clangxx_asan %s %p/Helpers/init-order-pthread-create-extra.cc
> -pthread -o %t
> +// RUN: %clangxx_asan %s %p/../Helpers/init-order-pthread-create-extra.cc
> -pthread -o %t
>
Please move init-order-pthread-create-extra.cc somewhere under
TestCases/Posix as well, so that we don't have to go up the directory tree
here.
A yet cleaner approach would be to get rid of extra .cc file and create a
self-contained test :two sources in one, with a few #ifdef magic - see
TestCases/dlclose-test.cc for inspiration.
I will totally understand if you refuse to do this extra work :)
> // RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:strict_init_order=true %run %t
>
> #include <stdio.h>
>
> Copied: compiler-rt/trunk/test/asan/TestCases/Posix/stack-overflow.cc
> (from r244647, compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/stack-overflow.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/stack-overflow.cc&p1=compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Copied:
> compiler-rt/trunk/test/asan/TestCases/Posix/stack-use-after-return.cc (from
> r244647, compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc)
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/stack-use-after-return.cc?p2=compiler-rt/trunk/test/asan/TestCases/Posix/stack-use-after-return.cc&p1=compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc&r1=244647&r2=244827&rev=244827&view=diff
>
> ==============================================================================
> (empty)
>
> Removed: compiler-rt/trunk/test/asan/TestCases/closed-fds.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/closed-fds.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/closed-fds.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/closed-fds.cc (removed)
> @@ -1,33 +0,0 @@
> -// Check that when the program closed its std(in|out|err), running the
> external
> -// symbolizer still works.
> -
> -// RUN: rm -f %t.log.*
> -// RUN: %clangxx_asan -O0 %s -o %t 2>&1 &&
> ASAN_OPTIONS=$ASAN_OPTIONS:log_path=%t.log:verbosity=2 not %run %t 2>&1
> -// RUN: FileCheck %s --check-prefix=CHECK-FILE < %t.log.*
> -
> -// FIXME: copy %t.log back from the device and re-enable on Android.
> -// UNSUPPORTED: android
> -
> -#include <assert.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <unistd.h>
> -
> -int main(int argc, char **argv) {
> - int result = fprintf(stderr, "Closing streams.\n");
> - assert(result > 0);
> - close(STDIN_FILENO);
> - close(STDOUT_FILENO);
> - close(STDERR_FILENO);
> - result = fprintf(stderr, "Can you hear me now?\n");
> - assert(result < 0);
> - char *x = (char *)malloc(10 * sizeof(char));
> - free(x);
> - x[argc] = 'X'; // BOOM
> - // CHECK-FILE: {{.*ERROR: AddressSanitizer: heap-use-after-free on
> address}}
> - // CHECK-FILE: {{0x.* at pc 0x.* bp 0x.* sp 0x.*}}
> - // CHECK-FILE: {{WRITE of size 1 at 0x.* thread T0}}
> - // CHECK-FILE: {{ #0 0x.* in main .*closed-fds.cc:}}[[@LINE-4]]
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc
> (original)
> +++ compiler-rt/trunk/test/asan/TestCases/coverage-caller-callee.cc
> (removed)
> @@ -1,74 +0,0 @@
> -// Test caller-callee coverage with large number of threads
> -// and various numbers of callers and callees.
> -
> -// RUN: %clangxx_asan -fsanitize-coverage=edge,indirect-calls %s -o %t
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 10
> 1 2>&1 | FileCheck %s --check-prefix=CHECK-10-1
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 9
> 2 2>&1 | FileCheck %s --check-prefix=CHECK-9-2
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 7
> 3 2>&1 | FileCheck %s --check-prefix=CHECK-7-3
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 17
> 1 2>&1 | FileCheck %s --check-prefix=CHECK-17-1
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 15
> 2 2>&1 | FileCheck %s --check-prefix=CHECK-15-2
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1:verbosity=1 %run %t 18
> 3 2>&1 | FileCheck %s --check-prefix=CHECK-18-3
> -// RUN: rm -f caller-callee*.sancov
> -//
> -// REQUIRES: asan-64-bits
> -//
> -// CHECK-10-1: CovDump: 10 caller-callee pairs written
> -// CHECK-9-2: CovDump: 18 caller-callee pairs written
> -// CHECK-7-3: CovDump: 21 caller-callee pairs written
> -// CHECK-17-1: CovDump: 14 caller-callee pairs written
> -// CHECK-15-2: CovDump: 28 caller-callee pairs written
> -// CHECK-18-3: CovDump: 42 caller-callee pairs written
> -
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <pthread.h>
> -int P = 0;
> -struct Foo {virtual void f() {if (P) printf("Foo::f()\n");}};
> -struct Foo1 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo2 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo3 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo4 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo5 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo6 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo7 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo8 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo9 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo10 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo11 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo12 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo13 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo14 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo15 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo16 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo17 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo18 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -struct Foo19 : Foo {virtual void f() {if (P) printf("%d\n", __LINE__);}};
> -
> -Foo *foo[20] = {
> - new Foo, new Foo1, new Foo2, new Foo3, new Foo4, new Foo5, new
> Foo6,
> - new Foo7, new Foo8, new Foo9, new Foo10, new Foo11, new Foo12, new
> Foo13,
> - new Foo14, new Foo15, new Foo16, new Foo17, new Foo18, new Foo19,
> -};
> -
> -int n_functions = 10;
> -int n_callers = 2;
> -
> -void *Thread(void *arg) {
> - if (n_callers >= 1) for (int i = 0; i < 2000; i++) foo[i %
> n_functions]->f();
> - if (n_callers >= 2) for (int i = 0; i < 2000; i++) foo[i %
> n_functions]->f();
> - if (n_callers >= 3) for (int i = 0; i < 2000; i++) foo[i %
> n_functions]->f();
> - return arg;
> -}
> -
> -int main(int argc, char **argv) {
> - if (argc >= 2)
> - n_functions = atoi(argv[1]);
> - if (argc >= 3)
> - n_callers = atoi(argv[2]);
> - const int kNumThreads = 16;
> - pthread_t t[kNumThreads];
> - for (int i = 0; i < kNumThreads; i++)
> - pthread_create(&t[i], 0, Thread, 0);
> - for (int i = 0; i < kNumThreads; i++)
> - pthread_join(t[i], 0);
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc
> (original)
> +++ compiler-rt/trunk/test/asan/TestCases/coverage-maybe-open-file.cc
> (removed)
> @@ -1,32 +0,0 @@
> -// FIXME:
> https://code.google.com/p/address-sanitizer/issues/detail?id=316
> -// XFAIL: android
> -//
> -// RUN: %clangxx_asan -fsanitize-coverage=func %s -o %t
> -// RUN: rm -rf %T/coverage-maybe-open-file
> -// RUN: mkdir -p %T/coverage-maybe-open-file && cd
> %T/coverage-maybe-open-file
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=1 %run %t | FileCheck %s
> --check-prefix=CHECK-success
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:coverage=0 %run %t | FileCheck %s
> --check-prefix=CHECK-fail
> -// RUN: [ "$(cat test.sancov.packed)" == "test" ]
> -// RUN: cd .. && rm -rf %T/coverage-maybe-open-file
> -
> -#include <stdio.h>
> -#include <string.h>
> -#include <unistd.h>
> -
> -#include <sanitizer/coverage_interface.h>
> -
> -// FIXME: the code below might not work on Windows.
> -int main(int argc, char **argv) {
> - int fd = __sanitizer_maybe_open_cov_file("test");
> - if (fd > 0) {
> - printf("SUCCESS\n");
> - const char s[] = "test\n";
> - write(fd, s, strlen(s));
> - close(fd);
> - } else {
> - printf("FAIL\n");
> - }
> -}
> -
> -// CHECK-success: SUCCESS
> -// CHECK-fail: FAIL
>
> Removed: compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc
> (original)
> +++ compiler-rt/trunk/test/asan/TestCases/current_allocated_bytes.cc
> (removed)
> @@ -1,44 +0,0 @@
> -// RUN: %clangxx_asan -O0 %s -pthread -o %t && %run %t
> -// RUN: %clangxx_asan -O2 %s -pthread -o %t && %run %t
> -// REQUIRES: stable-runtime
> -
> -#include <assert.h>
> -#include <pthread.h>
> -#include <sanitizer/allocator_interface.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -
> -const size_t kLargeAlloc = 1UL << 20;
> -
> -void* allocate(void *arg) {
> - volatile void *ptr = malloc(kLargeAlloc);
> - free((void*)ptr);
> - return 0;
> -}
> -
> -void* check_stats(void *arg) {
> - assert(__sanitizer_get_current_allocated_bytes() > 0);
> - return 0;
> -}
> -
> -int main() {
> - size_t used_mem = __sanitizer_get_current_allocated_bytes();
> - printf("Before: %zu\n", used_mem);
> - const int kNumIterations = 1000;
> - for (int iter = 0; iter < kNumIterations; iter++) {
> - pthread_t thr[4];
> - for (int j = 0; j < 4; j++) {
> - assert(0 ==
> - pthread_create(&thr[j], 0, (j < 2) ? allocate : check_stats,
> 0));
> - }
> - for (int j = 0; j < 4; j++)
> - assert(0 == pthread_join(thr[j], 0));
> - used_mem = __sanitizer_get_current_allocated_bytes();
> - if (used_mem > kLargeAlloc) {
> - printf("After iteration %d: %zu\n", iter, used_mem);
> - return 1;
> - }
> - }
> - printf("Success after %d iterations\n", kNumIterations);
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/deep_thread_stack.cc (removed)
> @@ -1,58 +0,0 @@
> -// RUN: %clangxx_asan -O0 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O1 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O2 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// REQUIRES: stable-runtime
> -
> -#include <pthread.h>
> -
> -int *x;
> -
> -void *AllocThread(void *arg) {
> - x = new int;
> - *x = 42;
> - return NULL;
> -}
> -
> -void *FreeThread(void *arg) {
> - delete x;
> - return NULL;
> -}
> -
> -void *AccessThread(void *arg) {
> - *x = 43; // BOOM
> - return NULL;
> -}
> -
> -typedef void* (*callback_type)(void* arg);
> -
> -void *RunnerThread(void *function) {
> - pthread_t thread;
> - pthread_create(&thread, NULL, (callback_type)function, NULL);
> - pthread_join(thread, NULL);
> - return NULL;
> -}
> -
> -void RunThread(callback_type function) {
> - pthread_t runner;
> - pthread_create(&runner, NULL, RunnerThread, (void*)function);
> - pthread_join(runner, NULL);
> -}
> -
> -int main(int argc, char *argv[]) {
> - RunThread(AllocThread);
> - RunThread(FreeThread);
> - RunThread(AccessThread);
> - return (x != 0);
> -}
> -
> -// CHECK: AddressSanitizer: heap-use-after-free
> -// CHECK: WRITE of size 4 at 0x{{.*}} thread T[[ACCESS_THREAD:[0-9]+]]
> -// CHECK: freed by thread T[[FREE_THREAD:[0-9]+]] here:
> -// CHECK: previously allocated by thread T[[ALLOC_THREAD:[0-9]+]] here:
> -// CHECK: Thread T[[ACCESS_THREAD]] created by T[[ACCESS_RUNNER:[0-9]+]]
> here:
> -// CHECK: Thread T[[ACCESS_RUNNER]] created by T0 here:
> -// CHECK: Thread T[[FREE_THREAD]] created by T[[FREE_RUNNER:[0-9]+]] here:
> -// CHECK: Thread T[[FREE_RUNNER]] created by T0 here:
> -// CHECK: Thread T[[ALLOC_THREAD]] created by T[[ALLOC_RUNNER:[0-9]+]]
> here:
> -// CHECK: Thread T[[ALLOC_RUNNER]] created by T0 here:
>
> Removed: compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/dlclose-test.cc (removed)
> @@ -1,106 +0,0 @@
> -// Regression test for
> -// http://code.google.com/p/address-sanitizer/issues/detail?id=19
> -// Bug description:
> -// 1. application dlopens foo.so
> -// 2. asan registers all globals from foo.so
> -// 3. application dlcloses foo.so
> -// 4. application mmaps some memory to the location where foo.so was
> before
> -// 5. application starts using this mmaped memory, but asan still thinks
> there
> -// are globals.
> -// 6. BOOM
> -
> -// This sublte test assumes that after a foo.so is dlclose-d
> -// we can mmap the region of memory that has been occupied by the library.
> -// It works on i368/x86_64 Linux, but not necessary anywhere else.
> -// REQUIRES: x86_64-supported-target,i386-supported-target
> -
> -// RUN: %clangxx_asan -O0 -DSHARED_LIB %s -fPIC -shared -o %t-so.so
> -// RUN: %clangxx_asan -O0 %s %libdl -o %t && %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O1 -DSHARED_LIB %s -fPIC -shared -o %t-so.so
> -// RUN: %clangxx_asan -O1 %s %libdl -o %t && %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O2 -DSHARED_LIB %s -fPIC -shared -o %t-so.so
> -// RUN: %clangxx_asan -O2 %s %libdl -o %t && %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O3 -DSHARED_LIB %s -fPIC -shared -o %t-so.so
> -// RUN: %clangxx_asan -O3 %s %libdl -o %t && %run %t 2>&1 | FileCheck %s
> -
> -#if !defined(SHARED_LIB)
> -#include <assert.h>
> -#include <dlfcn.h>
> -#include <stdio.h>
> -#include <string.h>
> -#include <sys/mman.h>
> -#include <unistd.h>
> -
> -#include <string>
> -
> -#if defined(__FreeBSD__)
> -// The MAP_NORESERVE define has been removed in FreeBSD 11.x, and even
> before
> -// that, it was never implemented. So just define it to zero.
> -#undef MAP_NORESERVE
> -#define MAP_NORESERVE 0
> -#endif
> -
> -using std::string;
> -
> -typedef int *(fun_t)();
> -
> -int main(int argc, char *argv[]) {
> - string path = string(argv[0]) + "-so.so";
> - size_t PageSize = sysconf(_SC_PAGESIZE);
> - printf("opening %s ... \n", path.c_str());
> - void *lib = dlopen(path.c_str(), RTLD_NOW);
> - if (!lib) {
> - printf("error in dlopen(): %s\n", dlerror());
> - return 1;
> - }
> - fun_t *get = (fun_t*)dlsym(lib, "get_address_of_static_var");
> - if (!get) {
> - printf("failed dlsym\n");
> - return 1;
> - }
> - int *addr = get();
> - assert(((size_t)addr % 32) == 0); // should be 32-byte aligned.
> - printf("addr: %p\n", addr);
> - addr[0] = 1; // make sure we can write there.
> -
> - // Now dlclose the shared library.
> - printf("attempting to dlclose\n");
> - if (dlclose(lib)) {
> - printf("failed to dlclose\n");
> - return 1;
> - }
> - // Now, the page where 'addr' is unmapped. Map it.
> - size_t page_beg = ((size_t)addr) & ~(PageSize - 1);
> - void *res = mmap((void*)(page_beg), PageSize,
> - PROT_READ | PROT_WRITE,
> - MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE,
> -1, 0);
> - if (res == (char*)-1L) {
> - printf("failed to mmap\n");
> - return 1;
> - }
> - addr[1] = 2; // BOOM (if the bug is not fixed).
> - printf("PASS\n");
> - // CHECK: PASS
> - return 0;
> -}
> -#else // SHARED_LIB
> -#include <stdio.h>
> -
> -static int pad1;
> -static int static_var;
> -static int pad2;
> -
> -extern "C"
> -int *get_address_of_static_var() {
> - return &static_var;
> -}
> -
> -__attribute__((constructor))
> -void at_dlopen() {
> - printf("%s: I am being dlopened\n", __FILE__);
> -}
> -__attribute__((destructor))
> -void at_dlclose() {
> - printf("%s: I am being dlclosed\n", __FILE__);
> -}
> -#endif // SHARED_LIB
>
> Removed: compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/free_hook_realloc.cc (removed)
> @@ -1,34 +0,0 @@
> -// Check that free hook doesn't conflict with Realloc.
> -// RUN: %clangxx_asan -O2 %s -o %t
> -// RUN: %run %t 2>&1 | FileCheck %s
> -
> -#include <stdlib.h>
> -#include <unistd.h>
> -#include <sanitizer/allocator_interface.h>
> -
> -static void *glob_ptr;
> -
> -extern "C" {
> -void __sanitizer_free_hook(const volatile void *ptr) {
> - if (ptr == glob_ptr) {
> - *(int*)ptr = 0;
> - write(1, "FreeHook\n", sizeof("FreeHook\n"));
> - }
> -}
> -}
> -
> -int main() {
> - int *x = (int*)malloc(100);
> - x[0] = 42;
> - glob_ptr = x;
> - int *y = (int*)realloc(x, 200);
> - // Verify that free hook was called and didn't spoil the memory.
> - if (y[0] != 42) {
> - _exit(1);
> - }
> - write(1, "Passed\n", sizeof("Passed\n"));
> - free(y);
> - // CHECK: FreeHook
> - // CHECK: Passed
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/gc-test.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/gc-test.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/gc-test.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/gc-test.cc (removed)
> @@ -1,54 +0,0 @@
> -// RUN: %clangxx_asan %s -pthread -o %t
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=1
> %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=0
> %run %t 2>&1 | FileCheck %s --check-prefix=CHECK0
> -// RUN: %clangxx_asan -O3 %s -pthread -o %t
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=1
> %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=0
> %run %t 2>&1 | FileCheck %s --check-prefix=CHECK0
> -// REQUIRES: stable-runtime
> -
> -#include <assert.h>
> -#include <stdio.h>
> -#include <pthread.h>
> -#include <sanitizer/asan_interface.h>
> -
> -static const int kNumThreads = 2;
> -static const int kLeftRedzoneSize = sizeof(void *) * 4;
> -
> -void *Thread(void *unused) {
> - void *fake_stack = __asan_get_current_fake_stack();
> - char var[15];
> - if (fake_stack) {
> - fprintf(stderr, "fake stack found: %p; var: %p\n", fake_stack, var);
> - // CHECK1: fake stack found
> - // CHECK1: fake stack found
> - void *beg, *end;
> - void *real_stack =
> - __asan_addr_is_in_fake_stack(fake_stack, &var[0], &beg, &end);
> - assert(real_stack);
> - assert((char*)beg <= (char*)&var[0]);
> - assert((char*)end > (char*)&var[0]);
> - for (int i = -kLeftRedzoneSize; i < 15; i++) {
> - void *beg1, *end1;
> - char *ptr = &var[0] + i;
> - void *real_stack1 =
> - __asan_addr_is_in_fake_stack(fake_stack, ptr, &beg1, &end1);
> - assert(real_stack == real_stack1);
> - assert(beg == beg1);
> - assert(end == end1);
> - }
> - } else {
> - fprintf(stderr, "no fake stack\n");
> - // CHECK0: no fake stack
> - // CHECK0: no fake stack
> - }
> - return NULL;
> -}
> -
> -int main(int argc, char **argv) {
> - pthread_t t[kNumThreads];
> - for (int i = 0; i < kNumThreads; i++)
> - pthread_create(&t[i], 0, Thread, 0);
> - for (int i = 0; i < kNumThreads; i++)
> - pthread_join(t[i], 0);
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> (original)
> +++ compiler-rt/trunk/test/asan/TestCases/init-order-pthread-create.cc
> (removed)
> @@ -1,43 +0,0 @@
> -// Check that init-order checking is properly disabled if pthread_create
> is
> -// called.
> -
> -// RUN: %clangxx_asan %s %p/Helpers/init-order-pthread-create-extra.cc
> -pthread -o %t
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:strict_init_order=true %run %t
> -
> -#include <stdio.h>
> -#include <pthread.h>
> -#include <unistd.h>
> -
> -void *bar(void *input, bool sleep_before_init) {
> - if (sleep_before_init)
> - usleep(500000);
> - return input;
> -}
> -
> -void *glob = bar((void*)0x1234, false);
> -extern void *glob2;
> -
> -void *poll(void *arg) {
> - void **glob = (void**)arg;
> - while (true) {
> - usleep(100000);
> - printf("glob is now: %p\n", *glob);
> - }
> -}
> -
> -struct GlobalPollerStarter {
> - GlobalPollerStarter() {
> - pthread_t p;
> - pthread_attr_t attr;
> - pthread_attr_init(&attr);
> - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
> - pthread_create(&p, 0, poll, &glob);
> - pthread_attr_destroy(&attr);
> - printf("glob poller is started");
> - }
> -} global_poller;
> -
> -int main() {
> - printf("%p %p\n", glob, glob2);
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc (original)
> +++ compiler-rt/trunk/test/asan/TestCases/stack-overflow.cc (removed)
> @@ -1,114 +0,0 @@
> -// Test ASan detection of stack-overflow condition.
> -
> -// RUN: %clangxx_asan -O0 %s -DSMALL_FRAME -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -DSMALL_FRAME -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O0 %s -DSAVE_ALL_THE_REGISTERS -pthread -o %t &&
> env ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -DSAVE_ALL_THE_REGISTERS -pthread -o %t &&
> env ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O0 %s -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -
> -// RUN: %clangxx_asan -O0 %s -DTHREAD -DSMALL_FRAME -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -DTHREAD -DSMALL_FRAME -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O0 %s -DTHREAD -DSAVE_ALL_THE_REGISTERS -pthread
> -o %t && env ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1
> | FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -DTHREAD -DSAVE_ALL_THE_REGISTERS -pthread
> -o %t && env ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1
> | FileCheck %s
> -// RUN: %clangxx_asan -O0 %s -DTHREAD -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -DTHREAD -pthread -o %t && env
> ASAN_OPTIONS=$ASAN_OPTIONS:use_sigaltstack=1 not %run %t 2>&1 | FileCheck %s
> -// RUN: not %run %t 2>&1 | FileCheck %s
> -// REQUIRES: stable-runtime
> -
> -#include <assert.h>
> -#include <stdlib.h>
> -#include <pthread.h>
> -#include <unistd.h>
> -#include <sys/time.h>
> -#include <sys/resource.h>
> -#include <sanitizer/asan_interface.h>
> -
> -const int BS = 1024;
> -volatile char x;
> -volatile int y = 1;
> -volatile int z0, z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, z11, z12, z13;
> -
> -void recursive_func(char *p) {
> -#if defined(SMALL_FRAME)
> - char *buf = 0;
> -#elif defined(SAVE_ALL_THE_REGISTERS)
> - char *buf = 0;
> - int t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13;
> - t0 = z0;
> - t1 = z1;
> - t2 = z2;
> - t3 = z3;
> - t4 = z4;
> - t5 = z5;
> - t6 = z6;
> - t7 = z7;
> - t8 = z8;
> - t9 = z9;
> - t10 = z10;
> - t11 = z11;
> - t12 = z12;
> - t13 = z13;
> -
> - z0 = t0;
> - z1 = t1;
> - z2 = t2;
> - z3 = t3;
> - z4 = t4;
> - z5 = t5;
> - z6 = t6;
> - z7 = t7;
> - z8 = t8;
> - z9 = t9;
> - z10 = t10;
> - z11 = t11;
> - z12 = t12;
> - z13 = t13;
> -#else
> - char buf[BS];
> - // Check that the stack grows in the righ direction, unless we use fake
> stack.
> - if (p && !__asan_get_current_fake_stack())
> - assert(p - buf >= BS);
> - buf[rand() % BS] = 1;
> - buf[rand() % BS] = 2;
> - x = buf[rand() % BS];
> -#endif
> - if (y)
> - recursive_func(buf);
> - x = 1; // prevent tail call optimization
> - // CHECK: {{stack-overflow on address 0x.* \(pc 0x.* bp 0x.* sp 0x.*
> T.*\)}}
> - // If stack overflow happens during function prologue, stack trace may
> be
> - // corrupted. Unwind tables are not always 100% exact there.
> - // For this reason, we don't do any further checks.
> -}
> -
> -void *ThreadFn(void* unused) {
> - recursive_func(0);
> - return 0;
> -}
> -
> -void LimitStackAndReexec(int argc, char **argv) {
> - struct rlimit rlim;
> - int res = getrlimit(RLIMIT_STACK, &rlim);
> - assert(res == 0);
> - if (rlim.rlim_cur == RLIM_INFINITY) {
> - rlim.rlim_cur = 256 * 1024;
> - res = setrlimit(RLIMIT_STACK, &rlim);
> - assert(res == 0);
> -
> - execv(argv[0], argv);
> - assert(0 && "unreachable");
> - }
> -}
> -
> -int main(int argc, char **argv) {
> - LimitStackAndReexec(argc, argv);
> -#ifdef THREAD
> - pthread_t t;
> - pthread_create(&t, 0, ThreadFn, 0);
> - pthread_join(t, 0);
> -#else
> - recursive_func(0);
> -#endif
> - return 0;
> -}
>
> Removed: compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc?rev=244826&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc
> (original)
> +++ compiler-rt/trunk/test/asan/TestCases/stack-use-after-return.cc
> (removed)
> @@ -1,80 +0,0 @@
> -// RUN: export ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=1
> -// RUN: %clangxx_asan -O0 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O1 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O2 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: %clangxx_asan -O3 %s -pthread -o %t && not %run %t 2>&1 |
> FileCheck %s
> -// RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:detect_stack_use_after_return=0
> %run %t
> -// Regression test for a CHECK failure with small stack size and large
> frame.
> -// RUN: %clangxx_asan -O3 %s -pthread -o %t -DkSize=10000 -DUseThread
> -DkStackSize=65536 && not %run %t 2>&1 | FileCheck --check-prefix=THREAD %s
> -//
> -// Test that we can find UAR in a thread other than main:
> -// RUN: %clangxx_asan -DUseThread -O2 %s -pthread -o %t && not %run %t
> 2>&1 | FileCheck --check-prefix=THREAD %s
> -//
> -// Test the max_uar_stack_size_log/min_uar_stack_size_log flag.
> -//
> -// RUN: env
> ASAN_OPTIONS=$ASAN_OPTIONS:max_uar_stack_size_log=20:verbosity=1 not %run
> %t 2>&1 | FileCheck --check-prefix=CHECK-20 %s
> -// RUN: env
> ASAN_OPTIONS=$ASAN_OPTIONS:min_uar_stack_size_log=24:max_uar_stack_size_log=24:verbosity=1
> not %run %t 2>&1 | FileCheck --check-prefix=CHECK-24 %s
> -
> -#include <stdio.h>
> -#include <pthread.h>
> -
> -#ifndef kSize
> -# define kSize 1
> -#endif
> -
> -#ifndef UseThread
> -# define UseThread 0
> -#endif
> -
> -#ifndef kStackSize
> -# define kStackSize 0
> -#endif
> -
> -__attribute__((noinline))
> -char *Ident(char *x) {
> - fprintf(stderr, "1: %p\n", x);
> - return x;
> -}
> -
> -__attribute__((noinline))
> -char *Func1() {
> - char local[kSize];
> - return Ident(local);
> -}
> -
> -__attribute__((noinline))
> -void Func2(char *x) {
> - fprintf(stderr, "2: %p\n", x);
> - *x = 1;
> - // CHECK: WRITE of size 1 {{.*}} thread T0
> - // CHECK: #0{{.*}}Func2{{.*}}stack-use-after-return.cc:[[@LINE-2]]
> - // CHECK: is located in stack of thread T0 at offset
> - // CHECK: 'local' <== Memory access at offset {{16|32}} is inside this
> variable
> - // THREAD: WRITE of size 1 {{.*}} thread T{{[1-9]}}
> - // THREAD: #0{{.*}}Func2{{.*}}stack-use-after-return.cc:[[@LINE-6]]
> - // THREAD: is located in stack of thread T{{[1-9]}} at offset
> - // THREAD: 'local' <== Memory access at offset {{16|32}} is inside this
> variable
> - // CHECK-20: T0: FakeStack created:{{.*}} stack_size_log: 20
> - // CHECK-24: T0: FakeStack created:{{.*}} stack_size_log: 24
> -}
> -
> -void *Thread(void *unused) {
> - Func2(Func1());
> - return NULL;
> -}
> -
> -int main(int argc, char **argv) {
> -#if UseThread
> - pthread_attr_t attr;
> - pthread_attr_init(&attr);
> - if (kStackSize > 0)
> - pthread_attr_setstacksize(&attr, kStackSize);
> - pthread_t t;
> - pthread_create(&t, &attr, Thread, 0);
> - pthread_attr_destroy(&attr);
> - pthread_join(t, 0);
> -#else
> - Func2(Func1());
> -#endif
> - return 0;
> -}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150812/4fcc13f8/attachment.html>
More information about the llvm-commits
mailing list