# This suppression file tests an extension to the suppression mechanism: 
# wildcards. The wildcard here is just an asterisk ('*') 
# which should match any number of functions (including zero). 

# To test the suppression mechanism with this file, run Helgrind 
# with 'racecheck_unittest 350' -- this is a test that has 
# a race with stack trace F1->F2->...->F8->F9


#################### Positive tests (should match) #################

{
  match1
  Helgrind:Race
  fun:*F9*
  *  
}


{
  match2
  Helgrind:Race
  fun:*F9*
  *
  fun:*F8*
}


{
  match3
  Helgrind:Race
  *
  fun:*F9*
  fun:*F8*
}

{
  match4
  Helgrind:Race
  *
  *
  fun:*F9*
  fun:*F8*
}

{
  match5
  Helgrind:Race
  *
  fun:*F9*
  *
  fun:*F8*
}


{
  match6
  Helgrind:Race
  *
  fun:*F7*
  *
  fun:*F5*
  fun:*F4*
  *
  *
  fun:*F3*
  *
  fun:*F2*
}

{
  match7
  Helgrind:Race
  *
  fun:*F9*
  *
  fun:*F8*
  fun:*F7*
  *
  fun:*F5*
  *
  fun:*F4*
  fun:*F3*
  *
  fun:*F2*
  fun:*F1*
}

{
  match8
  Helgrind:Race
  *
  fun:*F9*
  fun:*F8*
  *
  fun:*F3*
  *
  fun:*F1*
}

{
  wildcard at the end is ignored 
  Helgrind:Race
  fun:*F9*
  fun:*F8*
  *
}

###################### Negative tests (should not match) ##################

{
  nomatch
  Helgrind:Race
  fun:*F8*
}
{
  nomatch
  Helgrind:Race
  *
  fun:*F8*
  *
  fun:*F8*
}

{
  nomatch
  Helgrind:Race
  *
  fun:*XXXXX*
}


