1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct { 5 unsigned short a; 6 unsigned short b; 7 } foo_t; 8 a1(unsigned long offset)9void a1 (unsigned long offset) {} 10 11 volatile foo_t * f()12f () 13 { 14 volatile foo_t *foo_p = (volatile foo_t *)malloc (sizeof (foo_t)); 15 16 a1((unsigned long)foo_p-30); 17 if (foo_p->a & 0xf000) 18 printf("%d\n", foo_p->a); 19 foo_p->b = 0x0100; 20 a1 ((unsigned long)foo_p + 2); 21 a1 ((unsigned long)foo_p - 30); 22 return foo_p; 23 } 24 main()25main () 26 { 27 volatile foo_t *foo_p; 28 29 foo_p = f (); 30 if (foo_p->b != 0x0100) 31 abort (); 32 exit (0); 33 } 34