1/* { dg-do compile { target *-*-solaris2.* } } */ 2/* { dg-options "-Wformat" } */ 3 4#include "format.h" 5 6void cmn_err_func (int level, char * format, ...) 7 __attribute__((format (cmn_err, 2, 3))); 8 9void cmn_err_func (int level, char * format, ...) 10{ 11} 12 13const char *string = "foo"; 14 15int main() 16{ 17 int i = 1; 18 long l = 2; 19 llong ll = 3; 20 21 cmn_err_func (0, "%s", string); 22 cmn_err_func (0, "%d %D %o %O %x %X %u", i, i, i, i, i, i, i); 23 cmn_err_func (0, "%ld %lD %lo %lO %lx %lX %lu", l, l, l, l, l, l, l); 24 cmn_err_func (0, "%lld %llD %llo %llO %llx %llX %llu", 25 ll, ll, ll, ll, ll, ll, ll); 26 cmn_err_func (0, "%b %s", i, "\01Foo", string); 27 cmn_err_func (0, "%p", string); 28 cmn_err_func (0, "%16b", i, "\01Foo"); 29 30 cmn_err_func (0, "%i", i); /* { dg-warning "unknown|too many" } */ 31 cmn_err_func (0, "%d", l); /* { dg-warning "expects argument" } */ 32 cmn_err_func (0, "%b"); /* { dg-warning "'int'" } */ 33/* { dg-warning "'char \\*'" "" { target *-*-solaris2.* } 32 } */ 34 cmn_err_func (0, "%b", i); /* { dg-warning "matching" } */ 35 cmn_err_func (0, "%b", i, i); /* { dg-warning "expects argument" } */ 36 cmn_err_func (0, "%b", string, i); /* { dg-warning "expects argument" } */ 37 cmn_err_func (0, "%p", 3); /* { dg-warning "expects argument" } */ 38 return 0; 39} 40