summaryrefslogtreecommitdiff
path: root/gcc/go
AgeCommit message (Collapse)Author
2016-12-13 libgo: fixes for Solaris buildian
Don't put m[0-4] in runtime.inc. Pass -mclear-hwcap to the linker if supported. From Rainer Orth. Reviewed-on: https://go-review.googlesource.com/34331 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243619 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-08 runtime: mark non-x86 aeshashbody parameters as unusedian
Avoids warnings during the build. Reviewed-on: https://go-review.googlesource.com/34142 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243459 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-08 runtime: copy memory hash code from Go 1.7ian
Rewrite the AES hashing code from gc assembler to C code using intrinsics. The resulting code generates the same hash code for the same input as the gc code--that doesn't matter as such, but testing it ensures that the C code does something useful. Also change mips64pe32le to mips64p32le in configure script--noticed during CL review. Reviewed-on: https://go-review.googlesource.com/34022 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243445 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-08 runtime: allocate _panic struct on heapian
The gc library allocates a _panic struct on the stack. This does not work for gccgo, because when a deferred function recovers the panic we unwind the stack up to that point so that returning from the function will work correctly. Allocating on the stack fine if the panic is not recovered, and it works fine if the panic is recovered by a function that returns. However, it fails if the panic is recovered by a function that itself panics, and if that second panic is then recovered by a function higher up on the stack. When we unwind the stack to that second panic, the g will wind up pointing at a panic farther down on the stack. Even then everything will often work fine, except when the deferred function catching the second panic makes a bunch of calls that use stack space before returning. In that case the code can overwrite the panic struct, which will then cause disaster when we remove the struct from the linked list, as the link field will be garbage. This case is rare enough that all the x86 tests were passing, but there was a failure on ppc64le. Before https://golang.org/cl/33414 we allocated the panic struct on the heap, so go back to doing that again. Fixes golang/go#18228. Reviewed-on: https://go-review.googlesource.com/34027 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243444 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-08 compiler: make Slice_construction_expression::do_flatten idempotentian
Because of the way we handle call expressions with multiple results, it's possible for expressions to be flattened more than once. In the case of Slice_construction_expression, allocating the slice storage multiple times caused a compiler crash as one of the Temporary_statement's wound up not getting a backend expression. Test case is https://golang.org/cl/34020. Reviewed-on: https://go-review.googlesource.com/34026 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243442 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-08 runtime: remove some unused variables/declarations from runtime.hian
Small patch from Eric Botcazou. Reviewed-on: https://go-review.googlesource.com/34029 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243424 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-06 compiler: pass lvalue/rvalue context to back end for var exprsian
Add a new flag on the Var_expression class that indicates whether the var reference appears in an "lvalue" context (for example, on the LHS of an assignment stmt) or an "rvalue" context (for example, as an argument of a call). Add a traversal pass that visits assignment stmt LHS subtrees so as to mark things prior to backend gen. Select the right context value in other places where Backend::var_expression is called. Reviewed-on: https://go-review.googlesource.com/33990 * go-gcc.cc (Gcc_backend::var_expression): Add Varexpr_context parameter. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243321 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-01 compiler: add slice initializers to the GC root listian
As of https://golang.org/cl/32917 we can put slice initializers in the .data section. The program can still change the values in those slices. That means that if the slice elements can contain pointers, we need to register the entire initializer as a GC root. This would be straightforward except that we only have a Bexpression for the slice initializer, not an Expression. So introduce a Backend_expression type that wraps a Bexpression as an Expression. The test case for this is https://golang.org/cl/33790. Reviewed-on: https://go-review.googlesource.com/33792 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243129 138bc75d-0d04-0410-961f-82ee72b054a4
2016-12-01 runtime: set isarchive in initsigian
The library initialization code in go-libmain.c sets the C variable runtime_isarchive but failed to set the Go variable runtime.isarchive. We don't currently have a way to let C code access an unexported Go variable, but fortunately the only time the Go function initsig is called with an argument of true is exactly where we want to set isarchive. So let initsig do it. Reviewed-on: https://go-review.googlesource.com/33753 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243094 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-30 runtime: print C functions in tracebackian
Since gccgo can trace back through C code as easily as Go code, we should print C functions in the traceback. This worked before https://golang.org/cl/31230 for a dumb reason. The default value for runtime.traceback_cache was, and is, 2 << 2, meaning to print all functions. The old C code for runtime_parsedebugvars would return immediately and do nothing if the environment variable GODEBUG was not set (if GODEBUG was set it would later call setTraceback. The new Go code for runtime.parsedebugvars does not return immediately if GODEBUG is not set, and always calls setTraceback. Either way, if GOTRACEBACK is not set, setTraceback would set traceback_cache to 1 << 2, meaning to only print non-runtime functions and having the effect of not printing plain C functions. Keep the current handling of GODEBUG/GOTRACEBACK, which matches the gc library, but add an extra check to print C functions by default. Reviewed-on: https://go-review.googlesource.com/33717 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243083 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-30 runtime: fixes for -buildmode=c-archiveian
With -buildmode=c-archive, initsig is called before the memory allocator has been initialized. The code was doing a memory allocation because of the call to funcPC(sigtramp). When escape analysis is fully implemented, that call should not allocate. For now, finesse the issue by calling a C function to get the C function pointer value of sigtramp. When returning from a call from C to a Go function, a deferred function is run to go back to syscall mode. When the call occurs on a non-Go thread, that call sets g to nil, making it impossible to add the _defer struct back to the pool. Just drop it and let the garbage collector clean it up. Reviewed-on: https://go-review.googlesource.com/33675 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242992 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-22 compiler: relocate ID encoding utilities to gofrontendian
Relocate the code that encodes/sanitizes identifiers to make them assembler-friendly, moving it from the back end to the front end; the decisions about when to encode an identifier and the calls to the encoding helpers now take place entirely in gofrontend. Reviewed-on: https://go-review.googlesource.com/33424 * go-gcc.cc (char_needs_encoding): Remove. (needs_encoding, fetch_utf8_char, encode_id): Remove. (Gcc_backend::global_variable): Add asm_name parameter. Don't compute asm_name here. (Gcc_backend::implicit_variable): Likewise. (Gcc_backend::implicit_variable_reference): Likewise. (Gcc_backend::immutable_struct): Likewise. (Gcc_backend::immutable_struct_reference): Likewise. * Make-lang.in (GO_OBJS): Add go/go-encode-id.o. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242726 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-22 PR go/77910ian
cmd/go: don't check standard packages when using gccgo This copies https://golang.org/cl/33295 to libgo. This fixes GCC PR 77910. Reviewed-on: https://go-review.googlesource.com/33471 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242724 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-22 runtime: rewrite panic/defer code from C to Goian
The actual stack unwind code is still in C, but the rest of the code, notably all the memory allocation, is now in Go. The names are changed to the names used in the Go 1.7 runtime, but the code is necessarily somewhat different. The __go_makefunc_can_recover function is dropped, as the uses of it were removed in https://golang.org/cl/198770044. Reviewed-on: https://go-review.googlesource.com/33414 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242715 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-18 runtime: move schedt type and sched var from C to Goian
This doesn't change any actual code, it just starts using the Go definition of the schedt type and the sched variable rather than the C definitions. The schedt type is tweaked slightly for gccgo. We aren't going to release goroutine stacks, so we don't need separate gfreeStack and gfreeNostack lists. We only have one size of defer function, so we don't need a list of 5 different pools. Reviewed-on: https://go-review.googlesource.com/33364 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242600 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-18 runtime: don't call __go_alloc/__go_free in environment functionsian
Reviewed-on: https://go-review.googlesource.com/33363 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242594 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-18 libgo: remove old/regexp and old/templateian
They were removed from the master Go library in 2012 (https://golang.org/cl/5979046) but somehow that was not reflected here. Reviewed-on: https://go-review.googlesource.com/33391 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242592 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-18Correct gcc/go/gofrontend/lex.cc and libgo/aclocal.m4 to the versionsian
in the gofrontend repo, which is supposed to be the master copy. Remove a few files in libgo that somehow were not deleted in the past. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242583 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-18 runtime, reflect: rewrite Go to FFI type conversion in Goian
As we move toward the Go 1.7 garbage collector, it's essential that all allocation of values that can contain Go pointers be done using the correct type descriptor. That is simplest if we do all such allocation in Go code. This rewrites the code that converts from a Go type to a libffi CIF into Go. Reviewed-on: https://go-review.googlesource.com/33353 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242578 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-16 runtime: replace runtime1.goc with Go and C codeian
A step toward eliminating goc2c. Drop the exported parfor code; it was needed for tests in the past, but no longer is. The Go 1.7 runtime no longer uses parfor. Reviewed-on: https://go-review.googlesource.com/33324 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242509 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-16 compiler: separate incomparable types from comparable onesian
Otherwise we can accidentally and incorrectly mark an actual user type as incomparable. This fixes the gccgo version of https://golang.org/issue/17752. The test case for gccgo is https://golang.org/cl/33249. Reviewed-on: https://go-review.googlesource.com/33292 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242494 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-14 runtime: don't crash if signal handler info argument is nilian
Apparently on Solaris 10 a SA_SIGINFO signal handler can be invoked with a nil info argument. I would not have believed it but I've now seen it happen, and the sigaction man page actually says "If the second argument is not equal to NULL, it points to a siginfo_t structure...." So, if that happens, don't crash. Also fix another case where we want to make sure that &T{} does not allocate. Reviewed-on: https://go-review.googlesource.com/33150 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242403 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-11 libgo: fix GOARCH_INT64ALIGN for several targetsian
From Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/33130 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242072 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-10 runtime: copy signal code from Go 1.7 runtimeian
Add a little shell script to auto-generate runtime.sigtable from the known signal names. Force the main package to always import the runtime package. Otherwise some runtime package global variables may never be initialized. Set the syscallsp and syscallpc fields of g when entering a syscall, so that the runtime package knows when a g is executing a syscall. Fix runtime.funcPC to avoid dead store elimination of the interface value when the function is inlined. Reviewed-on: https://go-review.googlesource.com/33025 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242060 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-09 compiler: rework static initializer codeian
Rename is_immutable to is_static_initializer to try to capture what it really means. Be more precise about when an address expression, or a binary expression, can be a static initializer. Don't check whether a type has pointers when deciding whether an initializer must be read-write, just check whether it is being used to initialize a global variable. To make that work set the Translate_context function to NULL for a global variable with a static initializer. The effect of this is to let more global variables be initialized directly, rather than being initialized in the generated init function. Reviewed-on: https://go-review.googlesource.com/32917 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242024 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-05 PR go/78172.ian
libgo: avoid confusion in upcase_fields in mksysinfo.sh The mksysinfo.sh script could get confused when there were multiple types starting with the same name. I believe this is the underlying cause of GCC PR 78172. Also redirect a grep to /dev/null to avoid extraneous messages during the build. Reviewed-on: https://go-review.googlesource.com/32821 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241868 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-01 libgo: fix GOARCH_PHYSPAGESIZE for ia64ian
From Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/32537 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241757 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-01 runtime: recreate function called by cgo -gccgoian
When using cgo -gccgo calls to C.GoString, C.GoStringN, and C.GoBytes are turned into calls to __go_byte_array_to_string and __go_string_to_byte_array. Those functions were removed when the string code was copied from Go 1.7, but we still need them for cgo. While cgo should be updated, old versions will exist for some time. Reviewed-on: https://go-review.googlesource.com/32474 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241743 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-01 libgo: only rebuild package if dependent .gox has changedian
Use mvifdiff and stamp files to track whether a .gox file has changed. When package A depends on package B, and we rebuild package B, only rebuild package A if package B's .gox file changes. This is safe because when package A imports package B it only reads package B's .gox file. This means that changes that do not affect export information will not cause dependent packages to be recompiled. Reviewed-on: https://go-review.googlesource.com/32476 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241742 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-01 libgo: minor Makefile improvementsian
Suggested by Ralph Corderoy. Reviewed-on: https://go-review.googlesource.com/32414 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241741 138bc75d-0d04-0410-961f-82ee72b054a4
2016-11-01 PR go/78145ian
compiler: don't put print/println constants into temporaries It's not necessary, and it breaks setting their type to int64/uint64 when appropriate. This fixes GCC PR 78145. Reviewed-on: https://go-review.googlesource.com/32475 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241740 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-30 compiler: fix slice/array evaluation order bugian
There was a phase ordering issue in the handling of "keyed" array literal expressions: the lowering phase was canonicalizing the indices/vals before the phase that fixed evaluation order, meaning that the evaluation order was incorrect. The fix is to capture the orginal ordering and use that ordering when doing traversals (there is already something similar being done for struct literal expressions). Fixes golang/go#17640 Reviewed-on: https://go-review.googlesource.com/32296 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241688 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-30 libgo: eliminate a lot of duplication in Makefile.amian
I read through the GNU make manual. I knew there had to be a way to do it. Remove the special netgo library. The essential feature--using the Go DNS resolver--is now available by setting GODEBUG=netdns=go. Reviewed-on: https://go-review.googlesource.com/32333 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241687 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-28 compiler, runtime: copy slice code from Go 1.7 runtimeian
Change the compiler handle append as the gc compiler does: call a function to grow the slice, but otherwise assign the new elements directly to the final slice. For the current gccgo memory allocator the slice code has to call runtime_newarray, not mallocgc directly, so that the allocator sets the TypeInfo_Array bit in the type pointer. Rename the static function cnew to runtime_docnew, so that the stack trace ignores it when ignoring runtime functions. This was needed to fix the runtime/pprof tests on 386. Reviewed-on: https://go-review.googlesource.com/32218 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241667 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-28 PR go/78144ian
libgo: incorporate fix for timezone test This brings over the test-only fix for issue 17276 into gccgo/libgo (with tzdata-2016g there is a new zone abbreviation). This is a copy of https://golang.org/cl/29995. Reviewed-on: https://go-review.googlesource.com/32182 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241661 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-28 PR go/78143ian
runtime: build lfstack_32bit.go on ppc Missed a build tag. This is GCC PR 78143. Reviewed-on: https://go-review.googlesource.com/32295 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241659 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-28 libgo: redirect grep output in mkrsysinfo.sh to /dev/nullian
I noticed a stray useless output line when building libgo. Reviewed-on: https://go-review.googlesource.com/32294 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241655 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-25go-lang.c: remove a redundant castdmalcolm
gcc/go/ChangeLog: * go-lang.c (go_langhook_type_for_mode): Remove redundant cast from result of GET_MODE_CLASS. Minor formatting fixes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241514 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-21 libgo: keep c0 and c1 out of runtime.incian
The constants named c0 and c1 turn up as macros in runtime.inc. This reportedly breaks building on Solaris 11, where there is a system struct that has a field named c1. The constants aren't needed by the runtime C code, so avoid the problem by grepping them out. Reviewed-on: https://go-review.googlesource.com/31730 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241432 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-21 libgo: leave Int64Align as 8 on 32-bit SPARCian
Verified by testing on SPARC Solaris. Reviewed-on: https://go-review.googlesource.com/31675 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241430 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-21 runtime: copy lfstack code from Go 1.7 runtimeian
Note that lfstack_64bit.go was modified for Solaris support in a different, and better, way than the superseded lfstack.goc code. Reviewed-on: https://go-review.googlesource.com/31673 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241427 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-20 runtime: rewrite interface code into Goian
I started to copy the Go 1.7 interface code, but the gc and gccgo representations of interfaces are too different. So instead I rewrote the gccgo interface code from C to Go. The code is largely the same as it was, but the names are more like those used in the gc runtime. I also copied over the string comparison functions, and tweaked the compiler to use eqstring when comparing strings for equality. Reviewed-on: https://go-review.googlesource.com/31591 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241384 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-19 runtime, syscall: force EPOLLET to be positiveian
The C definition is 1U << 31. Reportedly on some systems GCC's -fgo-dump-spec can print this as -2147483648. Reviewed-on: https://go-review.googlesource.com/31448 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241347 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-18 runtime: copy netpoll code from Go 1.7 runtimeian
Reviewed-on: https://go-review.googlesource.com/31325 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241307 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-18 runtime: scan caller-saved registers for non-split-stackian
While testing a patch on Solaris, which does not support split-stack, I ran across a bug in the handling of caller-saved registers for the garbage collector. For non-split-stack systems, runtime_mcall is responsible for saving all caller-saved registers on the stack so that the GC stack scan will see them. It does this by calling __builtin_unwind_init and setting the g's gcnextsp field to point to the current stack. The garbage collector then scans the stack from gcnextsp to the top of stack. Unfortunately, the code was setting gcnextsp to point to runtime_mcall's argument, which meant that even though runtime_mcall was careful to store all caller-saved registers on the stack, the GC never saw them. This is, of course, only a problem if a value lives only in a caller-saved register, and not anywhere else on the stack or heap. And it is only a problem if that caller-saved register manages to make it all the way down to runtime_mcall without being saved by any function on the way. This is moderately unlikely but it turns out that the recent changes to keep values on the stack when compiling the runtime package caused it to happen for the local variable `s` in `notifyListWait` in runtime/sema.go. That function calls goparkunlock which is simple enough to not require all registers, and itself calls runtime_mcall. So it was possible for `s` to be released by the GC before the goroutine returned from goparkunlock, which eventually caused a dangling pointer to be passed to releaseSudog. This is not a problem on split-stack systems, which use __splitstack_get_context, which saves a stack pointer low enough on the stack to scan the registers saved by runtime_mcall. Reviewed-on: https://go-review.googlesource.com/31323 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241304 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-17 runtime: copy rdebug code from Go 1.7 runtimeian
While we're at it, update the runtime/debug package, and start running its testsuite by default. I'm not sure why runtime/debug was not previously updated to 1.7. Doing that led me to fix some minor aspects of runtime.Stack and the C function runtime/debug.readGCStats. Reviewed-on: https://go-review.googlesource.com/31251 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241261 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-15 runtime: copy runtime package time code from Go 1.7ian
Fix handling of function values for -fgo-c-header to generate FuncVal*, not simply FuncVal. While we're here change runtime.nanotime to use clock_gettime with CLOCK_MONOTONIC, rather than gettimeofday. This is what the gc library does. It provides nanosecond precision and a monotonic clock. Reviewed-on: https://go-review.googlesource.com/31232 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241197 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-14 runtime: copy mprof code from Go 1.7 runtimeian
Also create a gccgo version of some of the traceback code in traceback_gccgo.go, replacing some code currently in C. This required modifying the compiler so that when compiling the runtime package a slice expression does not cause a local array variable to escape to the heap. Reviewed-on: https://go-review.googlesource.com/31230 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241189 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-14 runtime: just do file/line lookup in C, move Func to Goian
In order to port stack backtraces to Go, we need the ability to look up file/line information for PC values without allocating memory. This patch moves the handling of Func from C code to Go code, and simplifies the C code to just look up function/file/line/entry information for a PC. Reviewed-on: https://go-review.googlesource.com/31150 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241172 138bc75d-0d04-0410-961f-82ee72b054a4
2016-10-14 debug/elf: add sparc64 relocationsian
This is a backport of https://go-review.googlesource.com/30870. Reviewed-on: https://go-review.googlesource.com/30916 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241171 138bc75d-0d04-0410-961f-82ee72b054a4