1 struct lock_chain { 2 unsigned int irq_context: 2, 3 depth: 6, 4 base: 24; 5 }; 6 7 __attribute__((noinline, noclone)) foo(struct lock_chain * chain)8struct lock_chain * foo (struct lock_chain *chain) 9 { 10 int i; 11 for (i = 0; i < 100; i++) 12 { 13 chain[i+1].base = chain[i].base; 14 } 15 return chain; 16 } 17 18 struct lock_chain1 { 19 char x; 20 unsigned short base; 21 } __attribute__((packed)); 22 23 __attribute__((noinline, noclone)) bar(struct lock_chain1 * chain)24struct lock_chain1 * bar (struct lock_chain1 *chain) 25 { 26 int i; 27 for (i = 0; i < 100; i++) 28 { 29 chain[i+1].base = chain[i].base; 30 } 31 return chain; 32 } 33 34 struct lock_chain test [101]; 35 struct lock_chain1 test1 [101]; 36 37 int main()38main () 39 { 40 foo (test); 41 bar (test1); 42 return 0; 43 } 44