Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/interpose.c

    r6bfe5cc r813ddcaa  
    1010// Created On       : Wed Mar 29 16:10:31 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  5 23:40:04 2018
    13 // Update Count     : 17
     12// Last Modified On : Fri Jul 21 22:27:33 2017
     13// Update Count     : 1
    1414//
    1515
     
    3232#include "bits/signal.h"
    3333#include "startup.h"
     34
     35void __cfaabi_interpose_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_CORE ) ));
    3436
    3537typedef void (*generic_fptr_t)(void);
     
    9092void sigHandler_abort( __CFA_SIGPARMS__ );
    9193
    92 extern "C" {
    93         void __cfaabi_interpose_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_CORE ) ));
    94         void __cfaabi_interpose_startup( void ) {
    95                 const char *version = NULL;
    96 
    97                 INIT_REALRTN( abort, version );
    98                 INIT_REALRTN( exit, version );
    99 
    100                 __kernel_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO ); // Failure handler
    101                 __kernel_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO ); // Failure handler
    102                 __kernel_sigaction( SIGABRT, sigHandler_abort, SA_SIGINFO ); // Failure handler
    103         }
     94void __cfaabi_interpose_startup() {
     95        const char *version = NULL;
     96
     97        INIT_REALRTN( abort, version );
     98        INIT_REALRTN( exit, version );
     99
     100        __kernel_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO );      // Failure handler
     101        __kernel_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO );      // Failure handler
     102        __kernel_sigaction( SIGABRT, sigHandler_abort, SA_SIGINFO );      // Failure handler
    104103}
    105104
     
    109108
    110109extern "C" {
    111         void abort( void ) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {
     110        void abort (void) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {
    112111                abortf( NULL );
    113112        }
    114113
    115         void exit( int __status ) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {
     114        void exit (int __status) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {
    116115                libc_exit(__status);
    117116        }
     
    122121}
    123122
    124 void * kernel_abort    ( void ) __attribute__ ((__nothrow__, __leaf__, __weak__)) { return NULL; }
    125 void   kernel_abort_msg( void * data, char * buffer, int size ) __attribute__ ((__nothrow__, __leaf__, __weak__)) {}
     123void * kernel_abort    (void) __attribute__ ((__nothrow__, __leaf__, __weak__)) { return NULL; }
     124void   kernel_abort_msg(void * data, char * buffer, int size) __attribute__ ((__nothrow__, __leaf__, __weak__)) {}
    126125
    127126enum { abort_text_size = 1024 };
     
    134133                int len;
    135134
    136                 if ( fmt ) {
     135                if( fmt ) {
    137136                        va_list args;
    138137                        va_start( args, fmt );
     
    143142
    144143                        __cfaabi_dbg_bits_write( abort_text, len );
    145                         //__cfaabi_dbg_bits_write( "\n", 1 );
     144                        __cfaabi_dbg_bits_write( "\n", 1 );
    146145                }
    147146
     
    163162        enum { Frames = 50 };
    164163        void * array[Frames];
    165         size_t size = backtrace( array, Frames );
     164        int size = backtrace( array, Frames );
    166165        char ** messages = backtrace_symbols( array, size );
    167166
     
    177176
    178177                for ( char *p = messages[i]; *p; ++p ) {
    179                         //__cfaabi_dbg_bits_print_nolock( "X %s\n", p);
    180178                        // find parantheses and +offset
    181179                        if ( *p == '(' ) {
Note: See TracChangeset for help on using the changeset viewer.