133af9a31SVitaly Buka // RUN: %clang -O1 %s -o %t && %run %t 2>&1 | FileCheck %s 233af9a31SVitaly Buka // 333af9a31SVitaly Buka // setuid(0) hangs on powerpc64 big endian. When this is fixed remove 433af9a31SVitaly Buka // the unsupported flag. 533af9a31SVitaly Buka // https://llvm.org/bugs/show_bug.cgi?id=25799 633af9a31SVitaly Buka // 7*975fa725SPaul Robinson // UNSUPPORTED: target=powerpc64-unknown-linux-gnu{{.*}} 833af9a31SVitaly Buka 933af9a31SVitaly Buka #include <pthread.h> 1033af9a31SVitaly Buka #include <stdio.h> 1133af9a31SVitaly Buka #include <sys/types.h> 1233af9a31SVitaly Buka #include <unistd.h> 1333af9a31SVitaly Buka 1433af9a31SVitaly Buka // Setuid call used to hang because the new thread did not handle 1533af9a31SVitaly Buka // SIGSETXID signal. Note that we don't care whether setuid call succeeds 1633af9a31SVitaly Buka // or not. 1733af9a31SVitaly Buka thread(void * arg)1833af9a31SVitaly Bukastatic void *thread(void *arg) { 1933af9a31SVitaly Buka (void)arg; 2033af9a31SVitaly Buka sleep(1); 2133af9a31SVitaly Buka return 0; 2233af9a31SVitaly Buka } 2333af9a31SVitaly Buka main()2433af9a31SVitaly Bukaint main() { 2533af9a31SVitaly Buka // Create another thread just for completeness of the picture. 2633af9a31SVitaly Buka pthread_t th; 2733af9a31SVitaly Buka pthread_create(&th, 0, thread, 0); 2833af9a31SVitaly Buka setuid(0); 2933af9a31SVitaly Buka pthread_join(th, 0); 3033af9a31SVitaly Buka fprintf(stderr, "DONE\n"); 3133af9a31SVitaly Buka return 0; 3233af9a31SVitaly Buka } 3333af9a31SVitaly Buka 3433af9a31SVitaly Buka // CHECK: DONE 35