aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/varargs-format-addrspace1.c
blob: 99b61196f628c53f406898a32dffdc7ffd77980d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
extern int variadic(char *msg, ...) __attribute__((format (printf, 1, 2)));
extern int variadic2(char *msg, int , ...) __attribute__((format (printf, 1, 3)));
extern int variadic3(int, char *msg,  ...) __attribute__((format (printf, 2, 3)));

static void test(void) {
	void __attribute__((noderef, address_space(1))) *a;
	void *b;

	variadic("%s\n", a);
	variadic("%s\n", b);
	variadic("%s %s\n", b, a);
	variadic2("%s %s\n", 1, b, a);
	variadic3(1, "%s %s\n", b, a);
	variadic3(1, "%s %p\n", b, a);
}

/*
 * check-name: variadic formatting test with address-space to %s
 * check-command: sparse -Wformat $file
 * check-known-to-fail
 *
 * check-error-start
varargs-format-addrspace1.c:10:26: warning: incorrect type in argument 2 (different address spaces)
varargs-format-addrspace1.c:10:26:    expected char const *
varargs-format-addrspace1.c:10:26:    got void [noderef] <asn:1> *a
varargs-format-addrspace1.c:12:32: warning: incorrect type in argument 3 (different address spaces)
varargs-format-addrspace1.c:12:32:    expected char const *
varargs-format-addrspace1.c:12:32:    got void [noderef] <asn:1> *a
varargs-format-addrspace1.c:13:36: warning: incorrect type in argument 4 (different address spaces)
varargs-format-addrspace1.c:13:36:    expected char const *
varargs-format-addrspace1.c:13:36:    got void [noderef] <asn:1> *a
varargs-format-addrspace1.c:14:36: warning: incorrect type in argument 4 (different address spaces)
varargs-format-addrspace1.c:14:36:    expected char const *
varargs-format-addrspace1.c:14:36:    got void [noderef] <asn:1> *a
 * check-error-end
 */