diff options
| author | Rob Pike <r@golang.org> | 2008-09-13 13:13:36 -0700 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2008-09-13 13:13:36 -0700 |
| commit | c1ad0509ee31822f817c11ca79706ab148ae5aee (patch) | |
| tree | 4e8dc4cb2c7abc755c637bd91ea0433b56dbc1aa /src/runtime/rt1_amd64_linux.c | |
| parent | ddc7bc5aba8239ae1f83261ce1afb27f0ab0889e (diff) | |
| download | go-c1ad0509ee31822f817c11ca79706ab148ae5aee.tar.xz | |
remove special trap-handling code for array out of bounds -
compiler doesn't generate them any more
R=ken
OCL=15309
CL=15309
Diffstat (limited to 'src/runtime/rt1_amd64_linux.c')
| -rw-r--r-- | src/runtime/rt1_amd64_linux.c | 44 |
1 files changed, 6 insertions, 38 deletions
diff --git a/src/runtime/rt1_amd64_linux.c b/src/runtime/rt1_amd64_linux.c index 8c131d2920..54b6496d1c 100644 --- a/src/runtime/rt1_amd64_linux.c +++ b/src/runtime/rt1_amd64_linux.c @@ -129,41 +129,11 @@ typedef struct sigaction { void (*sa_handler)(int32); void (*sa_sigaction)(int32, siginfo *, void *); } u; /* signal handler */ - uint8 sa_mask[128]; /* signal mask to apply. 128? are they MORONS? */ + uint8 sa_mask[128]; /* signal mask to apply. 128? are they KIDDING? */ int32 sa_flags; /* see signal options below */ void (*sa_restorer) (void); /* unused here; needed to return from trap? */ } sigaction; -/* - * For trace traps, disassemble instruction to see if it's INTB of known type. - */ -int32 -inlinetrap(int32 sig, byte* pc) -{ - extern void etext(); - extern void _rt0_amd64_linux(); - - if(sig != 5 && sig != 11) /* 5 is for trap, but INTB 5 looks like SEGV */ - return 0; - if(pc < (byte*)_rt0_amd64_linux || pc+2 >= (byte*)etext) - return 0; - if(pc[0] != 0xcd) /* INTB */ - return 0; - switch(pc[1]) { - case 5: - prints("\nTRAP: array out of bounds\n"); - break; - case 6: - prints("\nTRAP: leaving function with returning a value\n"); - break; - default: - prints("\nTRAP: unknown run-time trap "); - sys·printint(pc[1]); - prints("\n"); - } - return 1; -} - void sighandler(int32 sig, siginfo* info, void** context) { @@ -172,13 +142,11 @@ sighandler(int32 sig, siginfo* info, void** context) struct sigcontext *sc = &(((struct ucontext *)context)->uc_mcontext); - if(!inlinetrap(sig, (byte *)sc->rip)) { - if(sig < 0 || sig >= NSIG){ - prints("Signal "); - sys·printint(sig); - }else{ - prints(sigtab[sig].name); - } + if(sig < 0 || sig >= NSIG){ + prints("Signal "); + sys·printint(sig); + }else{ + prints(sigtab[sig].name); } prints("\nFaulting address: 0x"); sys·printpointer(info->si_addr); |
