Commit Graph

4 Commits

Author SHA1 Message Date
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
Ian Lance Taylor d8ccfadbf2 internal/bytealg: support systems that don't have memmem
Reviewed-on: https://go-review.googlesource.com/138839

From-SVN: r264798
2018-10-02 16:45:51 +00:00
Ian Lance Taylor f5ec13f15d internal/bytealg, internal/cpu, internal/poll: portability fixes
In internal/bytealg correct a +build tag to never build indexbyte_generic.go
    for the gofrontend, where we always use indexbyte_native.go.
    
    For internal/cpu let the Makefile define CacheLineSize using goarch.sh,
    rather than trying to enumerate all the possibilities in cpu_ARCH.go files.
    
    In internal/poll call the C fcntl function rather than using SYS_FCNTL.
    Change mksysinfo.sh to ensure that F_GETPIPE_SZ is always defined,
    and check that in internal/poll.
    
    Reviewed-on: https://go-review.googlesource.com/137256

From-SVN: r264572
2018-09-25 14:31:57 +00:00
Ian Lance Taylor dd931d9b48 libgo: update to Go 1.11
Reviewed-on: https://go-review.googlesource.com/136435

gotools/:
	* Makefile.am (mostlyclean-local): Run chmod on check-go-dir to
	make sure it is writable.
	(check-go-tools): Likewise.
	(check-vet): Copy internal/objabi to check-vet-dir.
	* Makefile.in: Rebuild.

From-SVN: r264546
2018-09-24 21:46:21 +00:00