gcc/libgo/runtime
Ian Lance Taylor f0d89c7759 runtime: avoid write barriers with traceback info
Unlike the gc runtime, libgo stores traceback information in location
    structs, which contain strings.  Therefore, copying location structs
    around appears to require write barriers, although in fact write
    barriers are never important because the strings are never allocated
    in Go memory.  They come from libbacktrace.
    
    Some of the generated write barriers come at times when write barriers
    are not permitted.  For example, exitsyscall, marked
    nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit
    which calls traceEvent which calls traceStackID which calls
    trace.stackTab.put which copies location values into memory allocated
    by tab.newStack.  This write barrier can be invoked when there is no
    p, causing a crash.
    
    This change fixes the problem by ensuring that location values are
    copied around in the tracing code with no write barriers.
    
    This was found by fixing the compiler to fully implement
    //go:nowritebarrierrec; CL to follow.
    
    Reviewed-on: https://go-review.googlesource.com/134226

From-SVN: r264282
2018-09-13 17:30:00 +00:00
..
aeshash.c re PR go/78789 (Error: no such instruction: `aesenc %xmm0,%xmm2' when compiling libgo/runtime/aeshash.c) 2017-01-03 20:41:54 +00:00
arch.h
array.h
defs.h
env_posix.c Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
getncpu-aix.c Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
getncpu-bsd.c
getncpu-irix.c
getncpu-linux.c
getncpu-none.c
getncpu-solaris.c
go-assert.c
go-assert.h
go-caller.c runtime: don't stat a NULL filename 2018-06-28 20:54:04 +00:00
go-callers.c runtime: funcfileline: get missing function name from symbol table 2018-02-22 18:52:33 +00:00
go-cdiv.c
go-cgo.c runtime: copy cgo support from Go 1.7 runtime 2016-12-19 18:00:35 +00:00
go-construct-map.c runtime: fix makemap calls in __go_construct_map 2018-01-10 15:04:21 +00:00
go-ffi.c runtime, reflect: rewrite Go to FFI type conversion in Go 2016-11-18 00:15:38 +00:00
go-fieldtrack.c runtime: fix type descriptor name in C code 2018-01-31 18:25:17 +00:00
go-libmain.c re PR go/81451 (missing futex check - libgo/runtime/thread-linux.c:12:0 futex.h:13:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘long’) 2017-07-18 23:14:29 +00:00
go-main.c re PR go/81451 (missing futex check - libgo/runtime/thread-linux.c:12:0 futex.h:13:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘long’) 2017-07-18 23:14:29 +00:00
go-matherr.c
go-memclr.c libgo: update to Go 1.8 release candidate 1 2017-01-14 00:05:42 +00:00
go-memcmp.c
go-memequal.c compiler, runtime: replace hashmap code with Go 1.7 hashmap 2016-09-21 20:58:51 +00:00
go-memmove.c compiler, runtime: replace hashmap code with Go 1.7 hashmap 2016-09-21 20:58:51 +00:00
go-nanotime.c runtime: copy runtime package time code from Go 1.7 2016-10-15 00:29:06 +00:00
go-nosys.c runtime: make go-nosys.c compile with !HAVE_SYSCALL 2017-08-29 20:57:20 +00:00
go-now.c re PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent) 2018-01-10 15:42:23 +00:00
go-reflect-call.c runtime: remove __go_alloc and __go_free 2017-01-03 22:58:48 +00:00
go-runtime-error.c re PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent) 2018-01-10 15:42:23 +00:00
go-setenv.c runtime: don't call __go_alloc/__go_free in environment functions 2016-11-18 16:03:13 +00:00
go-signal.c re PR go/81893 (compilation error in libgo starting with r251127) 2017-08-18 20:17:26 +00:00
go-string.h
go-strslice.c runtime: always initialize str field in __go_string_slice result 2017-09-18 22:29:45 +00:00
go-type.h Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
go-typedesc-equal.c re PR go/65755 (incorrect reflection of struct fields with gccgo) 2015-04-17 18:19:44 +00:00
go-unsafe-pointer.c compiler: rationalize external symbol names 2018-01-24 23:50:09 +00:00
go-unsetenv.c runtime: don't call __go_alloc/__go_free in environment functions 2016-11-18 16:03:13 +00:00
go-unwind.c libgo: fix for unaligned read in go-unwind.c's read_encoded_value() 2018-05-04 14:29:05 +00:00
go-varargs.c libgo: Solaris portability fixes. 2015-11-06 19:15:45 +00:00
panic.c Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
print.c runtime: copy print/println support from Go 1.7 2016-10-10 23:13:39 +00:00
proc.c runtime: avoid write barriers with traceback info 2018-09-13 17:30:00 +00:00
rtems-task-variable-add.c
runtime_c.c runtime: use a fence instruction before rdtsc 2018-03-07 14:31:03 +00:00
runtime.h runtime: remove the dummy arg of getcallersp 2018-08-24 18:15:04 +00:00
stack.c runtime: scan register backing store on ia64 2018-02-02 00:16:43 +00:00
thread.c
yield.c runtime: copy signal code from Go 1.7 runtime 2016-11-10 22:53:23 +00:00