Changeset b067d9b for libcfa/src/interpose.cfa
- Timestamp:
- Oct 29, 2019, 4:01:24 PM (6 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 773db65, 9421f3d8
- Parents:
- 7951100 (diff), 8364209 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/interpose.cfa
r7951100 rb067d9b 10 10 // Created On : Wed Mar 29 16:10:31 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at May 5 11:37:35 201813 // Update Count : 11 112 // Last Modified On : Sun Jul 14 22:57:16 2019 13 // Update Count : 116 14 14 // 15 15 … … 25 25 } 26 26 27 #include "bits/debug.h "28 #include "bits/defs.h "29 #include "bits/signal.h " // sigHandler_?30 #include "startup.h " // STARTUP_PRIORITY_CORE27 #include "bits/debug.hfa" 28 #include "bits/defs.hfa" 29 #include "bits/signal.hfa" // sigHandler_? 30 #include "startup.hfa" // STARTUP_PRIORITY_CORE 31 31 32 32 //============================================================================================= 33 33 // Interposing helpers 34 34 //============================================================================================= 35 36 void preload_libgcc(void) { 37 dlopen( "libgcc_s.so.1", RTLD_NOW ); 38 if ( const char * error = dlerror() ) abort( "interpose_symbol : internal error pre-loading libgcc, %s\n", error ); 39 } 35 40 36 41 typedef void (* generic_fptr_t)(void); … … 76 81 //============================================================================================= 77 82 78 void sigHandler_segv 79 void sigHandler_ill 80 void sigHandler_fpe 81 void sigHandler_ab ort( __CFA_SIGPARMS__ );82 void sigHandler_term 83 void sigHandler_segv( __CFA_SIGPARMS__ ); 84 void sigHandler_ill ( __CFA_SIGPARMS__ ); 85 void sigHandler_fpe ( __CFA_SIGPARMS__ ); 86 void sigHandler_abrt( __CFA_SIGPARMS__ ); 87 void sigHandler_term( __CFA_SIGPARMS__ ); 83 88 84 89 struct { … … 91 96 void __cfaabi_interpose_startup( void ) { 92 97 const char *version = NULL; 98 99 preload_libgcc(); 93 100 94 101 #pragma GCC diagnostic push … … 103 110 __cfaabi_sigaction( SIGILL , sigHandler_ill , SA_SIGINFO ); 104 111 __cfaabi_sigaction( SIGFPE , sigHandler_fpe , SA_SIGINFO ); 105 __cfaabi_sigaction( SIGABRT, sigHandler_ab ort, SA_SIGINFO | SA_RESETHAND);112 __cfaabi_sigaction( SIGABRT, sigHandler_abrt, SA_SIGINFO | SA_RESETHAND); 106 113 __cfaabi_sigaction( SIGTERM, sigHandler_term , SA_SIGINFO ); 107 114 __cfaabi_sigaction( SIGINT , sigHandler_term , SA_SIGINFO ); … … 197 204 if ( *p == '(' ) { 198 205 name = p; 199 } 200 else if ( *p == '+' ) { 206 } else if ( *p == '+' ) { 201 207 offset_begin = p; 202 } 203 else if ( *p == ')' ) { 208 } else if ( *p == ')' ) { 204 209 offset_end = p; 205 210 break; … … 216 221 217 222 __cfaabi_dbg_bits_print_nolock( "(%i) %s : %s + %s %s\n", frameNo, messages[i], name, offset_begin, offset_end); 218 } 219 // otherwise, print the whole line 220 else { 223 } else { // otherwise, print the whole line 221 224 __cfaabi_dbg_bits_print_nolock( "(%i) %s\n", frameNo, messages[i] ); 222 225 } … … 251 254 } 252 255 253 void sigHandler_ab ort( __CFA_SIGPARMS__ ) {256 void sigHandler_abrt( __CFA_SIGPARMS__ ) { 254 257 __cfaabi_backtrace(); 255 258
Note:
See TracChangeset
for help on using the changeset viewer.