1  /* { dg-do run } */
       2  /* { dg-require-effective-target hwaddress_exec } */
       3  /* { dg-additional-options "-lpthread" } */
       4  
       5  /* Just ensure that a basic threaded program works while running with hwasan.
       6     */
       7  
       8  #include <pthread.h>
       9  
      10  extern int printf (const char *, ...);
      11  typedef __UINTPTR_TYPE__ uintptr_t;
      12  typedef __UINT64_TYPE__ uint64_t;
      13  
      14  void *
      15  successful_thread_function (void * argument)
      16  {
      17      int *deref = (int *)argument;
      18      if (deref[0] == 100)
      19        deref[1] = 10;
      20      return (void *)0;
      21  }
      22  
      23  int
      24  main (int argc, char **argv)
      25  {
      26      int argument[100] = {0};
      27      argument[1] = 10;
      28      pthread_t thread_index;
      29      pthread_create (&thread_index, NULL, successful_thread_function, (void*)argument);
      30  
      31      void *retval;
      32      pthread_join (thread_index, &retval);
      33  
      34      return (uintptr_t)retval;
      35  }