From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 123477 invoked by alias); 10 May 2017 17:26:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 123435 invoked by uid 89); 10 May 2017 17:26:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_05,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=goc, courtesy, investigations, H*Ad:D*googlegroups.com X-HELO: mail-oi0-f43.google.com Received: from mail-oi0-f43.google.com (HELO mail-oi0-f43.google.com) (209.85.218.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 10 May 2017 17:26:17 +0000 Received: by mail-oi0-f43.google.com with SMTP id h4so2643215oib.3 for ; Wed, 10 May 2017 10:26:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=J/664ljx8d+JtwGjh0ifVIU6546gyKyq/RLX7nR+boo=; b=VQg/tHIykAY5IqVQnHUjRaf4cqqYxjp0FOhiigB2GAEMUn9+o4683kbNgtTSqwVH+h MjFf/wB1npOkDGnL4ukb5FWokmHHdPO64si2e96vMF2fJN/dXmjbl/pnoJOPzRaGQ+eD 0Rpymmk1XJxQ1rbTpgRtAMRX9i7vkVvsf65uqKwitAzK1matYHrcIdDHpKnTIgozKe4U 8611uKFDAS8F0hXdLN0PlCYyLtfw6O3PCrfP+ENj3uea2r+ZtCaB9YjXQ/orJ+AGjxzD NiRk3Q7H1v38HeS+9THN5OSdE1+qfNfuOjzsYucXkpNL5D52UaQhvuG5+fOEaoZD4WGi rJIg== X-Gm-Message-State: AODbwcAGIF4wgO9ivqHwgiGPHEUWg9foiKE2uWSfjb99SwbUnJw0Cbtj pSTvsuGCGVDYZhRCSuOsFp18LM0E/qxf X-Received: by 10.202.193.131 with SMTP id r125mr3116618oif.64.1494437176588; Wed, 10 May 2017 10:26:16 -0700 (PDT) MIME-Version: 1.0 Received: by 10.202.102.11 with HTTP; Wed, 10 May 2017 10:26:15 -0700 (PDT) From: Ian Lance Taylor Date: Wed, 10 May 2017 17:51:00 -0000 Message-ID: Subject: Go patches committed: merge recent changes to gofrontend To: gcc-patches , "gofrontend-dev@googlegroups.com" Content-Type: multipart/mixed; boundary=001a113dc54a0cfc82054f2ec5eb X-SW-Source: 2017-05/txt/msg00811.txt.bz2 --001a113dc54a0cfc82054f2ec5eb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 49454 I have committed a large patch to update the Go frontend and libgo to the recent changes in the gofrontend repository. I had postponed merging changes during the GCC 7 release process. I am now merging all the changes that were pending during that period. Although this is a merged patch, the changes can be seen individually in the gofrontend repo (https://go.googlesource.com/gofrontend). They are also listed below. This is a fairly significant patch that brings in the concurrent garbage collector used in the Go 1.8 runtime. This significantly reduces pauses due to garbage collection while running a Go program. This patch also brings in experimental support for AIX for gccgo, contributed by Matthieu Sarter and others at Atos Infog=C3=A9rance. The actual patch is too large for this e-mail patch, but I have attached all the changes to the gcc/go directory. Ian 2017-05-10 Than McIntosh * go-backend.c: Include "go-c.h". * go-gcc.cc (Gcc_backend::write_export_data): New method. 2017-05-10 Ian Lance Taylor * go-gcc.cc (Gcc_backend::Gcc_backend): Declare __builtin_prefetch. * Make-lang.in (GO_OBJS): Add go/wb.o. commit 884c9f2cafb3fc1decaca70f1817ae269e4c6889 Author: Than McIntosh Date: Mon Jan 23 15:07:07 2017 -0500 compiler: insert additional conversion for type desc ptr expr Change the method Type::type_descriptor_pointer to apply an additional type conversion to its result Bexpression, to avoid type clashes in the back end. The backend expression for a given type descriptor var is given a type of "_type", however the virtual calls that create the variable use types derived from _type, hence the need to force a conversion. Reviewed-on: https://go-review.googlesource.com/35506 commit 5f0647c71e3b29eddcd0eecc44e7ba44ae7fc8dd Author: Than McIntosh Date: Mon Jan 23 15:22:26 2017 -0500 compiler: insure tree integrity in Call_expression::set_result Depending on the back end, it can be problematic to reuse Bexpressions (passing the same Bexpression to more than one Backend call to create additional Bexpressions or Bstatements). The Call_expression::set_result method was reusing its Bexpression input in more than one tree context; the fix is to pass in an Expression instead and generate multiple Bexpression references to it within the method. Reviewed-on: https://go-review.googlesource.com/35505 commit 7a8e49870885af898c3c790275e513d1764a2828 Author: Ian Lance Taylor Date: Tue Jan 24 21:19:06 2017 -0800 runtime: copy more of the scheduler from the Go 1.8 runtime Copies mstart, newm, m0, g0, and friends. Reviewed-on: https://go-review.googlesource.com/35645 commit 3546e2f002d0277d805ec59c5403bc1d4eda4ed9 Author: Ian Lance Taylor Date: Thu Jan 26 19:47:37 2017 -0800 runtime: remove a few C functions that are no longer used Reviewed-on: https://go-review.googlesource.com/35849 commit a71b835254f6d3164a0e6beaf54f2b175d1a6a92 Author: Ian Lance Taylor Date: Thu Jan 26 16:51:16 2017 -0800 runtime: copy over more of the Go 1.8 scheduler In particular __go_go (aka newproc) and goexit[01]. Reviewed-on: https://go-review.googlesource.com/35847 commit c3ffff725adbe54d8283c373b6aa7dc95d6fc27f Author: Ian Lance Taylor Date: Fri Jan 27 16:58:20 2017 -0800 runtime: copy syscall handling from Go 1.8 runtime Entering a syscall still has to start in C, to save the registers. Fix entersyscallblock to save them more reliably. This copies over the tracing code for syscalls, which we previously weren't doing, and lets us turn on runtime/trace/check. Reviewed-on: https://go-review.googlesource.com/35912 commit d5b921de4a28b04000fc4c8dac7f529a4a624dfc Author: Ian Lance Taylor Date: Fri Jan 27 18:34:11 2017 -0800 runtime: copy SIGPROF handling from Go 1.8 runtime Also copy over Breakpoint. Fix Func.Name and Func.Entry to not crash on a nil Func. Reviewed-on: https://go-review.googlesource.com/35913 commit cc60235e55aef14b15c3d2114030245beb3adfef Author: Than McIntosh Date: Mon Feb 6 11:12:12 2017 -0500 compiler: convert go_write_export_data to Backend method. Convert the helper function 'go_write_export_data' into a Backend class method, to allow for an implementation of this function that needs to access backend state. Reviewed-on: https://go-review.googlesource.com/36357 commit e387439bfd24d5e142874b8e68e7039f74c744d7 Author: Than McIntosh Date: Wed Feb 8 11:13:46 2017 -0500 compiler: insert backend conversion in temporary statement init Insert an additional type conversion in Temporary_statement::do_get_bac= kend when assigning a Bexpression initializer to the temporary variable, to avoid potential clashes in the back end. This can come up when assigning something of concrete pointer-to-function type to a variable of generic pointer-to-function type. Reviewed-on: https://go-review.googlesource.com/36591 commit c5acf0ce09e61ff623847a35a99da465b8571609 Author: Matthieu Sarter Date: Wed Mar 1 17:57:53 2017 +0100 libgo: build tags for aix Build tags for the libgo source files required to build libgo on AIX. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37633 commit 67ed19616898ea18a101ec9325b82d028cd395d9 Author: Matthieu Sarter Date: Thu Mar 2 15:41:31 2017 +0100 libgo: handle AIX tag in match.sh and gotest Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37638 commit 83ea2d694c10b2dd83fc8620c43da13d20db754e Author: Matthieu Sarter Date: Wed Mar 1 17:48:16 2017 +0100 libgo: add AIX support in configure and Makefile - support for GOOS=3Daix - CFLAGS/GOCFLAGS/LDFLAGS for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37632 commit 35d577fe22ffa16a3ccaadf5dae9f6f425c8ec8c Author: Matthieu Sarter Date: Mon Mar 6 15:00:15 2017 +0100 runtime: adapt memory management to AIX mmap On AIX: * mmap does not allow to map an already mapped range, * mmap range start at 0x30000000 for 32 bits processes, * mmap range start at 0x70000000_00000000 for 64 bits processes Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37845 commit 4e49e56a5fd4072b4ca7fcefe4158d6885d9ee62 Author: Matthieu Sarter Date: Mon Mar 6 13:42:26 2017 +0100 runtime: add getproccount implementation for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37844 commit ff626470294237ac664127894826614edc46a3d0 Author: Matthieu Sarter Date: Mon Mar 6 17:31:21 2017 +0100 runtime: handle ERESTART errno with AIX's wait4 On AIX, wait4 may return with errno set to ERESTART, which causes unexepected behavior (for instance, go build may exit with the message "wait: resta= rt system call" after running a command, even if it was successfull). Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37846 commit 37daabbfc83d533b826ef9ab10e2dee7406e7198 Author: Matthieu Sarter Date: Mon Mar 6 11:02:58 2017 +0100 runtime: support for AIX's procfs tree On AIX, the process executable file is available under /proc//object/a.out Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37842 commit a0275c039d56acf4bf48151978c1a4ec5758cc2c Author: Ian Lance Taylor Date: Wed Mar 8 07:00:05 2017 -0800 libgo/Makefile.am: don't use nonportable \n or \t in sed expression The resulting zstdpktlist.go is less pretty, but it works. Reviewed-on: https://go-review.googlesource.com/37940 commit 29b190f76105aafa2b50b48249afdafecc97a4be Author: Matthieu Sarter Date: Thu Mar 9 16:02:34 2017 +0100 runtime: netpoll and semaphores for AIX semaphore implementation based on Solaris implementation in libgo/go/runtime/os_solaris.go netpoll is just a stub to avoid build failure on AIX. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37966 commit 55ca6d3f3cddf0ff9ccb074b2694da9fc54de7ec Author: Matthieu Sarter Date: Thu Mar 9 15:38:30 2017 +0100 libmain: ensure initfn is called when loading a go library AIX does not support .init_array. The alterative is to export the __go_init function and tell the linker it is an init function with the -Wl,-binitfini:__go_init option. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37965 commit 349a30d17d880ac8bc1a35e1a2ffee6d6e870ae9 Author: Matthieu Sarter Date: Fri Mar 10 11:15:08 2017 +0100 libgo: use an import list for missing symbols libgo depends on symbols provided by Go programs at runtime. On AIX, this requires either to build libgo with -Wl,-berok linker option and the programs with -Wl,-brtl, or to provide a list of imported symbols when building libgo. The second options seems preferable, to avoid requiring an additional option for every Go program. There are also some symbols that are specific to GNU ld and do not exist when linking with AIX ld (__data_start, __edata, __etext and __bss_start). Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37969 commit 91db0ea1ff068ca1d97b9c99612100ea5b96ddb2 Author: Matthieu Sarter Date: Wed Mar 8 15:34:45 2017 +0100 crypto/x509: add certificate files locations for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/37952 commit 92e521c854e91709b949548c47e267377850f26a Author: Ian Lance Taylor Date: Fri Mar 10 14:10:11 2017 -0800 compiler: fix check for pointer in Temporary_reference_expression The check for an unrepresentable pointer in Temporary_reference_expression::do_get_backend was incorrectly translated from C to Go in https://golang.org/cl/14346043. Fix the check to use points_to rather than has_pointer and deref. This should not make any difference in practice as either way the condition will only be true for a pointer to void, but points_to is correct and more efficient. Reviewed-on: https://go-review.googlesource.com/38009 commit 9a0b676e59e7171a630c48fdc3d4de6712bad0ca Author: Matthieu Sarter Date: Thu Mar 16 16:51:53 2017 +0100 libgo: add missing _arpcom struct to *sysinfo.go This struct is filtered due to having a field of type _in6_addr, but other types exported to *sysinfo.go are depending on it. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38251 commit 61262a757bdd3d9a595ab6a90f68c0c4ebed7bc1 Author: Matthieu Sarter Date: Thu Mar 16 18:27:46 2017 +0100 syscall: raw_ptrace stub for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38253 commit 8029632b50880fd9b5e39299c738b38e3386595f Author: Matthieu Sarter Date: Wed Mar 15 16:58:37 2017 +0100 libgo: adapt runtime.inc to AIX * Two AIX types are wrongfully exported to runtime.inc as their names make them look like a Go type. * The sigset go type conflicts with a system sigset type. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38192 commit 25f3a90d14bc268479369ecc0eada72791612f86 Author: Matthieu Sarter Date: Wed Mar 15 16:58:37 2017 +0100 libgo: update Makefile.in, accidentally omitted from last change Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38310 commit d52b4895616b66f93b460366527e74336829aaa5 Author: Matthieu Sarter Date: Thu Mar 16 18:39:26 2017 +0100 syscall: TIOCSCTTY does not exist on AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38254 commit ff1ec3847a4472008e5d53a98b6694b1e54ca322 Author: Matthieu Sarter Date: Thu Mar 16 18:07:34 2017 +0100 syscall: syscall does not exist on AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38252 commit c1ee60dabf0b243a0b0286215481a5d326c34596 Author: Matthieu Sarter Date: Fri Mar 17 17:18:18 2017 +0100 net: EAI_OVERFLOW does not exist on AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38266 commit ad4ad29aed9f70b14b39b488bfeb9ee745382ec4 Author: Matthieu Sarter Date: Fri Mar 17 17:23:56 2017 +0100 net: sockopt/sockoptip stubs for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38267 commit 5d7db2d7542fe7082f426d42f8c2ce14aad6df55 Author: Matthieu Sarter Date: Fri Mar 17 16:35:05 2017 +0100 os/user: add listgroups stub for AIX This is required to build os/user. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38263 commit 4e57a7973e9fa4cb5ab977c6d792e62a8f7c5795 Author: Matthieu Sarter Date: Wed Mar 22 11:11:30 2017 +0100 os: fix readdirnames for AIX Largefile implementation should be used on AIX. readdir64_r function returns 9 and sets result to NULL when reaching end of directory, so this return code should not always be considered as an error. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38359 commit b34036967d1ec57b25e3debe077439b4210a1d4a Author: Matthieu Sarter Date: Fri Mar 17 17:39:31 2017 +0100 libgo: adapt sigtab.go to AIX On AIX, _NSIG is not directly defined to its integer value in gen-sysinfo.go. The real value is _SIGMAX32+1 or _SIGMAX64+1, depending if we are building a 32bit ligbo or a 64bit libgo, so we need to read one of those constants to set nsig value in mksigtab.sh This change also ensures that all signal numbers from 0 to nsig-1 are referenced in sigtable. Reviewed-on: https://go-review.googlesource.com/38268 commit 20991c32671a183ec859b4f285df37fdd4634247 Author: Matthieu Sarter Date: Thu Mar 23 17:28:09 2017 +0100 syscall: missing import in socket_bsd.go Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38369 commit c34754bd9adf5496c4c26257eaa50793553c11e8 Author: Matthieu Sarter Date: Wed Mar 22 17:57:01 2017 +0100 sycall: WCOREDUMP macro is not defined on AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38363 commit 4f38813482227b12ea0ac6ac1b981ff9ef9853ef Author: Matthieu Sarter Date: Thu Mar 23 17:44:43 2017 +0100 libgo: additional build tags for AIX Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38510 commit d117ede6ff5a7083e9c40eba28a0f94f3535d773 Author: Matthieu Sarter Date: Thu Mar 23 17:48:46 2017 +0100 go/build: add AIX to "go build" command known OS Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38511 commit 7b0ddaa6a6a71f9eb1c374122d29775b13c2cac5 Author: Ian Lance Taylor Date: Thu Mar 23 09:57:01 2017 -0700 compiler: don't crash if imported package imports this one When building a test it's OK if test code imports a package that imports this one. The go tool is supposed to catch cases where this creates an impossible initialization order. The compiler already has code to permit this in Gogo::add_import_init_fn. This CL avoids a compiler crash on a similar case when writing out the export data. I have no test case for this. Basically it pushes a compiler crash into an error reported elsewhere. Problem was reported by Tony Reix. Reviewed-on: https://go-review.googlesource.com/38462 commit 925636975d075e3e3353823b09db3f933f23cb03 Author: Ian Lance Taylor Date: Wed Mar 29 14:14:18 2017 -0700 runtime: copy finalizer support from Go 1.8 runtime Reviewed-on: https://go-review.googlesource.com/38794 commit 1ccb22b96cb3b1011db0e427877d9ddecb577fa9 Author: Matthieu Sarter Date: Thu Mar 30 15:21:06 2017 +0200 runtime: initcontext and setcontext stubs for AIX Further investigations are required to understand the clobbering issue and implement a proper fix. Until then, those stubs are required to allow the build to complete. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38930 commit 27db481f369b54256063c72b911d22390c59199c Author: Matthieu Sarter Date: Wed Mar 29 18:07:25 2017 +0200 os: fix Readlink failure on AIX AIX readlink routine returns an error if the link is longer than the buffer, instead of truncating the link. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38700 commit c93babbf48eddd0bc34d4179ffb302dc60087299 Author: Matthieu Sarter Date: Wed Mar 29 17:26:35 2017 +0200 compiler: implement support for reading AIX big archives This is required to read go export from a Go library. Code courtesy of Damien Bergamini from Atos Infog=C3=A9rance. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38698 commit 930dd53482bdee3a9074850d168d0b9d7819c135 Author: Ian Lance Taylor Date: Thu Apr 6 18:50:11 2017 -0700 compiler: fix whether conversions are static initializers The compiler was incorrectly treating type conversions from string to int or vice-versa as static initializers. That doesn't work, as those conversions are implemented via a function call. This case may never actually arise but it seems like the right thing to= do. Reviewed-on: https://go-review.googlesource.com/39872 commit f02691e4195728dbf06f4dde0853c6bccc922183 Author: Ian Lance Taylor Date: Thu Apr 6 17:24:08 2017 -0700 compiler, runtime: don't let slices point past end of memory block When Go code uses a slice expression like [:len(str)] or [:cap(slice)], it's natural for the resulting pointer to point just past the end of the memory block. If the next memory block is not live, we now have a live pointer to a dead block, which will unnecessarily keep the block alive. That wastes space, and with the new Go 1.8 GC (not yet committed) will trigger an error when using GODEBUG=3Dgccheckmark=3D1. This changes the implementation of slice expressions to not move the pointer if the resulting string length or slice capacity is 0. When the length/capacity is zero, the pointer is never used anyhow. Reviewed-on: https://go-review.googlesource.com/39870 commit 17527c35b027e1afcc318faf5563909e1e9d44a6 Author: Ian Lance Taylor Date: Thu Apr 6 15:30:11 2017 -0700 compiler: emit write barriers The Go 1.8 concurrent GC requires optional write barriers for all assignments that may change pointer values in the heap or in a global variable. For details see https://blog.golang.org/go15gc. This changes the gofrontend code to emit write barriers as needed. This is in preparation for future changes. At the moment the write barriers will do nothing. They test runtime.writeBarrier.enabled, which will never be non-zero. They call simple functions which just do a move without doing any of the other operations required by the write barrier. Reviewed-on: https://go-review.googlesource.com/39852 commit c0b00f072bf34b2c288e1271ec8118b88c4f6f6f Author: Matthieu Sarter Date: Tue Apr 11 17:47:29 2017 +0200 libgo: allow building gox files from PIC objects libtool builds non-PIC objects in the same directory as .lo files and PIC objects in a .libs subdirectory. BUILDGOX rule uses the non-PIC objects to build the gox files, but on AIX only the PIC objects are built. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/40355 commit ea0f3da174c5503a209043f14ddda34871cfec52 Author: Ian Lance Taylor Date: Thu Apr 6 19:06:14 2017 -0700 compiler: add code to generate a ptrmask for a type The Go 1.8 garbage collector uses a ptrmask for all types below a certain size. A ptrmask is simply a bit vector with a single bit for each pointer-sized word in the value. The bit is 1 if the type has a pointer in that position, 0 if it does not. This change adds code to the compiler to generate a ptrmask. The code is not used by anything yet, it is just compiled. It will be used when we switch over to the Go 1.8 garbage collector. The new Array_type::int_length method, and the new memory_size methods, will also be used by other patches coming later. Reviewed-on: https://go-review.googlesource.com/39873 commit 3029e1df3be3614d196a03c15e50e68ff850aa4c Author: Ian Lance Taylor Date: Fri Apr 7 10:31:39 2017 -0700 compiler: add code to generate a gcprog for a type The Go 1.8 garbage collector uses a gcprog for all types above a certain size. A gcprog describes where the pointers are in the type, using a simple bytecode machine that supports repeating bits. The effect is to permit using much less space to describe arrays. The format is described in runtime/mbitmap.go in the docs for runGCProg. This is not yet added to the gofrontend, but can be seen in the gc sour= ces. This change adds code to the compiler to generate a gcprog. The code is not used by anything yet, it is just compiled. It will be used when we switch over to the Go 1.8 garbage collector. Reviewed-on: https://go-review.googlesource.com/39923 commit 8b01ef1e9176d20f4c9e667972fe031069a4d057 Author: Ian Lance Taylor Date: Thu Apr 13 07:00:35 2017 -0700 compiler: add ptrdata computations and expressions For the upcoming Go 1.8 GC we need to compute the "ptrdata" of a type: the number of bytes in the type that can contain pointers. For types that do not contain pointers this number is zero. For many types it is a number larger than zero but smaller than the total size of the type. The Go 1.8 GC uses this number to make loops looking for pointers run faster by not scanning the suffix of a value that can not contain a pointer. Unfortunately there are two subtly different definitions of ptrdata, and we need both. The first is the simple one: the prefix that can contain pointers. The second is the number of bytes described by the gcprog for the type. Recall that we describe the exact position of pointers in a type using either a ptrmask or a gcprog. The ptrmask is simpler, the gcprog uses less space. We use the gcprog for large types, currently defined as types that are more than 2048 bytes. When the Go 1.8 runtime expands a gcprog, it verifies that the gcprog describes exactly the same number of bytes as the ptrdata field in the type descriptor. If the last pointer-containing portion of a type is an array, and if the elements of the array have a ptrdata that is less than the size of the element type, then the simple definition of the ptrdata will not include the final non-pointer-containing bytes of the last element of the array. However, the gcprog will define the array using a repeat count, and will therefore include the full size of the last element of the array. So for a type that needs a gcprog, the ptrdata field in the type descriptor must be the size of the data described by the gcprog, and that is not necessarily the same as the simple ptrdata. It might seem that we can always use the gcprog version of the ptrdata calculation, since that is what will appear in a type descriptor, but it turns out that for global variables we always use a ptrmask, not a gcprog, even if the global variable is large. This is because gcprogs are handled by expanding them into a ptrmask at runtime, and for a global variable there is no natural place to put the ptrmask. Simpler to always use the ptrmask. That means that we need to describe the size of the ptrmask, and that means that we need an expression for the simple form of the ptrdata. This CL implements the ptrdata calculation. This code is not actually used yet. It will be used later when the Go 1.8 GC is committed. Reviewed-on: https://go-review.googlesource.com/40573 commit 7a37331303b572412179a08141f1dd35339d40c8 Author: Ian Lance Taylor Date: Fri Apr 14 06:55:48 2017 -0700 compiler: zero length arrays never contain pointers Reviewed-on: https://go-review.googlesource.com/40696 commit c242f0508a64d3d74a28d498cbaeda785ff76258 Author: Ian Lance Taylor Date: Fri Apr 14 07:26:54 2017 -0700 bytes: disable allocations test on gccgo It turns out that testing.AllocsPerRun has not been producing correct results with the current gccgo memory allocator. When we update to the Go 1.8 memory allocator, testing.AllocsPerRun will work again, and this test will fail due to lack of escape analysis. Reviewed-on: https://go-review.googlesource.com/40700 commit 0dc369f1d63376a36bfb0999a1b0377fd444bfab Author: Matthieu Sarter Date: Tue Apr 11 16:22:38 2017 +0200 os: alternative way to find executable path, using Args[0] AIX does not provide a proper way to find the original executable path from procfs, which contains just an hardlink. Executable path can be found using Args[0], Getcwd and $PATH. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/40353 commit f9bad1342569b338e3b2ea9f12ffc6d3d3fa3028 Author: Ian Lance Taylor Date: Fri Apr 14 08:01:19 2017 -0700 compiler: don't write struct with multiple sink fields to C header file When writing a struct to the C header file used by the C runtime code, a single sink field is fine: it will be called "_", which is valid C. There are structs with single sink fields that we want to write out, such as finblock. As it happens, though, the Go 1.8 runtime has a struct with two sink fields, gcControllerState, which will produce a C definition with two fields named "_", which will fail. Since we don't need to know that struct in C, rather than fix the general case, just punt if the struct has multiple sink fields. After the conversion to the Go 1.8 GC, we may be able to get rid of the C header file anyhow. I'm not sure yet. Reviewed-on: https://go-review.googlesource.com/40701 commit cfc28901a572aeb15b2f10a38f79eec04c64dfb2 Author: Ian Lance Taylor Date: Fri Apr 14 10:07:23 2017 -0700 runtime: disable allocations test on gccgo It turns out that testing.AllocsPerRun has not been producing correct results with the current gccgo memory allocator. When we update to the Go 1.8 memory allocator, testing.AllocsPerRun will work again, and these tests will fail due to lack of escape analysis. Reviewed-on: https://go-review.googlesource.com/40703 commit 36fedd76edaa48b9ec09709a70d9e4abaddf0caf Author: Ian Lance Taylor Date: Fri Apr 14 10:47:06 2017 -0700 runtime: remove unused size argument from hash/equal fns The size argument was removed from hash and equal functions in CL 34983. Somehow I missed removing them from three of the predefined functions. Reviewed-on: https://go-review.googlesource.com/40770 commit 90f6accb48d2e78cad8955b9292933f6ce3fe4c8 Author: Ian Lance Taylor Date: Fri Apr 14 13:23:05 2017 -0700 runtime: remove unused stack.go We're never going to use stack.go for gccgo. Although a build tag keeps it from being built, even having it around can be confusing. Remove it. Reviewed-on: https://go-review.googlesource.com/40774 commit befa71603fc66a214e01ac219f2bba36e19f136f Author: Ian Lance Taylor Date: Fri Apr 14 13:18:34 2017 -0700 runtime: build fastlog Take out the build tags which were preventing fastlog2 from being built. It's used by the upcoming Go 1.8 GC. Reviewed-on: https://go-review.googlesource.com/40773 commit b7e19e9be4ab4c3cd8f4c9506d79a8cd56bace40 Author: Ian Lance Taylor Date: Fri Apr 14 10:04:23 2017 -0700 runtime: add tests from Go 1.8 Some runtime package tests never made it into the gofrontend repo for some reason. Add them now. Reviewed-on: https://go-review.googlesource.com/40869 commit 1feef185aebd71bc2a09b9a04287461806096610 Author: Ian Lance Taylor Date: Mon Apr 17 16:26:11 2017 -0700 runtime: change mcall to take a Go function value For future work in bringing in the Go 1.8 GC, change the mcall function to take a Go function value, which means that mcall can take a closure rather than just a straight C function pointer. As part of this change move kickoff from C to Go, which we want to do anyhow so that we run the write barriers that it generates. Reviewed-on: https://go-review.googlesource.com/40935 commit c3db34f4efc2d610f74a01dd2ad7775f48889b29 Author: Matthieu Sarter Date: Tue Apr 11 16:11:26 2017 +0200 runtime: netpoll implementation for AIX Code courtesy of Damien Bergamini from Atos Infog=C3=A9rance. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/40352 commit f5634dff40e53ad9ce61afd67fd07334e3af9d1f Author: Ian Lance Taylor Date: Tue Apr 18 22:06:07 2017 -0700 runtime: move mstart from Go to C The assignments done in mstart must be done without write barriers, as mstart is running without an m or p. In the gc toolchain the equivalent code to intialize g and g->m is written in assembler; on GNU/Linux, it's in the clone function. Reviewed-on: https://go-review.googlesource.com/40989 commit 671d7c74592f4b6fe3665af279482ba0ea47ca2d Author: Ian Lance Taylor Date: Tue Apr 18 17:47:28 2017 -0700 compiler: varargs slices do not escape in runtime Also, don't try to allocate an empty slice on the stack, as it will confuse the GCC backend. Also add a few trivial style, code formatting, and debug output fixes. Updates golang/go#17431 Reviewed-on: https://go-review.googlesource.com/40983 commit 94699d25f31353bf03419eda56b15993a39f3275 Author: Ian Lance Taylor Date: Tue Apr 18 17:30:09 2017 -0700 compiler: add Ptrmask_symbol_expression Add an expression to evaluate to the ptrmask for a type. This will be used for global variables, which always use a ptrmask no matter how large they are. Reviewed-on: https://go-review.googlesource.com/40981 commit bfff1654eac5b9288fa6c431e66cba8c9da6a660 Author: Ian Lance Taylor Date: Mon Apr 17 10:51:16 2017 -0700 runtime: change g's in systemstack The systemstack function in the gc toolchain changes to a different g. This is often used to get more stack space; the gofrontend uses a different stack growth mechanism that does not require changing g's, so we've been running with a version of systemstack that keeps the same g. However, the garbage collector has various tests to verify that it is running on g0 rather than on a normal g. For simplicity, change the gofrontend version of systemstack to change to a different g just as the gc toolchain does. This permits us to uncomment some sanity checks in notetsleep. Doing that requires us to fix up a couple of places where C code calls {start,stop}TheWorldWithSema while not on g0. Note that this does slow down some code in the runtime package unnecessarily. It may be useful to find some places where the runtime calls systemstack only to get more stack space and change it to use some other function. That other function would act like systemstack in the gc toolchain but simply call the argument in the gofrontend. Reviewed-on: https://go-review.googlesource.com/40973 commit b2ccc7601ce71a7c5732154cf9b2eeea64681469 Author: Ian Lance Taylor Date: Wed Apr 19 10:36:12 2017 -0700 compiler, runtime: include ptrmask in GC roots Change the list of registered GC roots to include a ptrmask, and change the data structures to be easily used from Go code. The new ptrmask will be used by the Go 1.8 GC to only scan pointers. Tweak the current GC to use the new structures, but ignore the new ptrmask information for now. The new GC root data includes the size of the variable. The size is not currently used, but will be used later by the cgo checking code. Reviewed-on: https://go-review.googlesource.com/41075 commit 9e065149970bc180e4ca83bb99c74d9c4f43b47b Author: Ian Lance Taylor Date: Wed Apr 19 12:23:16 2017 -0700 compiler, runtime: don't pass size to __go_new There is no reason to pass the size to __go_new, as the type descriptor includes the size anyhow. This makes the function correspond to the Go 1.8 function runtime.newobject, which is what we will use when we update to the Go 1.8 memory allocator. Reviewed-on: https://go-review.googlesource.com/41080 commit c321de7b738c4a3387c1842919c9305acfa04c57 Author: Ian Lance Taylor Date: Wed Apr 19 13:13:56 2017 -0700 compiler, runtime, reflect: make type descriptors more like Go 1.8 Change the type descriptor structure to be more like the one in the Go 1.8 runtime. Specifically we add the ptrdata field, rename the gc field to gcdata and change the type to *byte, and rearrange a few of the fields. The structure is still not identical to the Go 1.8 structure--we don't use any of the tricks to reduce overall executable size--but it is more similar. For now we don't use the new ptrdata field, and the gcdata field is still the old format rather than the new Go 1.8 ptrmask/gcprog format. Reviewed-on: https://go-review.googlesource.com/41081 commit 7b70c52cddeebea9ebeac003f8c6aad59497e5f0 Author: Ian Lance Taylor Date: Wed Apr 19 14:54:29 2017 -0700 reflect: make sure to clear unusable hash/equal function Otherwise we wind up copying the one from the prototype, which is wrong. Also rewrite the hash/equal functions to look like the ones in Go 1.8, mainly a matter of changing names and using arrayAt. Reviewed-on: https://go-review.googlesource.com/41133 commit 84d26f467f7de8bdbb0d230458135fe1b6b2a99d Author: Ian Lance Taylor Date: Wed Apr 19 14:59:13 2017 -0700 runtime: remove duplicate declarations of SetFinalizer/KeepAlive These should have been removed in CL 38794. It's a bug that the compiler even permits these duplicate declarations. Reviewed-on: https://go-review.googlesource.com/41134 commit f85ff7e64c24031f6d0bd7c9c426b6176cb95160 Author: Ian Lance Taylor Date: Wed Apr 19 15:56:32 2017 -0700 runtime: don't crash if panicstring called with no m It's possible for runtime_panicstring to be called with no m if a signal handler, or scheduler innards, do something wrong. If that happens carry on with the panic rather than crashing. Reviewed-on: https://go-review.googlesource.com/41137 commit 5b362b04f642afb8b20715930416fc3b7d91bb12 Author: Than McIntosh Date: Fri Mar 31 14:35:48 2017 -0400 compiler: fix for expr sharing introduced by Order_eval::statement. When processing an expression statement with a top-level call that returns multiple results, Order_eval::statement can wind up creating a tree that has multiple references to the same call, which results in a confusing AST dump. Change the implementation to avoid introducing this unwanted sharing. Reviewed-on: https://go-review.googlesource.com/39210 commit b05b4260a68695bf9c9cc29e14ae86ca2699458a Author: Ian Lance Taylor Date: Wed Apr 19 16:00:28 2017 -0700 runtime: restore correct m in gtraceback If gtraceback is used to get a stack trace of a g running in the same m, as can happen if we collect a stack trace from a g0, then restore the old m value, don't clear it. Reviewed-on: https://go-review.googlesource.com/41138 commit ca8bbf4dfac19b3f4f7ce21a688b96a418c75031 Author: Ian Lance Taylor Date: Wed Apr 19 16:03:24 2017 -0700 runtime: set startpc field when starting a new goroutine This puts the right value in a trace--previously it was always zero. Reviewed-on: https://go-review.googlesource.com/41139 commit ca8bbf4dfac19b3f4f7ce21a688b96a418c75031 Author: Ian Lance Taylor Date: Wed Apr 19 16:03:24 2017 -0700 runtime: set startpc field when starting a new goroutine This puts the right value in a trace--previously it was always zero. Reviewed-on: https://go-review.googlesource.com/41139 commit 887690dce42d7bf8f711f8ea082e4928fb70f2a5 Author: Ian Lance Taylor Date: Wed Apr 19 17:06:11 2017 -0700 runtime: add prefetch functions The Go 1.8 GC uses prefetch functions. Add versions for gccgo that call __builtin_prefetch. Uncomment the test for them in testAtomic64. Don't force the check function to return early, as now taking the address of a local variable in the runtime package does not force it onto the heap. Reviewed-on: https://go-review.googlesource.com/41144 commit 4269db69f9184e5a45c54aaee7352425a1f88bff Author: Ian Lance Taylor Date: Wed Apr 19 17:55:21 2017 -0700 runtime: split up ticks to get correct alignment On 32-bit x86 a uint64 variable by itself is aligned to an 8-byte bound= ary. A uint64 field in a struct is aligned to a 4-byte boundary. The runtime.ticks variable has a uint64 field that must be aligned to an 8-byte boundary. Rather than rely on luck, split up the struct into separate vars so that the required alignment happens reliably. It would be much nicer if issue golang/go#19057 were fixed somehow, but that is for another day. Reviewed-on: https://go-review.googlesource.com/41143 commit 66926cabdbdbf3431b4f172f7756e195c1c6c513 Author: Matthieu Sarter Date: Thu Apr 20 17:15:38 2017 +0200 libgo: fix bad value for O_CLOEXEC on AIX 7.1 On AIX 7.1, O_CLOEXEC is defined as 0x0000001000000000, which creates an integer constant overflow error when building libgo. This affects only 7.1, O_CLOEXEC is not defined on 6.1 (and defaults to O in sysinfo.go) and is defined as 0x00800000 on AIX 7.2. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/41214 commit af288ff10aeafc47651f5def327ed56425d5be19 Author: Ian Lance Taylor Date: Thu Apr 20 17:15:02 2017 -0700 runtime: preserve stack context in tracebackothers The tracebackothers function works by saving the current stack context in the goroutine's context field and then calling gogo to switch to a new goroutine. The new goroutine will collect its own stack trace and then call gogo to switch back to the original goroutine. This works fine, but if the original goroutine was called by mcall then the contents of its context field are needed to return from the mcall. Fix this by saving the stack context across the calls to the other goroutines. Reviewed-on: https://go-review.googlesource.com/41293 commit 43101e5956e793f1b4de05c15d7738c785e927df Author: Matthieu Sarter Date: Fri Apr 21 10:58:52 2017 +0200 os/user: use _posix_* libc functions libc getpwnam_r function has a different signature, we must use _posix_getpwnam_r instead (by default, the pwd.h system include file defines getpwnam_r as a static function calling _posix_getpwnam_r, so a C program calling getpwnam_r will indeed reference the _posix_getpwnam_r symbol). Idem for getpwuid_r, getgrnam_r and getgrgid_r. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/41334 commit 71e1fec4d2a536591ea6657a06916a17b5127071 Author: Ian Lance Taylor Date: Wed Apr 19 21:24:48 2017 -0700 runtime: don't use pointers in g_ucontext_t or stackcontext The g_ucontext_t type holds registers saved for a goroutine. We have to scan it for pointers, but since registers don't necessarily hold pointers we have to scan it conservatively. That means that it should not have a pointer type, since the GC will always scan pointers. Instead it needs special treatment to be scanned conservatively. The current GC doesn't care when a pointer type holds a non-pointer, but the Go 1.8 GC does. For the current GC this means we have to explicitly scan the g_ucontext_t values in a G. While we're at it change stackcontext to be uintptr too. The entries in stackcontext never hold pointers that the Go GC cares about. Reviewed-on: https://go-review.googlesource.com/41270 commit eab2960aee91d3e3a6baa5b1bce01262d24c714f Author: Ian Lance Taylor Date: Thu Apr 20 17:08:19 2017 -0700 runtime/internal/sys: define Goexperiment The gc toolchain defines Goexperiment based on the environment variable GOEXPERIMENT when the toolchain is built. We just always set Goexperiment to the empty string. Reviewed-on: https://go-review.googlesource.com/41292 commit be4a751943265c0637da859d15a4faf162f5c478 Author: Matthieu Sarter Date: Thu Apr 20 14:04:35 2017 +0200 net: sockopt implementation for AIX This is a copy of the Linux implementation, it allows to run some simple client/server applications on AIX, while the current sockopt stubs don't. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/41213 commit 46a669c4ca5b80fd6f6a0a42095804d9f704611d Author: Matthieu Sarter Date: Wed Mar 29 17:55:06 2017 +0200 math: fix sign for atan/expm1/log1p(-0) AIX libc returns +0 for atan(-0), expm1(-0) and log1p(-0), while matching Go functions must return -0. Code courtesy of Tony Reix. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/38699 commit 53b0e809130038a46f0a3d2870e3905f44ab888d Author: Matthieu Sarter Date: Wed Apr 26 17:29:22 2017 +0200 runtime: fix context clobbering on AIX On AIX 64-bits, r13 is a pointer to thread data. setcontext() overwrites r13 with the value saved by getcontext(). So, when a goroutine is scheduled on a new thread, r13 will point to the old thread data after calling setcontext(). Code courtesy of Damien Bergamini. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/41854 commit f8d5ebd71c71e6e777200530d8204b92619157f8 Author: Matthieu Sarter Date: Wed Apr 26 18:01:19 2017 +0200 runtime: fix wrong time calculation in semasleep tv_nsec is added twice when calculating the sleep end time. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/41855 commit ef56097f4ea848d48fbf61eba1c757fe7fce99d3 Author: Matthieu Sarter Date: Fri Apr 28 10:27:32 2017 +0200 libgo: pass $(NM) value when running benchmarks On AIX, we need to use "nm -B" instead of "nm", to have the epxected output format, so the configured $(NM) value from the Makefile should be exported before running gotest, which defaults to "nm" if $NM is not set. Issue golang/go#19200 Reviewed-on: https://go-review.googlesource.com/42051 commit 0fb550083ae474fb964435927b899ec8e4b62771 Author: Ian Lance Taylor Date: Wed Nov 16 21:12:53 2016 -0800 runtime: copy garbage collector from Go 1.8 runtime This giant patch replaces the old Go 1.4 memory allocator and garbage collector with the new Go 1.8 code. The memory allocator is fairly similar, though now written in Go rather than C. The garbage collector is completely different. It now uses ptrmask and gcprog information, which requires changes in the compiler and the reflect package as well as the runtime. And, of course, the garbage collector now runs concurrently with program execution. In the gc toolchain the garbage collector is strict and precise at all levels. In the gofrontend we do not have stack maps, so stacks, and register values, are collected conservatively. That means that an old, no longer used, pointer on a stack or in a register can cause a memory object to live longer than it should. That in turns means that we must disable some checks for invalid pointers in the garbage collection code. Not only can we get an invalid pointer on the stack; the concurrent nature of the collector means that we can in effect resurrect a block that was already unmarked but that the collector had not yet gotten around to freeing, and that block can in turn point to other blocks that the collector had managed to already free. So we must disable pointer checks in general. In effect we are relying on the fact that the strict pointer checks in the gc toolchain ensure that the garbage collector is correct, and we just assume that it is correct for the gofrontend since we are using the same code. Reviewed-on: https://go-review.googlesource.com/41307 commit a95078d501175240d095500a8c5fbfb21bec65cb Author: Ian Lance Taylor Date: Mon Apr 24 16:33:47 2017 -0700 libgo/Makefile: clean more files Fix up the mostlyclean, clean, and distclean targets to better follow https://www.gnu.org/prep/standards/html_node/Standard-Targets.html. Reviewed-on: https://go-review.googlesource.com/41625 commit 5956bf1055451cf4239cdfeca259c23b1ded54d8 Author: Ian Lance Taylor Date: Mon May 8 13:35:11 2017 -0700 libgo: delete goc2c The last .goc file has been removed, so remove goc2c. The goc2c program was my first contribution to the gc repository that was more than 100 lines: https://github.com/golang/go/commit/2b57a1124e87b0dc8bc1ff6899297b4d7d6= e74f2 The program was used in gc for a few years under various guises but was finally removed in https://golang.org/cl/132680043. Now we can remove it from gofrontend as well. Reviewed-on: https://go-review.googlesource.com/42911 commit a222e35d041de0cd42506b61c93b8209e07702b9 Author: Than McIntosh Date: Tue May 9 10:33:10 2017 -0400 compiler: set "need_init_fn" when adding gc root Variables that back slice initializers in certain cases have to be added to the gc roots list, since they can be modified at runtime. The code that was doing this addition did not update the flag that tracks whether the package being compiled needs an initializer function, which resulted in the call in question being left out of the final generated code in certain cases. Fix is to change Gogo::add_gc_root() to update the "needs init" flag. Reviewed-on: https://go-review.googlesource.com/43030 commit 822ab419bf7d1c705cdce1c12133e7a11f56be2e Author: Than McIntosh Date: Tue May 9 11:36:51 2017 -0400 compiler: fix variable context nit in write barrier generation Update the write barrier generation code to insure that the "lvalue context" tag on the space var expression is set only in the case where the expr feeds directly into an assignment. This is somewhat counter-intuitive, but needed in the case where the backend looks at context tags. Reviewed-on: https://go-review.googlesource.com/43031 --001a113dc54a0cfc82054f2ec5eb Content-Type: application/x-bzip2; name="patch.txt.bz2" Content-Disposition: attachment; filename="patch.txt.bz2" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j2j96eky0 Content-length: 36104 QlpoOTFBWSZTWa2ua9IAXaJ/gH/z10V//////////v////9gkvwAd5uD0D5t cdHe14dB5je7296kTuoACgaAAO92873HlhA1VVJ5zDIzPd6pVBoAB10fXqR0 AAoANsAKhZsaBvZp3zENrqclnUHV6wAa0KFUkVhvYXnh0AAeB3rayxe9qgTd oKazlUBKoKlU9z1s3e9u9uToQHKVS7ve6edzQ4FBXtkNnKuq+8ennrjud8m6 a9pvO48949Z6o49rukS7NXbcu3TtjSVYJs0tvTqi4svFs8iqp7nu85V67jz1 bNee5x5vTXO948t13r2slDbStMZW2rs5B1WtsYOrq12Q0xbWG2BtqbUzWbbt 3MqZ52Lo03b0PI86wd1hdtd2KO0yZ25rXTObnMHm1O0291u6zaqFc8O2lxLz 3XvPKuVYUrK8A9c9cR73uuttk0Xbuw0pWTJVWK7Pd5zbdhvNpes6sJTRATQE BBACNExPUnk01TwhtJqZNTynpqZP1NNQxDRkbRHqMGCEQQiIaTCp+pPFPap6 nqHqHlA9IDQGjQAHqAAA0ADVPeqhJ6jQAAAANAAGQ0AAaPUGgAeoAAAEJSQg gTSehNNNAJqb1U/VHgU8mNFNMnlPU9QNA9T1PUzUHqGIZACJEQRTxBT0wgU2 k9VPbVP0lGxkm1NTbQNInmqYENM1NANAAxBEiIQJoNI1TwMpkyjTZTFQ9pTZ qJiHqeozUAAA0AAPKeYAfQgFA0iAkiSrSBQgwkorMKAEkINIFUCFCkBKUNIs ogH5MH5tWY2sjiTGxtoLBYikxEUys6iTVJxKObbhGczRRti1yAOXHm4mcBy0 CRPNkKOS7Z5AaI2Q5I7Z5KcjZOElGyTxaDBwxSapA3DBSHHYC4YNsc5uFY5w Wg4n9n98fy/3aqK/zxrlouYN1sXfwfiwh5SXm4OpSIdJMwbHA2F3IgzYMZvu 6M9Y2OmwmOEHOCc4NISXoyUhkofAiiF5tM+Yn85z9j0TVOe+siNjur8Wk0HW 4+DnjrV/+pXo7K4xTSEINEGoHnm0WxiD6K8ZnT+3z65DSHGOjvA8IpegSSJG SEJwquZ8bnCqgomqWLbFKYwVqMgTzd6xNyj29SCVO3Tn0kmd5tqmD/hH7IZj dCTF5MbpHN8/N2aX9WcKdntJtxNHV48kt6ypPlEKElChCSkuVCFJ5ObqEE3d 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 rTJ2YMkyTMe/7yc0C268kI6tBobxDIh5D0NDN84IeTqHhLKYjMgR/OlKt5l9 vqW/hSv5rWY6fGjM2GD+lJMcILDmB6aQ9XjQhRMwZIY+vjgDVMm/0WkMfrG5 eLWS8kdxb1lp4x4pu1XWboXk0Cazu3YVNM+Ltc0dYp+GPf5FWJ1PHrXj29Px r15GCDlYvMUcUo/eeVaNIUznz4RS9/dDihMoOUmsfQ+dKxR7PEeG0NWd82Cr dxOA7J2EwiEQwYGqXrsXrgedMgRPV/QwB6EzJCQCTbaS8lbE8KRkgaNrbyoy NubEo5m3yGZr6N9TJcIHUmZgrr4cZlSWqDVFeE+rN0pqzsW6crNsu4wKFzzf yWkFHyJMz7/Y5upQe5ycya3ORoDs3Lj484Sya6yk7bHDy9l2sdSuni/ox+Qz Ji0bPROOzWWaDZYn4KLjCdX5ynOwDWEzDDnMsOslPJ41c1i7wzrO4viuJPjs uS/mpEiJNdVeUUGyYgfLHp+5SpujhgPsznKW3idDVqmasQ9bSaKzbtHozCSF 5WHOY9rvkdC3IQaaV54mTpq8g2Obta3ufQpPuLrLfHQz1a5VEsmLb6NBBBoI Rka7+7NtJuHKZxcmZep+P3j67mZnbrKu1KBOuBCAkc5e3JNIcDnTvmnZtMs1 A3JBzzkmTYQfNdy++XgT54Y0ItvIq8BunR1rXYofZ8iXmTPVeXg+wfMbBE18 1fb5t1zxBVT82RH+St4tZq7++/KGlXPZ96qZHsloIzk46OWvNbXzrU5nwq0N kWiFXeCUXDdRNNnpOkTJxF6SntG513vVKd+teXbO1d4i2du+PUu08mpIrDtq kmMtQon8vv9m7gAAAAAAAAAAAAAAABQnkbXfJ05lzikyaz7UjqKYpd3+fJmY /iBDeH0QNmeaidAiaPXCQIwzVA1CedrBpxnu2DewuDejo8TynEpOZWeiZR4M SSabdybFAPegMVOVnwvhwnh6+7w2xfvHQYdTjbTNdoLcRSQSRZEJJEYRV8bx nJvJwjv9tOJg6VebaqeRajLoqWmdlxM4WFI5lqSaX7ukyIqPp7Xt6v+OUris +Uu5Od1edTLNWiRwKFPbKgV7Py8a4K1O9GHsxfzRP6qEqjeCR4J6CuIIkOaW pSe7YDKZvgefzcWPgh3+wiJzTjaiZkInosgnIWGyUIJIgBCAQ2ScAWHblrpb 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 --001a113dc54a0cfc82054f2ec5eb--