diff options
author | Clément Chigot <clement.chigot@atos.net> | 2020-10-07 15:47:45 +0200 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2020-10-13 17:54:37 -0700 |
commit | 72b38338228b3e90879828c0bb059603f683d98b (patch) | |
tree | 153cc65f70946620a982b9c61a2971e164e599e2 /gcc/go | |
parent | bdd74cc20ca22dd4aa19938d0494fcdd37cc0418 (diff) | |
download | gcc-72b38338228b3e90879828c0bb059603f683d98b.zip gcc-72b38338228b3e90879828c0bb059603f683d98b.tar.gz gcc-72b38338228b3e90879828c0bb059603f683d98b.tar.bz2 |
reflect: ensure uniqueness of type descriptors on AIX.
On AIX, duplication of type descriptors can occur if one is
declared in the libgo and one in the Go program being compiled.
The AIX linker isn't able to merge them together as Linux one does.
One solution is to always load libgo first but that needs a huge mechanism in
gcc core. Thus, this patch ensures that the duplication isn't visible
for the end user.
In reflect and internal/reflectlite, the comparison of rtypes is made on their
name and not only on their addresses.
In reflect, toType() function is using a canonicalization map to force rtypes
having the same rtype.String() to return the same Type. This can't be made in
internal/reflectlite as it needs sync package. But, for now, it doesn't matter
as internal/reflectlite is not widely used.
Fixes golang/go#39276
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/260158
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 930339e..8f71939 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -2563706e4ead80d6906d66ae23c8915c360583ad +fef8afc1876f4a1d5e9a8fd54c21bf5917966e10 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. |