17d4a28b986eaf98814c530a2074e117145b14d1fflorian/* This test used to cause an assertion in the address space manager */ 27d4a28b986eaf98814c530a2074e117145b14d1fflorian 37d4a28b986eaf98814c530a2074e117145b14d1fflorian__attribute__((noinline)) 47d4a28b986eaf98814c530a2074e117145b14d1fflorianstatic void inner(void) 57d4a28b986eaf98814c530a2074e117145b14d1fflorian{ 67d4a28b986eaf98814c530a2074e117145b14d1fflorian /* Set other registers to apriori known values. */ 77d4a28b986eaf98814c530a2074e117145b14d1fflorian __asm__ __volatile__( 87d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x101, %%eax\n" 97d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x102, %%ebx\n" 107d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x103, %%ecx\n" 117d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x104, %%edx\n" 127d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x105, %%esi\n" 137d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x106, %%edi\n" 147d4a28b986eaf98814c530a2074e117145b14d1fflorian // not %ebp as mdb is then not able to reconstruct stack trace 157d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x108, %%esp\n" 167d4a28b986eaf98814c530a2074e117145b14d1fflorian "movl $0x1234, (%%eax)\n" // should cause SEGV here 177d4a28b986eaf98814c530a2074e117145b14d1fflorian "ud2" // should never get here 187d4a28b986eaf98814c530a2074e117145b14d1fflorian : // no output registers 197d4a28b986eaf98814c530a2074e117145b14d1fflorian : // no input registers 207d4a28b986eaf98814c530a2074e117145b14d1fflorian : "memory", "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "%esp"); 217d4a28b986eaf98814c530a2074e117145b14d1fflorian} 227d4a28b986eaf98814c530a2074e117145b14d1fflorian 237d4a28b986eaf98814c530a2074e117145b14d1fflorian__attribute__((noinline)) 247d4a28b986eaf98814c530a2074e117145b14d1fflorianstatic void outer(void) 257d4a28b986eaf98814c530a2074e117145b14d1fflorian{ 267d4a28b986eaf98814c530a2074e117145b14d1fflorian inner(); 277d4a28b986eaf98814c530a2074e117145b14d1fflorian} 287d4a28b986eaf98814c530a2074e117145b14d1fflorian 297d4a28b986eaf98814c530a2074e117145b14d1fflorianint main(int argc, const char *argv[]) 307d4a28b986eaf98814c530a2074e117145b14d1fflorian{ 317d4a28b986eaf98814c530a2074e117145b14d1fflorian outer(); 327d4a28b986eaf98814c530a2074e117145b14d1fflorian return 0; 337d4a28b986eaf98814c530a2074e117145b14d1fflorian} 34