X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fguicast%2Fbcsignals.C;h=59597ffa80161cd8a174d98ad3db5e54ceb6a249;hb=aa9374b902768107ebda0cffe739325ffed372f6;hp=ed50cfb15d9e8ac38c630c3096c9ab2b77fce477;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C index ed50cfb1..59597ffa 100644 --- a/cinelerra-5.1/guicast/bcsignals.C +++ b/cinelerra-5.1/guicast/bcsignals.C @@ -385,10 +385,20 @@ const char* BC_Signals::sig_to_str(int number) #if __i386__ #define IP eip +#define sigregs_t sigcontext #endif + #if __x86_64__ #define IP rip +#define sigregs_t sigcontext +#endif + +#if __powerpc__ || __powerpc64__ || __powerpc64le__ +#include +#define IP nip +#define sigregs_t pt_regs #endif + #ifndef IP #error gotta have IP #endif @@ -406,7 +416,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc) // if( uid != 0 ) return; ucontext_t *uc = (ucontext_t *)sc; int pid = getpid(), tid = gettid(); - struct sigcontext *c = (struct sigcontext *)&uc->uc_mcontext; + struct sigregs_t *c = (struct sigregs_t *)&uc->uc_mcontext; uint8_t *ip = (uint8_t *)c->IP; fprintf(stderr,"** %s at %p in pid %d, tid %d\n", n==SIGSEGV? "segv" : n==SIGINT? "intr" : "trap",