Changes in src/libcfa/interpose.c [6bfe5cc:813ddcaa]
- File:
-
- 1 edited
-
src/libcfa/interpose.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/interpose.c
r6bfe5cc r813ddcaa 10 10 // Created On : Wed Mar 29 16:10:31 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 5 23:40:04 201813 // Update Count : 1 712 // Last Modified On : Fri Jul 21 22:27:33 2017 13 // Update Count : 1 14 14 // 15 15 … … 32 32 #include "bits/signal.h" 33 33 #include "startup.h" 34 35 void __cfaabi_interpose_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_CORE ) )); 34 36 35 37 typedef void (*generic_fptr_t)(void); … … 90 92 void sigHandler_abort( __CFA_SIGPARMS__ ); 91 93 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 } 94 void __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 104 103 } 105 104 … … 109 108 110 109 extern "C" { 111 void abort ( void) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {110 void abort (void) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) { 112 111 abortf( NULL ); 113 112 } 114 113 115 void exit ( int __status) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) {114 void exit (int __status) __attribute__ ((__nothrow__, __leaf__, __noreturn__)) { 116 115 libc_exit(__status); 117 116 } … … 122 121 } 123 122 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__)) {}123 void * kernel_abort (void) __attribute__ ((__nothrow__, __leaf__, __weak__)) { return NULL; } 124 void kernel_abort_msg(void * data, char * buffer, int size) __attribute__ ((__nothrow__, __leaf__, __weak__)) {} 126 125 127 126 enum { abort_text_size = 1024 }; … … 134 133 int len; 135 134 136 if ( fmt ) {135 if( fmt ) { 137 136 va_list args; 138 137 va_start( args, fmt ); … … 143 142 144 143 __cfaabi_dbg_bits_write( abort_text, len ); 145 //__cfaabi_dbg_bits_write( "\n", 1 );144 __cfaabi_dbg_bits_write( "\n", 1 ); 146 145 } 147 146 … … 163 162 enum { Frames = 50 }; 164 163 void * array[Frames]; 165 size_t size = backtrace( array, Frames );164 int size = backtrace( array, Frames ); 166 165 char ** messages = backtrace_symbols( array, size ); 167 166 … … 177 176 178 177 for ( char *p = messages[i]; *p; ++p ) { 179 //__cfaabi_dbg_bits_print_nolock( "X %s\n", p);180 178 // find parantheses and +offset 181 179 if ( *p == '(' ) {
Note:
See TracChangeset
for help on using the changeset viewer.