1
0
mirror of https://github.com/golang/go synced 2024-11-23 13:20:09 -07:00
go/test
Russ Cox b2dfacf35e runtime: change arm software div/mod call sequence not to modify stack
Instead of pushing the denominator argument on the stack,
the denominator is now passed in m.

This fixes a variety of bugs related to trying to take stack traces
backwards from the middle of the software div/mod routines.
Some of those bugs have been kludged around in the past,
but others have not. Instead of trying to patch up after breaking
the stack, this CL stops breaking the stack.

This is an update of https://golang.org/cl/19810043,
which was rolled back in https://golang.org/cl/20350043.

The problem in the original CL was that there were divisions
at bad times, when m was not available. These were divisions
by constant denominators, either in C code or in assembly.
The Go compiler knows how to generate division by multiplication
for constant denominators, but the C compiler did not.
There is no longer any C code, so that's taken care of.
There was one problematic DIV in runtime.usleep (assembly)
but https://golang.org/cl/12898 took care of that one.
So now this approach is safe.

Reject DIV/MOD in NOSPLIT functions to keep them from
coming back.

Fixes #6681.
Fixes #6699.
Fixes #10486.

Change-Id: I09a13c76ad08ba75b3bd5d46a3eb78e66a84ab38
Reviewed-on: https://go-review.googlesource.com/12899
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-07-30 16:14:05 +00:00
..
bench all: retire architecture letter in file names, public API 2015-05-21 17:32:17 +00:00
bugs test: migrate remaining tests to run.go 2014-12-22 22:41:34 +00:00
chan Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
ddd2.dir
dwarf
fixedbugs runtime: change arm software div/mod call sequence not to modify stack 2015-07-30 16:14:05 +00:00
import2.dir
import4.dir
interface cmd/internal/gc: improve "type *X has no field or method M" message 2015-05-07 16:21:57 +00:00
ken
method4.dir
safe
stress
syntax
64bit.go
235.go
alias1.go
alias.go
append.go
args.go
assign1.go
assign.go cmd/gc: prohibit short variable declarations containing duplicate symbols 2014-10-06 17:16:39 -04:00
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
chancap.go
chanlinear.go runtime: test for linear enqueue/dequeue behavior 2014-12-08 22:18:17 +00:00
char_lit1.go
char_lit.go
clearfat.go [dev.power64] 9g: fix under-zeroing in clearfat 2014-10-31 11:08:27 -04:00
closedchan.go
closure1.go cmd/gc: capture variables by value 2015-01-29 13:07:30 +00:00
closure2.go cmd/gc: fix capturing by value for range statements 2015-02-03 15:48:48 +00:00
closure.go
cmp6.go
cmp.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
cmplx.go
cmplxdivide1.go
cmplxdivide.c test: comment the behavior and use of cmplxdivide* 2015-01-15 00:00:06 +00:00
cmplxdivide.go test: comment the behavior and use of cmplxdivide* 2015-01-15 00:00:06 +00:00
complit1.go cmd/internal/gc: accept map literals with omitted key type 2015-06-04 02:31:38 +00:00
complit.go
compos.go
const1.go
const2.go
const3.go
const4.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const5.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const6.go
const.go
convert1.go
convert3.go
convert.go
convlit1.go
convlit.go cmd/internal/gc: unsafe.Pointer constants may only be converted to uintptr 2015-05-07 23:54:28 +00:00
convT2X.go
copy.go
crlf.go
ddd1.go
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go
deferprint.out
divide.go
divmod.go
empty.go
env.go
eof1.go
eof.go
errchk Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
escape2.go cmd/compile: handle copy in escape analysis 2015-06-24 22:22:55 +00:00
escape2n.go cmd/compile: handle copy in escape analysis 2015-06-24 22:22:55 +00:00
escape3.go
escape4.go cmd/internal/gc: transitive inlining 2015-02-26 17:36:00 +00:00
escape5.go cmd/internal/gc: move check for large-hence-heap-allocated types into escape analysis 2015-05-22 02:13:54 +00:00
escape_array.go cmd/internal/gc: move check for large-hence-heap-allocated types into escape analysis 2015-05-22 02:13:54 +00:00
escape_calls.go cmd/internal/gc: make indirect calls properly escape-y 2015-05-22 01:36:11 +00:00
escape_closure.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_field.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_iface.go test: add tests for escape analysis of interface conversions 2015-03-28 16:15:27 +00:00
escape_indir.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_level.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_map.go test: add tests for escape analysis of interface conversions 2015-03-28 16:15:27 +00:00
escape_param.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_slice.go cmd/internal/gc: extend escape analysis to pointers in slices 2015-05-18 15:34:39 +00:00
escape_struct_param1.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_struct_param2.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_struct_return.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape.go
fibo.go Fix whitespace (use blanks consistently). 2014-12-08 22:22:58 +00:00
float_lit2.go
float_lit3.go
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
func7.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
func8.go
func.go
funcdup2.go
funcdup.go
gc1.go
gc2.go test: check for build constraints only upto the first blank line 2015-02-06 05:36:26 +00:00
gc.go
gcstring.go
goprint.go
goprint.out
goto.go Revert "cmd/internal/gc: ignore declarations of types for goto validation" 2015-05-15 16:35:49 +00:00
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go
import.go
index0.go
index1.go
index2.go
index.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
indirect1.go
indirect.go
init1.go test: deflake init1.go test, tighten its bounds 2015-02-13 22:13:56 +00:00
init.go
initcomma.go
initialize.go
initializerr.go
inline.go cmd/internal/gc: transitive inlining 2015-02-26 17:36:00 +00:00
int_lit.go
intcvt.go
iota.go
label1.go
label.go
linkx_run.go cmd/link: detect -X setting non-string variable 2015-06-29 20:28:36 +00:00
linkx.go cmd/link: detect -X setting non-string variable 2015-06-29 20:28:36 +00:00
literal.go
live1.go
live2.go cmd/gc: allocate non-escaping maps on stack 2015-02-12 09:53:52 +00:00
live.go test: add -update_errors flag to run script 2015-04-10 11:33:42 +00:00
mallocfin.go
map1.go
map.go
maplinear.go test: make maplinear more robust 2014-10-27 18:59:02 -04:00
method1.go
method2.go
method3.go
method4.go
method5.go
method.go
named1.go
named.go
nil.go
nilcheck.go cmd/gc: optimize existence-only map lookups 2015-01-07 22:36:06 +00:00
nilptr2.go
nilptr3.go cmd/7g: enable peephole optimizer 2015-04-08 08:16:54 +00:00
nilptr4.go
nilptr.go
nosplit.go cmd/internal/obj/arm64: reject misaligned stack frames, except empty frames 2015-07-29 21:37:12 +00:00
nul1.go
parentype.go
peano.go
print.go
print.out
printbig.go
printbig.out
range.go
recover1.go
recover2.go
recover3.go
recover4.go test: fix recover4 test on 64kb systems 2015-03-17 05:25:01 +00:00
recover.go test: add more cases to recover.go 2014-10-22 08:06:15 -07:00
rename1.go
rename.go
reorder2.go
reorder.go
return.go
rotate0.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate1.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate2.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate3.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate.go
run.go runtime: fix x86 stack trace for call to heap memory 2015-07-13 19:42:35 +00:00
rune.go
runtime.go
shift1.go
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit_run.go all: retire architecture letter in file names, public API 2015-05-21 17:32:17 +00:00
sinit.go cmd/compile: allow static init for unsafe.Pointer(&x) where x is global 2015-07-07 21:51:57 +00:00
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go cmd/internal/gc: optimize slice + write barrier 2015-05-13 19:20:39 +00:00
solitaire.go
stack.go
string_lit.go
stringrange.go
struct0.go
switch3.go
switch4.go
switch.go
tinyfin.go
torture.go
turing.go
typecheck.go
typeswitch1.go
typeswitch2.go
typeswitch3.go
typeswitch.go
undef.go
utf.go
varerr.go
varinit.go
writebarrier.go cmd/internal/gc: add missing write barrier in append(x, BigStructWithPointers) 2015-05-19 15:28:29 +00:00
zerodivide.go