#include <stdint.h>#include <stdio.h>Go to the source code of this file.
Functions | |
| __attribute__ ((noreturn, section(".text.null_trap"))) | |
| __attribute__ | ( | (noreturn, section(".text.null_trap")) | ) |
Definition at line 4 of file nulltrap.c.
References __asm__(), DBG_HD, and printf().
00005 { 00006 void *stack; 00007 00008 /* 128 bytes of NOPs; the idea of this is that if something 00009 * dereferences a NULL pointer and overwrites us, we at least 00010 * have some chance of still getting to execute the printf() 00011 * statement. 00012 */ 00013 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00014 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00015 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00016 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00017 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00018 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00019 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00020 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00021 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00022 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00023 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00024 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00025 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00026 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00027 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00028 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00029 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00030 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00031 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00032 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00033 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00034 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00035 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00036 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00037 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00038 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00039 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00040 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00041 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00042 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00043 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00044 __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); 00045 00046 __asm__ __volatile__ ( "movl %%esp, %0" : "=r" ( stack ) ); 00047 printf ( "NULL method called from %p (stack %p)\n", 00048 __builtin_return_address ( 0 ), stack ); 00049 DBG_HD ( stack, 256 ); 00050 while ( 1 ) {} 00051 }
1.5.7.1