gcc/libgo
Ian Lance Taylor 34489eb2af compiler: improve name mangling for packpaths
The current implementation of Gogo::pkgpath_for_symbol was written in
    a way that allowed two distinct package paths to map to the same
    symbol, which could cause collisions at link- time or compile-time.
    
    Switch to a better mangling scheme to insure that we get a unique
    packagepath symbol for each package. In the new scheme instead of having
    separate mangling schemes for identifiers and package paths, the
    main identifier mangler ("go_encode_id") now handles mangling of
    both packagepath characters and identifier characters.
    
    The new mangling scheme is more intrusive: "foo/bar.Baz" is mangled as
    "foo..z2fbar.Baz" instead of "foo_bar.Baz". To mitigate this, this
    patch also adds a demangling capability so that function names
    returned from runtime.CallersFrames are converted back to their
    original unmangled form.
    
    Changing the pkgpath_for_symbol scheme requires updating a number of
    //go:linkname directives and C "__asm__" directives to match the new
    scheme, as well as updating the 'gotest' driver (which makes
    assumptions about the correct mapping from pkgpath symbol to package
    name).
    
    Fixes golang/go#27534.
    
    Reviewed-on: https://go-review.googlesource.com/c/135455

From-SVN: r265510
2018-10-25 22:18:08 +00:00
..
config
go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
misc/cgo libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
runtime runtime: add arm64 version of AES hash code 2018-10-01 20:14:29 +00:00
testsuite compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
aclocal.m4
check-packages.txt libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
config.h.in internal/bytealg: support systems that don't have memmem 2018-10-02 16:45:51 +00:00
configure internal/bytealg: support systems that don't have memmem 2018-10-02 16:45:51 +00:00
configure.ac internal/bytealg: support systems that don't have memmem 2018-10-02 16:45:51 +00:00
goarch.sh libgo: support x32 as GOARCH=amd64p32 GOOS=linux 2018-10-01 20:17:11 +00:00
godeps.sh
gotool-packages.txt libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
libgo-packages.txt libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
libgo.imp
LICENSE
Makefile.am internal/bytealg, internal/cpu, internal/poll: portability fixes 2018-09-25 14:31:57 +00:00
Makefile.in internal/bytealg, internal/cpu, internal/poll: portability fixes 2018-09-25 14:31:57 +00:00
match.sh libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
MERGE libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
merge.sh libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
mkrsysinfo.sh
mkruntimeinc.sh
mksigtab.sh
mksysinfo.sh syscall: don't assume we have a GETEUID system call 2018-09-26 15:17:30 +00:00
mvifdiff.sh
PATENTS
README
README.gcc
sysinfo.c syscall: remove Ustat 2018-06-22 14:25:52 +00:00
VERSION libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00

See ../README.

This is the runtime support library for the Go programming language.
This library is intended for use with the Go frontend.

This library should not be stripped when it is installed.  Go code
relies on being able to look up file/line information, which comes
from the debugging info using the libbacktrace library.

The library has only been tested on GNU/Linux using glibc, and on
Solaris.  It should not be difficult to port to other operating
systems.

Directories:

go
  A copy of the Go library from http://golang.org/, with several
  changes for gccgo.

runtime
  Runtime functions, written in C, which are called directly by the
  compiler or by the library.

Contributing
============

To contribute patches to the files in this directory, please see
http://golang.org/doc/gccgo_contribute.html .

The master copy of these files is hosted at
http://code.google.com/p/gofrontend .  Changes to these files require
signing a Google contributor license agreement.  If you are the
copyright holder, you will need to agree to the individual contributor
license agreement at
http://code.google.com/legal/individual-cla-v1.0.html.  This agreement
can be completed online.

If your organization is the copyright holder, the organization will
need to agree to the corporate contributor license agreement at
http://code.google.com/legal/corporate-cla-v1.0.html.

If the copyright holder for your code has already completed the
agreement in connection with another Google open source project, it
does not need to be completed again.