Diff for /embedaddon/quagga/lib/sigevent.c between versions 1.1 and 1.1.1.3

version 1.1, 2012/02/21 17:26:12 version 1.1.1.3, 2016/11/02 10:09:10
Line 22 Line 22
 #include <zebra.h>  #include <zebra.h>
 #include <sigevent.h>  #include <sigevent.h>
 #include <log.h>  #include <log.h>
   #include <memory.h>
   
 #ifdef SA_SIGINFO  #ifdef SA_SIGINFO
 #ifdef HAVE_UCONTEXT_H  #ifdef HAVE_UCONTEXT_H
Line 174  program_counter(void *context) Line 175  program_counter(void *context)
 {  {
 #ifdef HAVE_UCONTEXT_H  #ifdef HAVE_UCONTEXT_H
 #ifdef GNU_LINUX  #ifdef GNU_LINUX
#ifdef REG_EIP  /* these are from GNU libc, rather than Linux, strictly speaking */
  if (context)# if defined(REG_EIP)
    return (void *)(((ucontext_t *)context)->uc_mcontext.gregs[REG_EIP]);#  define REG_INDEX REG_EIP
#endif /* REG_EIP */# elif defined(REG_RIP)
 #  define REG_INDEX REG_RIP
 # elif defined(__powerpc__)
 #  define REG_INDEX 32
 # endif
 #elif defined(SUNOS_5) /* !GNU_LINUX */
 # define REG_INDEX REG_PC
 #endif /* GNU_LINUX */  #endif /* GNU_LINUX */
   
   #ifdef REG_INDEX
   # ifdef HAVE_UCONTEXT_T_UC_MCONTEXT_GREGS
   #  define REGS gregs[REG_INDEX]
   # elif defined(HAVE_UCONTEXT_T_UC_MCONTEXT_UC_REGS)
   #  define REGS uc_regs->gregs[REG_INDEX]
   # endif /* HAVE_UCONTEXT_T_UC_MCONTEXT_GREGS */
   #endif /* REG_INDEX */
   
   #ifdef REGS
     if (context)
       return (void *)(((ucontext_t *)context)->uc_mcontext.REGS);
   #elif defined(HAVE_UCONTEXT_T_UC_MCONTEXT_REGS__NIP) 
     /* older Linux / struct pt_regs ? */
     if (context)
       return (void *)(((ucontext_t *)context)->uc_mcontext.regs->nip);
   #endif /* REGS */
   
 #endif /* HAVE_UCONTEXT_H */  #endif /* HAVE_UCONTEXT_H */
   return NULL;    return NULL;
 }  }
Line 266  trap_default_signals(void) Line 291  trap_default_signals(void)
 #endif  #endif
                    );                     );
   } sigmap[] = {    } sigmap[] = {
    { core_signals, sizeof(core_signals)/sizeof(core_signals[0]), core_handler},    { core_signals, array_size(core_signals), core_handler},
    { exit_signals, sizeof(exit_signals)/sizeof(exit_signals[0]), exit_handler},    { exit_signals, array_size(exit_signals), exit_handler},
    { ignore_signals, sizeof(ignore_signals)/sizeof(ignore_signals[0]), NULL},    { ignore_signals, array_size(ignore_signals), NULL},
   };    };
   u_int i;    u_int i;
   
  for (i = 0; i < sizeof(sigmap)/sizeof(sigmap[0]); i++)  for (i = 0; i < array_size(sigmap); i++)
     {      {
       u_int j;        u_int j;
   

Removed from v.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>