4 __attribute__ (( noreturn
, section ( ".text.null_trap" ) ))
5 void null_function_trap ( void ) {
8 /* 128 bytes of NOPs; the idea of this is that if something
9 * dereferences a NULL pointer and overwrites us, we at least
10 * have some chance of still getting to execute the printf()
13 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
14 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
15 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
16 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
17 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
18 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
19 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
20 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
21 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
22 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
23 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
24 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
25 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
26 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
27 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
28 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
29 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
30 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
31 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
32 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
33 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
34 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
35 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
36 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
37 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
38 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
39 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
40 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
41 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
42 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
43 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
44 __asm__
__volatile__ ( "nop ; nop ; nop ; nop" );
46 __asm__
__volatile__ ( "movl %%esp, %0" : "=r" ( stack
) );
47 printf ( "NULL method called from %p (stack %p)\n",
48 __builtin_return_address ( 0 ), stack
);
49 DBG_HD ( stack
, 256 );