1f08c3bdfSopenharmony_ci#define __user __attribute__((address_space(1))) 2f08c3bdfSopenharmony_ci 3f08c3bdfSopenharmony_citypedef unsigned long ulong; 4f08c3bdfSopenharmony_citypedef struct s obj_t; 5f08c3bdfSopenharmony_ci 6f08c3bdfSopenharmony_cistatic void expl(ulong u, void *v, obj_t *o, obj_t __user *p) 7f08c3bdfSopenharmony_ci{ 8f08c3bdfSopenharmony_ci (obj_t*)(u); 9f08c3bdfSopenharmony_ci (obj_t __user*)(u); 10f08c3bdfSopenharmony_ci 11f08c3bdfSopenharmony_ci (obj_t*)(v); 12f08c3bdfSopenharmony_ci (obj_t __user*)(v); 13f08c3bdfSopenharmony_ci 14f08c3bdfSopenharmony_ci (ulong)(o); 15f08c3bdfSopenharmony_ci (void *)(o); 16f08c3bdfSopenharmony_ci (obj_t*)(o); 17f08c3bdfSopenharmony_ci (obj_t __user*)(o); 18f08c3bdfSopenharmony_ci 19f08c3bdfSopenharmony_ci (ulong)(p); // w! 20f08c3bdfSopenharmony_ci (void *)(p); // w 21f08c3bdfSopenharmony_ci (obj_t*)(p); // w 22f08c3bdfSopenharmony_ci (obj_t __user*)(p); // ok 23f08c3bdfSopenharmony_ci} 24f08c3bdfSopenharmony_ci 25f08c3bdfSopenharmony_ci/* 26f08c3bdfSopenharmony_ci * check-name: Waddress-space-strict 27f08c3bdfSopenharmony_ci * check-command: sparse -Wcast-from-as -Wcast-to-as $file 28f08c3bdfSopenharmony_ci * 29f08c3bdfSopenharmony_ci * check-error-start 30f08c3bdfSopenharmony_ciWaddress-space-strict.c:12:10: warning: cast adds address space '<asn:1>' to expression 31f08c3bdfSopenharmony_ciWaddress-space-strict.c:17:10: warning: cast adds address space '<asn:1>' to expression 32f08c3bdfSopenharmony_ciWaddress-space-strict.c:19:10: warning: cast removes address space '<asn:1>' of expression 33f08c3bdfSopenharmony_ciWaddress-space-strict.c:20:10: warning: cast removes address space '<asn:1>' of expression 34f08c3bdfSopenharmony_ciWaddress-space-strict.c:21:10: warning: cast removes address space '<asn:1>' of expression 35f08c3bdfSopenharmony_ci * check-error-end 36f08c3bdfSopenharmony_ci */ 37