/
githubmirror
/
ipxe
Обзор
Документация
Войти
/
githubmirror
/
ipxe
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/arch/i386/core/nulltrap.c
51 строка
2 KB
Michael Brown
Also print out stack pointer (with optional stack dump)
01 фев 2007, 05:17
01 фев 2007, 05:17
c650c8c
Код
Авторство
О чём код?
#include <stdint.h> #include <stdio.h> __attribute__ (( noreturn, section ( ".text.null_trap" ) )) void null_function_trap ( void ) { void *stack; /* 128 bytes of NOPs; the idea of this is that if something * dereferences a NULL pointer and overwrites us, we at least * have some chance of still getting to execute the printf() * statement. */ __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "nop ; nop ; nop ; nop" ); __asm__ __volatile__ ( "movl %%esp, %0" : "=r" ( stack ) ); printf ( "NULL method called from %p (stack %p)\n", __builtin_return_address ( 0 ), stack ); DBG_HD ( stack, 256 ); while ( 1 ) {} }