[dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch

Semi-regular merge from tip into ssa branch

Change-Id: Ida553b5c504058347c0bdcb1a987727bdcea456b
This commit is contained in:
Keith Randall 2015-07-30 12:22:02 -07:00
commit 359747da15
493 changed files with 13243 additions and 21889 deletions

87
AUTHORS
View File

@ -8,12 +8,15 @@
# Please keep the list sorted.
A Medium Corporation
Aamir Khan <syst3m.w0rm@gmail.com>
Aaron France <aaron.l.france@gmail.com>
Abhinav Gupta <abhinav.g90@gmail.com>
Adrian Nos <nos.adrian@gmail.com>
Adrian O'Grady <elpollouk@gmail.com>
Adrien Bustany <adrien-xx-google@bustany.org>
Ahmed Waheed Moanes <oneofone@gmail.com>
Ainar Garipov <gugl.zadolbal@gmail.com>
Akshat Kumar <seed@mail.nanosouffle.net>
Alan Shreve <alan@inconshreveable.com>
Albert Strasheim <fullung@gmail.com>
@ -23,21 +26,29 @@ Aleksandar Dezelin <dezelin@gmail.com>
Alex A Skinner <alex@lx.lc>
Alex Brainman <alex.brainman@gmail.com>
Alex Jin <toalexjin@gmail.com>
Alex Plugaru <alex@plugaru.org> <alexandru.plugaru@gmail.com>
Alex Schroeder <alex@gnu.org>
Alex Sergeyev <abc@alexsergeyev.com>
Alexander Larsson <alexander.larsson@gmail.com>
Alexander Morozov <lk4d4math@gmail.com>
Alexander Orlov <alexander.orlov@loxal.net>
Alexander Reece <awreece@gmail.com>
Alexander Surma <surma@surmair.de>
Alexander Zhavnerchik <alex.vizor@gmail.com>
Alexander Zolotov <goldifit@gmail.com>
Alexandre Cesaro <alexandre.cesaro@gmail.com>
Alexandre Normand <alexandre.normand@gmail.com>
Alexei Sholik <alcosholik@gmail.com>
Alexey Borzenkov <snaury@gmail.com>
Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
Amir Mohammad Saied <amir@gluegadget.com>
Amrut Joshi <amrut.joshi@gmail.com>
Andrei Korzhevskii <a.korzhevskiy@gmail.com>
Andrei Vieru <euvieru@gmail.com>
Andrew Balholm <andybalholm@gmail.com>
Andrew Bonventre <andybons@chromium.org>
Andrew Bursavich <abursavich@gmail.com>
Andrew Ekstedt <andrew.ekstedt@gmail.com>
Andrew Harding <andrew@spacemonkey.com>
Andrew Lutomirski <andy@luto.us>
Andrew Pritchard <awpritchard@gmail.com>
@ -45,7 +56,9 @@ Andrew Radev <andrey.radev@gmail.com>
Andrew Skiba <skibaa@gmail.com>
Andrew Szeto <andrew@jabagawee.com>
Andrew Wilkins <axwalk@gmail.com>
Andrew Williams <williams.andrew@gmail.com>
Andrey Mirtchovski <mirtchovski@gmail.com>
Andrey Petrov <andrey.petrov@shazow.net>
Andriy Lytvynov <lytvynov.a.v@gmail.com>
Andy Davis <andy@bigandian.com>
Anfernee Yongkun Gui <anfernee.gui@gmail.com>
@ -56,12 +69,16 @@ Anthony Martin <ality@pbrane.org>
Anthony Starks <ajstarks@gmail.com>
Apisak Darakananda <pongad@gmail.com>
Aram Hăvărneanu <aram@mgk.ro>
Areski Belaid <areski@gmail.com>
Arnaud Ysmal <arnaud.ysmal@gmail.com>
Arne Hormann <arnehormann@gmail.com>
Aron Nopanen <aron.nopanen@gmail.com>
Arvindh Rajesh Tamilmani <art@a-30.net>
Ato Araki <ato.araki@gmail.com>
Aulus Egnatius Varialus <varialus@gmail.com>
awaw fumin <awawfumin@gmail.com>
Aymerick Jéhanne <aymerick@jehanne.org>
Ben Burkert <ben@benburkert.com>
Ben Olive <sionide21@gmail.com>
Benjamin Black <b@b3k.us>
Benny Siegert <bsiegert@gmail.com>
@ -70,17 +87,22 @@ Berengar Lehr <berengar.lehr@gmx.de>
Billie Harold Cleek <bhcleek@gmail.com>
Bjorn Tillenius <bjorn@tillenius.me>
Bjorn Tipling <bjorn.tipling@gmail.com>
Blake Gentry <blakesgentry@gmail.com>
Blake Mizerany <blake.mizerany@gmail.com>
Bobby Powers <bobbypowers@gmail.com>
Brendan Daniel Tracey <tracey.brendan@gmail.com>
Brett Cannon <bcannon@gmail.com>
Brian Dellisanti <briandellisanti@gmail.com>
Brian G. Merrell <bgmerrell@gmail.com>
Brian Gitonga Marete <marete@toshnix.com>
Brian Gitonga Marete <marete@toshnix.com> <bgmarete@gmail.com>
Brian Ketelsen <bketelsen@gmail.com>
Brian Smith <ohohvi@gmail.com>
Bryan Ford <brynosaurus@gmail.com>
Caine Tighe <arctanofyourface@gmail.com>
Caleb Spare <cespare@gmail.com>
Carl Chatfield <carlchatfield@gmail.com>
Carlos Castillo <cookieo9@gmail.com>
Carlos Cirello <uldericofilho@gmail.com>
Case Nelson <case.nelson@gmail.com>
Casey Marshall <casey.marshall@gmail.com>
Cezar Sá Espinola <cezarsa@gmail.com>
@ -91,6 +113,7 @@ Chris Dollin <ehog.hedge@gmail.com>
Chris Farmiloe <chrisfarms@gmail.com>
Chris Howey <howeyc@gmail.com>
Chris Jones <chris@cjones.org>
Chris Kastorff <encryptio@gmail.com>
Chris Lennert <calennert@gmail.com>
Chris McGee <sirnewton_01@yahoo.ca> <newton688@gmail.com>
Christian Himpel <chressie@googlemail.com>
@ -98,10 +121,13 @@ Christine Hansmann <chhansmann@gmail.com>
Christoffer Buchholz <christoffer.buchholz@gmail.com>
Christoph Hack <christoph@tux21b.org>
Christopher Cahoon <chris.cahoon@gmail.com>
Christopher Guiney <chris@guiney.net>
Christopher Nielsen <m4dh4tt3r@gmail.com>
Christopher Redden <christopher.redden@gmail.com>
Christopher Wedgwood <cw@f00f.org>
Clement Skau <clementskau@gmail.com>
CloudFlare Inc.
Colin Kennedy <moshen.colin@gmail.com>
Conrad Meyer <cemeyer@cs.washington.edu>
Corey Thomasson <cthom.lists@gmail.com>
Cristian Staretu <unclejacksons@gmail.com>
@ -125,21 +151,26 @@ David Jakob Fritz <david.jakob.fritz@gmail.com>
David Leon Gil <coruus@gmail.com>
David Thomas <davidthomas426@gmail.com>
David Titarenco <david.titarenco@gmail.com>
Davies Liu <davies.liu@gmail.com>
Dean Prichard <dean.prichard@gmail.com>
Denis Brandolini <denis.brandolini@gmail.com>
Derek Buitenhuis <derek.buitenhuis@gmail.com>
Derek Parker <parkerderek86@gmail.com>
Devon H. O'Dell <devon.odell@gmail.com>
Dhiru Kholia <dhiru.kholia@gmail.com>
Didier Spezia <didier.06@gmail.com>
Dimitri Tcaciuc <dtcaciuc@gmail.com>
Dmitri Shuralyov <shurcooL@gmail.com>
Dmitriy Shelenin <deemok@googlemail.com> <deemok@gmail.com>
Dmitry Chestnykh <dchest@gmail.com>
Dmitry Savintsev <dsavints@gmail.com>
Dominik Honnef <dominik.honnef@gmail.com>
Donovan Hide <donovanhide@gmail.com>
Dropbox, Inc.
Duncan Holm <mail@frou.org>
Dustin Sallings <dsallings@gmail.com>
Dustin Shields-Cloues <dcloues@gmail.com>
Dvir Volk <dvir@everything.me> <dvirsky@gmail.com>
Eden Li <eden.li@gmail.com>
Egon Elbre <egonelbre@gmail.com>
Ehren Kret <ehren.kret@gmail.com>
@ -150,9 +181,11 @@ Eoghan Sherry <ejsherry@gmail.com>
Eric Clark <zerohp@gmail.com>
Eric Milliken <emilliken@gmail.com>
Eric Roshan-Eisner <eric.d.eisner@gmail.com>
Erik Aigner <aigner.erik@gmail.com>
Erik St. Martin <alakriti@gmail.com>
Erik Westrup <erik.westrup@gmail.com>
Esko Luontola <esko.luontola@gmail.com>
Evan Phoenix <evan@phx.io>
Evan Shaw <chickencha@gmail.com>
Ewan Chou <coocood@gmail.com>
Fabrizio Milo <mistobaan@gmail.com>
@ -164,6 +197,7 @@ Felix Geisendörfer <haimuiba@gmail.com>
Firmansyah Adiputra <frm.adiputra@gmail.com>
Florian Uekermann <florian@uekermann-online.de>
Florian Weimer <fw@deneb.enyo.de>
Florin Patan <florinpatan@gmail.com>
Francisco Souza <franciscossouza@gmail.com>
Frederick Kelly Mayle III <frederickmayle@gmail.com>
Fredrik Enestad <fredrik.enestad@soundtrackyourbrand.com>
@ -171,29 +205,41 @@ Frithjof Schulze <schulze@math.uni-hannover.de> <sfrithjof@gmail.com>
Gabriel Aszalos <gabriel.aszalos@gmail.com>
Gary Burd <gary@beagledreams.com>
Gautham Thambidorai <gautham.dorai@gmail.com>
Geert-Johan Riemer <gjr19912@gmail.com>
Georg Reinke <guelfey@gmail.com>
George Shammas <george@shamm.as> <georgyo@gmail.com>
Gerasimos Dimitriadis <gedimitr@gmail.com>
Gideon Jan-Wessel Redelinghuys <gjredelinghuys@gmail.com>
Giles Lean <giles.lean@pobox.com>
Giulio Iotti <dullgiulio@gmail.com>
Google Inc.
Gordon Klaus <gordon.klaus@gmail.com>
Graham King <graham4king@gmail.com>
Graham Miller <graham.miller@gmail.com>
Greg Ward <greg@gerg.ca>
Guillaume J. Charmes <guillaume@charmes.net>
Guobiao Mei <meiguobiao@gmail.com>
Gustav Paul <gustav.paul@gmail.com>
Gustavo Niemeyer <gustavo@niemeyer.net>
Gwenael Treguier <gwenn.kahz@gmail.com>
Hajime Hoshi <hajimehoshi@gmail.com>
Hariharan Srinath <srinathh@gmail.com>
Harley Laue <losinggeneration@gmail.com>
Håvard Haugen <havard.haugen@gmail.com>
Hector Chu <hectorchu@gmail.com>
Hector Martin Cantero <hector@marcansoft.com>
Henning Schmiedehausen <henning@schmiedehausen.org>
Henrik Edwards <henrik.edwards@gmail.com>
Herbert Georg Fischer <herbert.fischer@gmail.com>
Hong Ruiqi <hongruiqi@gmail.com>
IBM
Icarus Sparry <golang@icarus.freeuk.com>
Igneous Systems, Inc.
Igor Dolzhikov <bluesriverz@gmail.com>
INADA Naoki <songofacandy@gmail.com>
Ingo Oeser <nightlyone@googlemail.com>
Isaac Wagner <ibw@isaacwagner.me>
Ivan Ukhov <ivan.ukhov@gmail.com>
Jakob Borg <jakob@nym.se>
Jakub Ryszard Czarnowicz <j.czarnowicz@gmail.com>
James David Chalfant <james.chalfant@gmail.com>
@ -222,14 +268,18 @@ Jeremy Jackins <jeremyjackins@gmail.com>
Jim McGrath <jimmc2@gmail.com>
Jimmy Zelinskie <jimmyzelinskie@gmail.com>
Jingcheng Zhang <diogin@gmail.com>
Jiong Du <londevil@gmail.com>
Joakim Sernbrant <serbaut@gmail.com>
Joe Harrison <joehazzers@gmail.com>
Joe Poirier <jdpoirier@gmail.com>
Joe Shaw <joe@joeshaw.org>
Joe Tsai <joetsai@digital-static.net>
Joel Stemmer <stemmertech@gmail.com>
John Asmuth <jasmuth@gmail.com>
John C Barstow <jbowtie@amathaine.com>
John Graham-Cumming <jgc@jgc.org> <jgrahamc@gmail.com>
John Howard Palevich <jack.palevich@gmail.com>
John Potocny <johnp@vividcortex.com>
John Shahid <jvshahid@gmail.com>
John Tuley <john@tuley.org>
Jonathan Gold <jgold.bg@gmail.com>
@ -247,8 +297,11 @@ JT Olds <jtolds@xnet5.com>
Jukka-Pekka Kekkonen <karatepekka@gmail.com>
Julian Phillips <julian@quantumfyre.co.uk>
Julien Schmidt <google@julienschmidt.com>
Justin Nuß <nuss.justin@gmail.com>
Kai Backman <kaib@golang.org>
Kamil Kisiel <kamil@kamilkisiel.net> <kamil.kisiel@gmail.com>
Kang Hu <hukangustc@gmail.com>
Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
Katrina Owen <katrina.owen@gmail.com>
Kei Son <hey.calmdown@gmail.com>
Keith Rarick <kr@xph.us>
@ -257,12 +310,15 @@ Kelvin Foo Chuan Lyi <vmirage@gmail.com>
Ken Friedenbach <kenliz@cruzio.com>
Ken Rockot <ken@oz.gs>
Kevin Ballard <kevin@sb.org>
Konstantin Shaposhnikov <k.shaposhnikov@gmail.com>
Kyle Consalus <consalus@gmail.com>
Kyle Isom <kyle@gokyle.net>
Kyle Lemons <kyle@kylelemons.net>
L Campbell <unpantsu@gmail.com>
Lai Jiangshan <eag0628@gmail.com>
Lee Packham <lpackham@gmail.com>
Linaro Limited
Lloyd Dewolf <foolswisdom@gmail.com>
Lorenzo Stoakes <lstoakes@gmail.com>
Luca Greco <luca.greco@alcacoop.it>
Lucio De Re <lucio.dere@gmail.com>
@ -272,6 +328,7 @@ Luke Curley <qpingu@gmail.com>
Manuel Mendez <mmendez534@gmail.com>
Marc Weistroff <marc@weistroff.net>
Marco Hennings <marco.hennings@freiheit.com>
Mark Bucciarelli <mkbucc@gmail.com>
Mark Theunissen <mark.theunissen@gmail.com>
Marko Juhani Silokunnas <marko.silokunnas@gmail.com>
Marko Tiikkaja <marko@joh.to>
@ -279,16 +336,23 @@ Markover Inc. DBA Poptip
Markus Duft <markus.duft@salomon.at>
Markus Sonderegger <marraison@gmail.com>
Markus Zimmermann <zimmski@gmail.com>
Martin Möhrmann <martisch@uos.de>
Martin Neubauer <m.ne@gmx.net>
Martin Olsson <martin@minimum.se>
Mateusz Czapliński <czapkofan@gmail.com>
Mathieu Lonjaret <mathieu.lonjaret@gmail.com>
Mats Lidell <mats.lidell@cag.se>
Matt Aimonetti <mattaimonetti@gmail.com>
Matt Bostock <matt@mattbostock.com>
Matt Jibson <matt.jibson@gmail.com>
Matt Joiner <anacrolix@gmail.com>
Matt Layher <mdlayher@gmail.com>
Matt Reiferson <mreiferson@gmail.com>
Matt T. Proud <matt.proud@gmail.com>
Matt Williams <gh@mattyw.net>
Matthew Brennan <matty.brennan@gmail.com>
Matthew Cottingham <mattcottingham@gmail.com>
Matthew Holt <Matthew.Holt+git@gmail.com>
Matthew Horsnell <matthew.horsnell@gmail.com>
Maxim Khitrov <max@mxcrypt.com>
Micah Stetson <micah.stetson@gmail.com>
@ -297,11 +361,14 @@ Michael Elkins <michael.elkins@gmail.com>
Michael Fraenkel <michael.fraenkel@gmail.com>
Michael Gehring <mg@ebfe.org> <gnirheg.leahcim@gmail.com>
Michael Hoisie <hoisie@gmail.com>
Michael Käufl <golang@c.michael-kaeufl.de>
Michael Lewis <mikelikespie@gmail.com>
Michael MacInnis <Michael.P.MacInnis@gmail.com>
Michael Pearson <mipearson@gmail.com>
Michael Schaller <michael@5challer.de>
Michael Stapelberg <michael@stapelberg.de>
Michael Teichgräber <mteichgraeber@gmx.de>
Michael Vetter <g.bluehut@gmail.com>
Michał Derkacz <ziutek@lnet.pl>
Miek Gieben <miek@miek.nl>
Mihai Borobocea <MihaiBorobocea@gmail.com>
@ -319,6 +386,7 @@ Môshe van der Sterre <moshevds@gmail.com>
Nan Deng <monnand@gmail.com>
Nathan John Youngman <nj@nathany.com>
Nathan P Finch <nate.finch@gmail.com>
Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
ngmoco, LLC
Nicholas Katsaros <nick@nickkatsaros.com>
Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
@ -327,6 +395,7 @@ Nicholas Waples <nwaples@gmail.com>
Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com>
Nicolas Kaiser <nikai@nikai.net>
Nicolas Owens <mischief@offblast.org>
Nicolas S. Dade <nic.dade@gmail.com>
Nigel Kerr <nigel.kerr@gmail.com>
Noah Campbell <noahcampbell@gmail.com>
Oling Cat <olingcat@gmail.com>
@ -347,6 +416,7 @@ Paul A Querna <paul.querna@gmail.com>
Paul Hammond <paul@paulhammond.org>
Paul Lalonde <paul.a.lalonde@gmail.com>
Paul Sbarra <Sbarra.Paul@gmail.com>
Paul Smith <paulsmith@pobox.com> <paulsmith@gmail.com>
Paul van Brouwershaven <paul@vanbrouwershaven.com>
Pavel Zinovkin <pavel.zinovkin@gmail.com>
Percy Wegmann <ox.to.a.cart@gmail.com>
@ -357,6 +427,7 @@ Peter Kleiweg <pkleiweg@xs4all.nl>
Peter Mundy <go.peter.90@gmail.com>
Péter Surányi <speter.go1@gmail.com>
Péter Szilágyi <peterke@gmail.com>
Peter Waldschmidt <peter@waldschmidt.com>
Peter Waller <peter.waller@gmail.com>
Peter Williams <pwil3058@gmail.com>
Philip K. Warren <pkwarren@gmail.com>
@ -364,9 +435,12 @@ Pieter Droogendijk <pieter@binky.org.uk>
Pietro Gagliardi <pietro10@mac.com>
Preetam Jinka <pj@preet.am>
Quan Yong Zhai <qyzhai@gmail.com>
Quoc-Viet Nguyen <afelion@gmail.com>
Raif S. Naffah <go@naffah-raif.name>
Rajat Goel <rajat.goel2010@gmail.com>
Red Hat, Inc.
Rémy Oudompheng <oudomphe@phare.normalesup.org>
Richard Barnes <rlb@ipv.sx>
Richard Crowley <r@rcrowley.org>
Richard Eric Gavaletz <gavaletz@gmail.com>
Richard Musiol <mail@richard-musiol.de>
@ -387,9 +461,11 @@ Ron Minnich <rminnich@gmail.com>
Ross Light <rlight2@gmail.com>
Rowan Worth <sqweek@gmail.com>
Ryan Hitchman <hitchmanr@gmail.com>
Ryan Seys <ryan@ryanseys.com>
Ryan Slade <ryanslade@gmail.com>
S.Çağlar Onur <caglar@10ur.org>
Sanjay Menakuru <balasanjay@gmail.com>
Scott Barron <scott.barron@github.com>
Scott Ferguson <scottwferg@gmail.com>
Scott Lawrence <bytbox@gmail.com>
Sebastien Binet <seb.binet@gmail.com>
@ -405,17 +481,21 @@ Simon Whitehead <chemnova@gmail.com>
Sokolov Yura <funny.falcon@gmail.com>
Spring Mc <heresy.mc@gmail.com>
StalkR <stalkr@stalkr.net>
Stan Schwertly <stan@schwertly.com>
Stefan Nilsson <snilsson@nada.kth.se> <trolleriprofessorn@gmail.com>
Stéphane Travostino <stephane.travostino@gmail.com>
Stephen McQuay <stephen@mcquay.me>
Stephen Weinberg <stephen@q5comm.com>
Steve McCoy <mccoyst@gmail.com>
Steve Streeting <steve@stevestreeting.com>
Steven Elliot Harris <seharris@gmail.com>
Steven Hartland <steven.hartland@multiplay.co.uk>
Stripe, Inc.
Sven Almgren <sven@tras.se>
Szabolcs Nagy <nsz@port70.net>
Tad Glines <tad.glines@gmail.com>
Taj Khattra <taj.khattra@gmail.com>
Tamir Duberstein <tamird@gmail.com>
Tarmigan Casebolt <tarmigan@gmail.com>
Taru Karttunen <taruti@taruti.net>
Tetsuo Kiso <tetsuokiso9@gmail.com>
@ -425,7 +505,10 @@ Thomas Kappler <tkappler@gmail.com>
Timo Savola <timo.savola@gmail.com>
Timo Truyts <alkaloid.btx@gmail.com>
Tobias Columbus <tobias.columbus@gmail.com>
Todd Neal <todd@tneal.org>
Tom Heng <zhm20070928@gmail.com>
Tom Linford <tomlinford@gmail.com>
Tommy Schaefer <tommy.schaefer@teecom.com>
Tor Andersson <tor.andersson@gmail.com>
Travis Cline <travis.cline@gmail.com>
Tudor Golubenco <tudor.g@gmail.com>
@ -436,6 +519,7 @@ Ulf Holm Nielsen <doktor@dyregod.dk>
Uriel Mangado <uriel@berlinblue.org>
Vadim Vygonets <unixdj@gmail.com>
Vincent Ambo <tazjin@googlemail.com>
Vincent Batts <vbatts@hashbangbash.com> <vbatts@gmail.com>
Vincent Vanackere <vincent.vanackere@gmail.com>
Vinu Rajashekhar <vinutheraj@gmail.com>
Vladimir Nikishenko <vova616@gmail.com>
@ -448,6 +532,7 @@ Xia Bin <snyh@snyh.org>
Xing Xing <mikespook@gmail.com>
Yasuhiro Matsumoto <mattn.jp@gmail.com>
Yissakhar Z. Beck <yissakhar.beck@gmail.com>
Yo-An Lin <yoanlin93@gmail.com>
Yongjian Xu <i3dmaster@gmail.com>
Yoshiyuki Kanno <nekotaroh@gmail.com> <yoshiyuki.kanno@stoic.co.jp>
Yusuke Kagiwada <block.rxckin.beats@gmail.com>

View File

@ -31,7 +31,9 @@
# Please keep the list sorted.
Aamir Khan <syst3m.w0rm@gmail.com>
Aaron France <aaron.l.france@gmail.com>
Aaron Jacobs <jacobsa@google.com>
Aaron Kemp <kemp.aaron@gmail.com>
Abhinav Gupta <abhinav.g90@gmail.com>
Adam Langley <agl@golang.org>
@ -39,6 +41,7 @@ Adrian Nos <nos.adrian@gmail.com>
Adrian O'Grady <elpollouk@gmail.com>
Adrien Bustany <adrien-xx-google@bustany.org>
Ahmed Waheed Moanes <oneofone@gmail.com>
Ainar Garipov <gugl.zadolbal@gmail.com>
Akshat Kumar <seed@mail.nanosouffle.net>
Alan Donovan <adonovan@google.com>
Alan Shreve <alan@inconshreveable.com>
@ -50,11 +53,17 @@ Alex A Skinner <alex@lx.lc>
Alex Brainman <alex.brainman@gmail.com>
Alex Bramley <abramley@google.com>
Alex Jin <toalexjin@gmail.com>
Alex Plugaru <alex@plugaru.org> <alexandru.plugaru@gmail.com>
Alex Schroeder <alex@gnu.org>
Alex Sergeyev <abc@alexsergeyev.com>
Alexander Larsson <alexander.larsson@gmail.com>
Alexander Morozov <lk4d4math@gmail.com>
Alexander Orlov <alexander.orlov@loxal.net>
Alexander Reece <awreece@gmail.com>
Alexander Surma <surma@surmair.de>
Alexander Zhavnerchik <alex.vizor@gmail.com>
Alexander Zolotov <goldifit@gmail.com>
Alexandre Cesaro <alexandre.cesaro@gmail.com>
Alexandre Normand <alexandre.normand@gmail.com>
Alexandru Moșoi <brtzsnr@gmail.com>
Alexei Sholik <alcosholik@gmail.com>
@ -65,20 +74,25 @@ Amir Mohammad Saied <amir@gluegadget.com>
Amrut Joshi <amrut.joshi@gmail.com>
Andrea Spadaccini <spadaccio@google.com>
Andreas Jellinghaus <andreas@ionisiert.de> <anj@google.com>
Andrei Korzhevskii <a.korzhevskiy@gmail.com>
Andrei Vieru <euvieru@gmail.com>
Andres Erbsen <andreser@google.com>
Andrew Balholm <andybalholm@gmail.com>
Andrew Bonventre <andybons@chromium.org>
Andrew Bursavich <abursavich@gmail.com>
Andrew Ekstedt <andrew.ekstedt@gmail.com>
Andrew Gerrand <adg@golang.org>
Andrew Harding <andrew@spacemonkey.com>
Andrew Lutomirski <andy@luto.us>
Andrew Pilloud <andrewpilloud@igneoussystems.com>
Andrew Pritchard <awpritchard@gmail.com>
Andrew Radev <andrey.radev@gmail.com>
Andrew Skiba <skibaa@gmail.com>
Andrew Szeto <andrew@jabagawee.com>
Andrew Wilkins <axwalk@gmail.com>
Andrew Williams <williams.andrew@gmail.com>
Andrey Mirtchovski <mirtchovski@gmail.com>
Andrey Petrov <andrey.petrov@shazow.net>
Andriy Lytvynov <lytvynov.a.v@gmail.com>
Andy Davis <andy@bigandian.com>
Anfernee Yongkun Gui <anfernee.gui@gmail.com>
@ -89,6 +103,7 @@ Anthony Martin <ality@pbrane.org>
Anthony Starks <ajstarks@gmail.com>
Apisak Darakananda <pongad@gmail.com>
Aram Hăvărneanu <aram@mgk.ro>
Areski Belaid <areski@gmail.com>
Arnaud Ysmal <arnaud.ysmal@gmail.com>
Arne Hormann <arnehormann@gmail.com>
Aron Nopanen <aron.nopanen@gmail.com>
@ -97,7 +112,10 @@ Asim Shankar <asimshankar@gmail.com>
Ato Araki <ato.araki@gmail.com>
Aulus Egnatius Varialus <varialus@gmail.com>
Austin Clements <austin@google.com> <aclements@csail.mit.edu>
awaw fumin <awawfumin@gmail.com>
Aymerick Jéhanne <aymerick@jehanne.org>
Balazs Lecz <leczb@google.com>
Ben Burkert <ben@benburkert.com>
Ben Eitzen <eitzenb@golang.org>
Ben Fried <ben.fried@gmail.com>
Ben Lynn <benlynn@gmail.com>
@ -111,24 +129,31 @@ Bill Thiede <couchmoney@gmail.com>
Billie Harold Cleek <bhcleek@gmail.com>
Bjorn Tillenius <bjorn@tillenius.me>
Bjorn Tipling <bjorn.tipling@gmail.com>
Blake Gentry <blakesgentry@gmail.com>
Blake Mizerany <blake.mizerany@gmail.com>
Bobby Powers <bobbypowers@gmail.com>
Brad Fitzpatrick <bradfitz@golang.org> <bradfitz@gmail.com>
Brad Garcia <bgarcia@golang.org>
Brandon Gilmore <varz@google.com>
Brendan Daniel Tracey <tracey.brendan@gmail.com>
Brendan O'Dea <bod@golang.org>
Brett Cannon <bcannon@gmail.com>
Brian Dellisanti <briandellisanti@gmail.com>
Brian G. Merrell <bgmerrell@gmail.com>
Brian Gitonga Marete <marete@toshnix.com>
Brian Gitonga Marete <marete@toshnix.com> <bgmarete@gmail.com>
Brian Ketelsen <bketelsen@gmail.com>
Brian Slesinsky <skybrian@google.com>
Brian Smith <ohohvi@gmail.com>
Bryan Ford <brynosaurus@gmail.com>
Burcu Dogan <jbd@google.com> <burcujdogan@gmail.com>
Caine Tighe <arctanofyourface@gmail.com>
Caleb Spare <cespare@gmail.com>
Carl Chatfield <carlchatfield@gmail.com>
Carl Jackson <carl@stripe.com>
Carl Mastrangelo <notcarl@google.com>
Carl Shapiro <cshapiro@google.com> <cshapiro@golang.org>
Carlos Castillo <cookieo9@gmail.com>
Carlos Cirello <uldericofilho@gmail.com>
Cary Hull <chull@google.com>
Case Nelson <case.nelson@gmail.com>
Casey Marshall <casey.marshall@gmail.com>
@ -137,11 +162,13 @@ Cezar Sá Espinola <cezarsa@gmail.com>
ChaiShushan <chaishushan@gmail.com>
Charles L. Dorian <cldorian@gmail.com>
Charles Lee <zombie.fml@gmail.com>
Chris Broadfoot <cbro@golang.org>
Chris Dollin <ehog.hedge@gmail.com>
Chris Farmiloe <chrisfarms@gmail.com>
Chris Howey <howeyc@gmail.com>
Chris Hundt <hundt@google.com>
Chris Jones <chris@cjones.org> <chris.jones.yar@gmail.com>
Chris Kastorff <encryptio@gmail.com>
Chris Lennert <calennert@gmail.com>
Chris Manghane <cmang@golang.org>
Chris McGee <sirnewton_01@yahoo.ca> <newton688@gmail.com>
@ -150,12 +177,14 @@ Christine Hansmann <chhansmann@gmail.com>
Christoffer Buchholz <christoffer.buchholz@gmail.com>
Christoph Hack <christoph@tux21b.org>
Christopher Cahoon <chris.cahoon@gmail.com>
Christopher Guiney <chris@guiney.net>
Christopher Nielsen <m4dh4tt3r@gmail.com>
Christopher Redden <christopher.redden@gmail.com>
Christopher Swenson <cswenson@google.com>
Christopher Wedgwood <cw@f00f.org>
Clement Skau <clementskau@gmail.com>
Colby Ranger <cranger@google.com>
Colin Kennedy <moshen.colin@gmail.com>
Conrad Meyer <cemeyer@cs.washington.edu>
Corey Thomasson <cthom.lists@gmail.com>
Cosmos Nicolaou <cnicolaou@google.com>
@ -164,6 +193,7 @@ Damian Gryski <dgryski@gmail.com>
Damien Neil <dneil@google.com>
Dan Callahan <dan.callahan@gmail.com>
Dan Peterson <dpiddy@gmail.com>
Dan Pupius <dan@medium.com>
Dan Sinclair <dan.sinclair@gmail.com>
Daniel Fleischman <danielfleischman@gmail.com>
Daniel Krech <eikeon@eikeon.com>
@ -180,6 +210,7 @@ David Anderson <danderson@google.com>
David Barnett <dbarnett@google.com>
David Bürgin <676c7473@gmail.com>
David Calavera <david.calavera@gmail.com>
David Chase <drchase@google.com>
David Covert <davidhcovert@gmail.com>
David Crawshaw <david.crawshaw@zentus.com> <crawshaw@google.com> <crawshaw@golang.org>
David du Colombier <0intro@gmail.com>
@ -192,23 +223,29 @@ David Presotto <presotto@gmail.com>
David Symonds <dsymonds@golang.org>
David Thomas <davidthomas426@gmail.com>
David Titarenco <david.titarenco@gmail.com>
Davies Liu <davies.liu@gmail.com>
Dean Prichard <dean.prichard@gmail.com>
Denis Brandolini <denis.brandolini@gmail.com>
Derek Buitenhuis <derek.buitenhuis@gmail.com>
Derek Parker <parkerderek86@gmail.com>
Devon H. O'Dell <devon.odell@gmail.com>
Dhiru Kholia <dhiru.kholia@gmail.com>
Didier Spezia <didier.06@gmail.com>
Dimitri Tcaciuc <dtcaciuc@gmail.com>
Dmitri Shuralyov <shurcooL@gmail.com>
Dmitriy Shelenin <deemok@googlemail.com> <deemok@gmail.com>
Dmitriy Vyukov <dvyukov@google.com>
Dmitry Chestnykh <dchest@gmail.com>
Dmitry Savintsev <dsavints@gmail.com>
Dominik Honnef <dominik.honnef@gmail.com>
Dominik Vogt <vogt@linux.vnet.ibm.com>
Donovan Hide <donovanhide@gmail.com>
Drew Hintz <adhintz@google.com>
Duncan Holm <mail@frou.org>
Dustin Long <dustmop@gmail.com>
Dustin Sallings <dsallings@gmail.com>
Dustin Shields-Cloues <dcloues@gmail.com>
Dvir Volk <dvir@everything.me> <dvirsky@gmail.com>
Eden Li <eden.li@gmail.com>
Egon Elbre <egonelbre@gmail.com>
Ehren Kret <ehren.kret@gmail.com>
@ -219,11 +256,13 @@ Eoghan Sherry <ejsherry@gmail.com>
Eric Clark <zerohp@gmail.com>
Eric Milliken <emilliken@gmail.com>
Eric Roshan-Eisner <eric.d.eisner@gmail.com>
Erik Aigner <aigner.erik@gmail.com>
Erik St. Martin <alakriti@gmail.com>
Erik Westrup <erik.westrup@gmail.com>
Esko Luontola <esko.luontola@gmail.com>
Evan Kroske <evankroske@google.com>
Evan Martin <evan.martin@gmail.com>
Evan Phoenix <evan@phx.io>
Evan Shaw <chickencha@gmail.com>
Ewan Chou <coocood@gmail.com>
Fabrizio Milo <mistobaan@gmail.com>
@ -234,6 +273,7 @@ Felix Geisendörfer <haimuiba@gmail.com>
Firmansyah Adiputra <frm.adiputra@gmail.com>
Florian Uekermann <florian@uekermann-online.de> <f1@uekermann-online.de>
Florian Weimer <fw@deneb.enyo.de>
Florin Patan <florinpatan@gmail.com>
Folke Behrens <folke@google.com>
Francesc Campoy <campoy@golang.org>
Francisco Souza <franciscossouza@gmail.com>
@ -245,23 +285,29 @@ Gaal Yahas <gaal@google.com>
Gabriel Aszalos <gabriel.aszalos@gmail.com>
Gary Burd <gary@beagledreams.com> <gary.burd@gmail.com>
Gautham Thambidorai <gautham.dorai@gmail.com>
Geert-Johan Riemer <gjr19912@gmail.com>
Georg Reinke <guelfey@gmail.com>
George Shammas <george@shamm.as> <georgyo@gmail.com>
Gerasimos Dimitriadis <gedimitr@gmail.com>
Gideon Jan-Wessel Redelinghuys <gjredelinghuys@gmail.com>
Giles Lean <giles.lean@pobox.com>
Giulio Iotti <dullgiulio@gmail.com>
Glenn Lewis <gmlewis@google.com>
Gordon Klaus <gordon.klaus@gmail.com>
Graham King <graham4king@gmail.com>
Graham Miller <graham.miller@gmail.com>
Greg Ward <greg@gerg.ca>
Guillaume J. Charmes <guillaume@charmes.net>
Guobiao Mei <meiguobiao@gmail.com>
Gustav Paul <gustav.paul@gmail.com>
Gustavo Franco <gustavorfranco@gmail.com>
Gustavo Niemeyer <gustavo@niemeyer.net> <n13m3y3r@gmail.com>
Gwenael Treguier <gwenn.kahz@gmail.com>
Hana Kim <hyangah@gmail.com>
Hajime Hoshi <hajimehoshi@gmail.com>
Han-Wen Nienhuys <hanwen@google.com>
Hariharan Srinath <srinathh@gmail.com>
Harley Laue <losinggeneration@gmail.com>
Håvard Haugen <havard.haugen@gmail.com>
Hector Chu <hectorchu@gmail.com>
Hector Martin Cantero <hector@marcansoft.com>
Henning Schmiedehausen <henning@schmiedehausen.org>
@ -269,12 +315,17 @@ Henrik Edwards <henrik.edwards@gmail.com>
Herbert Georg Fischer <herbert.fischer@gmail.com>
Hong Ruiqi <hongruiqi@gmail.com>
Hossein Sheikh Attar <hattar@google.com>
Hyang-Ah Hana Kim <hakim@google.com> <hyangah@gmail.com>
Ian Lance Taylor <iant@golang.org>
Icarus Sparry <golang@icarus.freeuk.com>
Igor Dolzhikov <bluesriverz@gmail.com>
INADA Naoki <songofacandy@gmail.com>
Ingo Oeser <nightlyone@googlemail.com> <nightlyone@gmail.com>
Isaac Wagner <ibw@isaacwagner.me>
Ivan Krasin <krasin@golang.org>
Ivan Ukhov <ivan.ukhov@gmail.com>
Jacob Baskin <jbaskin@google.com>
Jacob H. Haven <jacob@cloudflare.com>
Jakob Borg <jakob@nym.se>
Jakub Ryszard Czarnowicz <j.czarnowicz@gmail.com>
James Aguilar <jaguilar@google.com>
@ -291,6 +342,7 @@ Jamie Gennis <jgennis@google.com> <jgennis@gmail.com>
Jamie Turner <jamwt@dropbox.com>
Jamie Wilkinson <jaq@spacepants.org>
Jan H. Hosang <jan.hosang@gmail.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
Jan Mercl <0xjnml@gmail.com>
Jan Mercl <befelemepeseveze@gmail.com>
Jan Newmarch <jan.newmarch@gmail.com>
@ -313,9 +365,12 @@ Jeremy Schlatter <jeremy.schlatter@gmail.com>
Jim McGrath <jimmc2@gmail.com>
Jimmy Zelinskie <jimmyzelinskie@gmail.com>
Jingcheng Zhang <diogin@gmail.com>
Jiong Du <londevil@gmail.com>
Joakim Sernbrant <serbaut@gmail.com>
Joe Harrison <joehazzers@gmail.com>
Joe Poirier <jdpoirier@gmail.com>
Joe Shaw <joe@joeshaw.org>
Joe Tsai <joetsai@digital-static.net>
Joel Sing <jsing@google.com>
Joel Stemmer <stemmertech@gmail.com>
Johan Euphrosine <proppy@google.com>
@ -323,9 +378,11 @@ John Asmuth <jasmuth@gmail.com>
John Beisley <huin@google.com>
John C Barstow <jbowtie@amathaine.com>
John DeNero <denero@google.com>
John Dethridge <jcd@golang.org>
John Graham-Cumming <jgc@jgc.org> <jgrahamc@gmail.com>
John Howard Palevich <jack.palevich@gmail.com>
John Newlin <jnewlin@google.com>
John Potocny <johnp@vividcortex.com>
John Shahid <jvshahid@gmail.com>
John Tuley <john@tuley.org>
Jonathan Allie <jonallie@google.com>
@ -352,8 +409,11 @@ JT Olds <jtolds@xnet5.com>
Jukka-Pekka Kekkonen <karatepekka@gmail.com>
Julian Phillips <julian@quantumfyre.co.uk>
Julien Schmidt <google@julienschmidt.com>
Justin Nuß <nuss.justin@gmail.com>
Kai Backman <kaib@golang.org>
Kamil Kisiel <kamil@kamilkisiel.net> <kamil.kisiel@gmail.com>
Kang Hu <hukangustc@gmail.com>
Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
Katrina Owen <katrina.owen@gmail.com>
Kay Zhu <kayzhu@google.com>
Kei Son <hey.calmdown@gmail.com>
@ -367,12 +427,15 @@ Ken Thompson <ken@golang.org>
Kevin Ballard <kevin@sb.org>
Kevin Klues <klueska@gmail.com> <klueska@google.com>
Kirklin McDonald <kirklin.mcdonald@gmail.com>
Konstantin Shaposhnikov <k.shaposhnikov@gmail.com>
Kyle Consalus <consalus@gmail.com>
Kyle Isom <kyle@gokyle.net>
Kyle Lemons <kyle@kylelemons.net> <kevlar@google.com>
L Campbell <unpantsu@gmail.com>
Lai Jiangshan <eag0628@gmail.com>
Larry Hosken <lahosken@golang.org>
Lee Packham <lpackham@gmail.com>
Lloyd Dewolf <foolswisdom@gmail.com>
Lorenzo Stoakes <lstoakes@gmail.com>
Louis Kruger <louisk@google.com>
Luca Greco <luca.greco@alcacoop.it>
@ -381,12 +444,15 @@ Luit van Drongelen <luitvd@gmail.com>
Luka Zakrajšek <tr00.g33k@gmail.com>
Luke Curley <qpingu@gmail.com>
Luuk van Dijk <lvd@golang.org> <lvd@google.com>
Lynn Boger <laboger@linux.vnet.ibm.com>
Manoj Dayaram <platform-dev@moovweb.com> <manoj.dayaram@moovweb.com>
Manu Garg <manugarg@google.com>
Manuel Mendez <mmendez534@gmail.com>
Marc Weistroff <marc@weistroff.net>
Marcel van Lohuizen <mpvl@golang.org>
Marco Hennings <marco.hennings@freiheit.com>
Marius Nuennerich <mnu@google.com>
Mark Bucciarelli <mkbucc@gmail.com>
Mark Theunissen <mark.theunissen@gmail.com>
Mark Zavislak <zavislak@google.com>
Marko Juhani Silokunnas <marko.silokunnas@gmail.com>
@ -395,19 +461,26 @@ Marko Tiikkaja <marko@joh.to>
Markus Duft <markus.duft@salomon.at>
Markus Sonderegger <marraison@gmail.com>
Markus Zimmermann <zimmski@gmail.com>
Martin Möhrmann <martisch@uos.de>
Martin Neubauer <m.ne@gmx.net>
Martin Olsson <martin@minimum.se>
Mateusz Czapliński <czapkofan@gmail.com>
Mathieu Lonjaret <mathieu.lonjaret@gmail.com>
Mats Lidell <mats.lidell@cag.se> <mats.lidell@gmail.com>
Matt Aimonetti <mattaimonetti@gmail.com>
Matt Bostock <matt@mattbostock.com>
Matt Brown <mdbrown@google.com>
Matt Jibson <matt.jibson@gmail.com>
Matt Joiner <anacrolix@gmail.com>
Matt Jones <mrjones@google.com>
Matt Layher <mdlayher@gmail.com>
Matt Reiferson <mreiferson@gmail.com>
Matt T. Proud <matt.proud@gmail.com>
Matt Williams <gh@mattyw.net> <mattyjwilliams@gmail.com>
Matthew Brennan <matty.brennan@gmail.com>
Matthew Cottingham <mattcottingham@gmail.com>
Matthew Dempsky <mdempsky@google.com>
Matthew Holt <Matthew.Holt+git@gmail.com>
Matthew Horsnell <matthew.horsnell@gmail.com>
Maxim Khitrov <max@mxcrypt.com>
Maxim Pimenov <mpimenov@google.com>
@ -419,17 +492,21 @@ Michael Fraenkel <michael.fraenkel@gmail.com>
Michael Gehring <mg@ebfe.org> <gnirheg.leahcim@gmail.com>
Michael Hoisie <hoisie@gmail.com>
Michael Hudson-Doyle <michael.hudson@linaro.org>
Michael Käufl <golang@c.michael-kaeufl.de>
Michael Kelly <mjk@google.com>
Michael Lewis <mikelikespie@gmail.com>
Michael MacInnis <Michael.P.MacInnis@gmail.com>
Michael Matloob <matloob@google.com>
Michael Pearson <mipearson@gmail.com>
Michael Piatek <piatek@google.com>
Michael Schaller <michael@5challer.de>
Michael Shields <mshields@google.com>
Michael Stapelberg <michael@stapelberg.de> <mstplbrg@googlemail.com>
Michael T. Jones <mtj@google.com> <michael.jones@gmail.com>
Michael Teichgräber <mteichgraeber@gmx.de> <mt4swm@googlemail.com>
Michael Vetter <g.bluehut@gmail.com>
Michał Derkacz <ziutek@lnet.pl>
Michalis Kargakis <michaliskargakis@gmail.com>
Miek Gieben <miek@miek.nl> <remigius.gieben@gmail.com>
Mihai Borobocea <MihaiBorobocea@gmail.com>
Mikael Tillenius <mikti42@gmail.com>
@ -448,6 +525,7 @@ Mrunal Patel <mrunalp@gmail.com>
Nan Deng <monnand@gmail.com>
Nathan John Youngman <nj@nathany.com>
Nathan P Finch <nate.finch@gmail.com>
Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
Nicholas Katsaros <nick@nickkatsaros.com>
Nicholas Presta <nick@nickpresta.ca> <nick1presta@gmail.com>
Nicholas Sullivan <nicholas.sullivan@gmail.com>
@ -456,6 +534,7 @@ Nick Cooper <nmvc@google.com>
Nick Craig-Wood <nick@craig-wood.com> <nickcw@gmail.com>
Nicolas Kaiser <nikai@nikai.net>
Nicolas Owens <mischief@offblast.org>
Nicolas S. Dade <nic.dade@gmail.com>
Nigel Kerr <nigel.kerr@gmail.com>
Nigel Tao <nigeltao@golang.org>
Noah Campbell <noahcampbell@gmail.com>
@ -479,8 +558,10 @@ Paul Borman <borman@google.com>
Paul Chang <paulchang@google.com>
Paul Hammond <paul@paulhammond.org>
Paul Lalonde <paul.a.lalonde@gmail.com>
Paul Marks <pmarks@google.com>
Paul Nasrat <pnasrat@google.com>
Paul Sbarra <Sbarra.Paul@gmail.com>
Paul Smith <paulsmith@pobox.com> <paulsmith@gmail.com>
Paul van Brouwershaven <paul@vanbrouwershaven.com>
Pavel Zinovkin <pavel.zinovkin@gmail.com>
Pawel Szczur <filemon@google.com>
@ -495,6 +576,7 @@ Peter Mundy <go.peter.90@gmail.com>
Péter Surányi <speter.go1@gmail.com>
Péter Szabó <pts@google.com>
Péter Szilágyi <peterke@gmail.com>
Peter Waldschmidt <peter@waldschmidt.com>
Peter Waller <peter.waller@gmail.com>
Peter Weinberger <pjw@golang.org>
Peter Williams <pwil3058@gmail.com>
@ -504,10 +586,14 @@ Pieter Droogendijk <pieter@binky.org.uk>
Pietro Gagliardi <pietro10@mac.com>
Preetam Jinka <pj@preet.am>
Quan Yong Zhai <qyzhai@gmail.com>
Quoc-Viet Nguyen <afelion@gmail.com>
Rahul Chaudhry <rahulchaudhry@chromium.org>
Raif S. Naffah <go@naffah-raif.name>
Rajat Goel <rajat.goel2010@gmail.com>
Raph Levien <raph@google.com>
Raul Silvera <rsilvera@google.com>
Rémy Oudompheng <oudomphe@phare.normalesup.org> <remyoudompheng@gmail.com>
Richard Barnes <rlb@ipv.sx>
Richard Crowley <r@rcrowley.org>
Richard Eric Gavaletz <gavaletz@gmail.com>
Richard Musiol <mail@richard-musiol.de> <neelance@gmail.com>
@ -530,22 +616,25 @@ Roger Pau Monné <royger@gmail.com>
Roger Peppe <rogpeppe@gmail.com>
Ron Hashimoto <mail@h2so5.net>
Ron Minnich <rminnich@gmail.com>
Ross Light <rlight2@gmail.com>
Ross Light <light@google.com> <rlight2@gmail.com>
Rowan Worth <sqweek@gmail.com>
Rui Ueyama <ruiu@google.com>
Russ Cox <rsc@golang.org>
Ryan Barrett <ryanb@google.com>
Ryan Brown <ribrdb@google.com>
Ryan Hitchman <hitchmanr@gmail.com>
Ryan Seys <ryan@ryanseys.com>
Ryan Slade <ryanslade@gmail.com>
S.Çağlar Onur <caglar@10ur.org>
Sam Thorogood <thorogood@google.com> <sam.thorogood@gmail.com>
Sameer Ajmani <sameer@golang.org> <ajmani@gmail.com>
Sanjay Menakuru <balasanjay@gmail.com>
Scott Barron <scott.barron@github.com>
Scott Ferguson <scottwferg@gmail.com>
Scott Lawrence <bytbox@gmail.com>
Scott Schwartz <scotts@golang.org>
Sean Burford <sburford@google.com>
Sebastien Binet <seb.binet@gmail.com>
Sebastien Binet <seb.binet@gmail.com>
Sébastien Paolacci <sebastien.paolacci@gmail.com>
Sergei Skorobogatov <skorobo@rambler.ru>
Sergey 'SnakE' Gromov <snake.scaly@gmail.com>
@ -558,13 +647,16 @@ Shivakumar GN <shivakumar.gn@gmail.com>
Simon Whitehead <chemnova@gmail.com>
Sokolov Yura <funny.falcon@gmail.com>
Spring Mc <heresy.mc@gmail.com>
Srdjan Petrovic <spetrovic@google.com>
StalkR <stalkr@stalkr.net>
Stan Schwertly <stan@schwertly.com>
Stefan Nilsson <snilsson@nada.kth.se> <trolleriprofessorn@gmail.com>
Stéphane Travostino <stephane.travostino@gmail.com>
Stephen Ma <stephenm@golang.org>
Stephen McQuay <stephen@mcquay.me>
Stephen Weinberg <stephen@q5comm.com>
Steve McCoy <mccoyst@gmail.com>
Steve Streeting <steve@stevestreeting.com>
Steven Elliot Harris <seharris@gmail.com>
Steven Hartland <steven.hartland@multiplay.co.uk>
Sugu Sougoumarane <ssougou@gmail.com>
@ -572,6 +664,7 @@ Sven Almgren <sven@tras.se>
Szabolcs Nagy <nsz@port70.net>
Tad Glines <tad.glines@gmail.com>
Taj Khattra <taj.khattra@gmail.com>
Tamir Duberstein <tamird@gmail.com>
Tarmigan Casebolt <tarmigan@gmail.com>
Taru Karttunen <taruti@taruti.net>
Tetsuo Kiso <tetsuokiso9@gmail.com>
@ -582,9 +675,12 @@ Thomas Kappler <tkappler@gmail.com>
Timo Savola <timo.savola@gmail.com>
Timo Truyts <alkaloid.btx@gmail.com>
Tobias Columbus <tobias.columbus@gmail.com> <tobias.columbus@googlemail.com>
Todd Neal <todd@tneal.org>
Todd Wang <toddwang@gmail.com>
Tom Heng <zhm20070928@gmail.com>
Tom Linford <tomlinford@gmail.com>
Tom Szymanski <tgs@google.com>
Tommy Schaefer <tommy.schaefer@teecom.com>
Tor Andersson <tor.andersson@gmail.com>
Travis Cline <travis.cline@gmail.com>
Trevor Strohman <trevor.strohman@gmail.com>
@ -597,9 +693,11 @@ Uriel Mangado <uriel@berlinblue.org>
Vadim Vygonets <unixdj@gmail.com>
Vega Garcia Luis Alfonso <vegacom@gmail.com>
Vincent Ambo <tazjin@googlemail.com>
Vincent Batts <vbatts@hashbangbash.com> <vbatts@gmail.com>
Vincent Vanackere <vincent.vanackere@gmail.com>
Vinu Rajashekhar <vinutheraj@gmail.com>
Vish Subramanian <vish@google.com>
Vlad Krasnov <vlad@cloudflare.com>
Vladimir Nikishenko <vova616@gmail.com>
Volker Dobler <dr.volker.dobler@gmail.com>
Wei Guangjing <vcc.163@gmail.com>
@ -613,6 +711,7 @@ Xing Xing <mikespook@gmail.com>
Yan Zou <yzou@google.com>
Yasuhiro Matsumoto <mattn.jp@gmail.com>
Yissakhar Z. Beck <yissakhar.beck@gmail.com>
Yo-An Lin <yoanlin93@gmail.com>
Yongjian Xu <i3dmaster@gmail.com>
Yoshiyuki Kanno <nekotaroh@gmail.com> <yoshiyuki.kanno@stoic.co.jp>
Yusuke Kagiwada <block.rxckin.beats@gmail.com>

969
api/go1.5.txt Normal file
View File

@ -0,0 +1,969 @@
pkg archive/zip, method (*Writer) SetOffset(int64)
pkg bufio, method (*Reader) Discard(int) (int, error)
pkg bufio, method (ReadWriter) Discard(int) (int, error)
pkg bytes, func LastIndexByte([]uint8, uint8) int
pkg bytes, method (*Buffer) Cap() int
pkg bytes, method (*Reader) Size() int64
pkg crypto, const SHA512_224 = 14
pkg crypto, const SHA512_224 Hash
pkg crypto, const SHA512_256 = 15
pkg crypto, const SHA512_256 Hash
pkg crypto, type Decrypter interface { Decrypt, Public }
pkg crypto, type Decrypter interface, Decrypt(io.Reader, []uint8, DecrypterOpts) ([]uint8, error)
pkg crypto, type Decrypter interface, Public() PublicKey
pkg crypto, type DecrypterOpts interface {}
pkg crypto/cipher, func NewGCMWithNonceSize(Block, int) (AEAD, error)
pkg crypto/elliptic, type CurveParams struct, Name string
pkg crypto/rsa, method (*PrivateKey) Decrypt(io.Reader, []uint8, crypto.DecrypterOpts) ([]uint8, error)
pkg crypto/rsa, type OAEPOptions struct
pkg crypto/rsa, type OAEPOptions struct, Hash crypto.Hash
pkg crypto/rsa, type OAEPOptions struct, Label []uint8
pkg crypto/rsa, type PKCS1v15DecryptOptions struct
pkg crypto/rsa, type PKCS1v15DecryptOptions struct, SessionKeyLen int
pkg crypto/sha512, const Size224 = 28
pkg crypto/sha512, const Size224 ideal-int
pkg crypto/sha512, const Size256 = 32
pkg crypto/sha512, const Size256 ideal-int
pkg crypto/sha512, func New512_224() hash.Hash
pkg crypto/sha512, func New512_256() hash.Hash
pkg crypto/sha512, func Sum512_224([]uint8) [28]uint8
pkg crypto/sha512, func Sum512_256([]uint8) [32]uint8
pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 49196
pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 uint16
pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 49200
pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16
pkg crypto/tls, method (*Config) SetSessionTicketKeys([][32]uint8)
pkg crypto/tls, type Certificate struct, SignedCertificateTimestamps [][]uint8
pkg crypto/tls, type ConnectionState struct, OCSPResponse []uint8
pkg crypto/tls, type ConnectionState struct, SignedCertificateTimestamps [][]uint8
pkg crypto/x509, method (*CertificateRequest) CheckSignature() error
pkg crypto/x509, type Certificate struct, UnhandledCriticalExtensions []asn1.ObjectIdentifier
pkg crypto/x509/pkix, type Name struct, ExtraNames []AttributeTypeAndValue
pkg database/sql, method (*DB) Stats() DBStats
pkg database/sql, type DBStats struct
pkg database/sql, type DBStats struct, OpenConnections int
pkg debug/dwarf, const ClassAddress = 1
pkg debug/dwarf, const ClassAddress Class
pkg debug/dwarf, const ClassBlock = 2
pkg debug/dwarf, const ClassBlock Class
pkg debug/dwarf, const ClassConstant = 3
pkg debug/dwarf, const ClassConstant Class
pkg debug/dwarf, const ClassExprLoc = 4
pkg debug/dwarf, const ClassExprLoc Class
pkg debug/dwarf, const ClassFlag = 5
pkg debug/dwarf, const ClassFlag Class
pkg debug/dwarf, const ClassLinePtr = 6
pkg debug/dwarf, const ClassLinePtr Class
pkg debug/dwarf, const ClassLocListPtr = 7
pkg debug/dwarf, const ClassLocListPtr Class
pkg debug/dwarf, const ClassMacPtr = 8
pkg debug/dwarf, const ClassMacPtr Class
pkg debug/dwarf, const ClassRangeListPtr = 9
pkg debug/dwarf, const ClassRangeListPtr Class
pkg debug/dwarf, const ClassReference = 10
pkg debug/dwarf, const ClassReference Class
pkg debug/dwarf, const ClassReferenceAlt = 13
pkg debug/dwarf, const ClassReferenceAlt Class
pkg debug/dwarf, const ClassReferenceSig = 11
pkg debug/dwarf, const ClassReferenceSig Class
pkg debug/dwarf, const ClassString = 12
pkg debug/dwarf, const ClassString Class
pkg debug/dwarf, const ClassStringAlt = 14
pkg debug/dwarf, const ClassStringAlt Class
pkg debug/dwarf, method (*Data) LineReader(*Entry) (*LineReader, error)
pkg debug/dwarf, method (*Entry) AttrField(Attr) *Field
pkg debug/dwarf, method (*LineReader) Next(*LineEntry) error
pkg debug/dwarf, method (*LineReader) Reset()
pkg debug/dwarf, method (*LineReader) Seek(LineReaderPos)
pkg debug/dwarf, method (*LineReader) SeekPC(uint64, *LineEntry) error
pkg debug/dwarf, method (*LineReader) Tell() LineReaderPos
pkg debug/dwarf, method (*Reader) AddressSize() int
pkg debug/dwarf, method (Class) GoString() string
pkg debug/dwarf, method (Class) String() string
pkg debug/dwarf, type Class int
pkg debug/dwarf, type Field struct, Class Class
pkg debug/dwarf, type LineEntry struct
pkg debug/dwarf, type LineEntry struct, Address uint64
pkg debug/dwarf, type LineEntry struct, BasicBlock bool
pkg debug/dwarf, type LineEntry struct, Column int
pkg debug/dwarf, type LineEntry struct, Discriminator int
pkg debug/dwarf, type LineEntry struct, EndSequence bool
pkg debug/dwarf, type LineEntry struct, EpilogueBegin bool
pkg debug/dwarf, type LineEntry struct, File *LineFile
pkg debug/dwarf, type LineEntry struct, ISA int
pkg debug/dwarf, type LineEntry struct, IsStmt bool
pkg debug/dwarf, type LineEntry struct, Line int
pkg debug/dwarf, type LineEntry struct, OpIndex int
pkg debug/dwarf, type LineEntry struct, PrologueEnd bool
pkg debug/dwarf, type LineFile struct
pkg debug/dwarf, type LineFile struct, Length int
pkg debug/dwarf, type LineFile struct, Mtime uint64
pkg debug/dwarf, type LineFile struct, Name string
pkg debug/dwarf, type LineReader struct
pkg debug/dwarf, type LineReaderPos struct
pkg debug/dwarf, var ErrUnknownPC error
pkg debug/elf, const R_PPC64_ADDR14 = 7
pkg debug/elf, const R_PPC64_ADDR14 R_PPC64
pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN = 9
pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN R_PPC64
pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN = 8
pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN R_PPC64
pkg debug/elf, const R_PPC64_ADDR16 = 3
pkg debug/elf, const R_PPC64_ADDR16 R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_DS = 56
pkg debug/elf, const R_PPC64_ADDR16_DS R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HA = 6
pkg debug/elf, const R_PPC64_ADDR16_HA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HI = 5
pkg debug/elf, const R_PPC64_ADDR16_HI R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHER = 39
pkg debug/elf, const R_PPC64_ADDR16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHERA = 40
pkg debug/elf, const R_PPC64_ADDR16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHEST = 41
pkg debug/elf, const R_PPC64_ADDR16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA = 42
pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_LO = 4
pkg debug/elf, const R_PPC64_ADDR16_LO R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_LO_DS = 57
pkg debug/elf, const R_PPC64_ADDR16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_ADDR24 = 2
pkg debug/elf, const R_PPC64_ADDR24 R_PPC64
pkg debug/elf, const R_PPC64_ADDR32 = 1
pkg debug/elf, const R_PPC64_ADDR32 R_PPC64
pkg debug/elf, const R_PPC64_ADDR64 = 38
pkg debug/elf, const R_PPC64_ADDR64 R_PPC64
pkg debug/elf, const R_PPC64_DTPMOD64 = 68
pkg debug/elf, const R_PPC64_DTPMOD64 R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16 = 74
pkg debug/elf, const R_PPC64_DTPREL16 R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_DS = 101
pkg debug/elf, const R_PPC64_DTPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HA = 77
pkg debug/elf, const R_PPC64_DTPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HI = 76
pkg debug/elf, const R_PPC64_DTPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHER = 103
pkg debug/elf, const R_PPC64_DTPREL16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA = 104
pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST = 105
pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA = 106
pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_LO = 75
pkg debug/elf, const R_PPC64_DTPREL16_LO R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_LO_DS = 102
pkg debug/elf, const R_PPC64_DTPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_DTPREL64 = 78
pkg debug/elf, const R_PPC64_DTPREL64 R_PPC64
pkg debug/elf, const R_PPC64_GOT16 = 14
pkg debug/elf, const R_PPC64_GOT16 R_PPC64
pkg debug/elf, const R_PPC64_GOT16_DS = 58
pkg debug/elf, const R_PPC64_GOT16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT16_HA = 17
pkg debug/elf, const R_PPC64_GOT16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT16_HI = 16
pkg debug/elf, const R_PPC64_GOT16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT16_LO = 15
pkg debug/elf, const R_PPC64_GOT16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT16_LO_DS = 59
pkg debug/elf, const R_PPC64_GOT16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS = 91
pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA = 94
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI = 93
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS = 92
pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16 = 79
pkg debug/elf, const R_PPC64_GOT_TLSGD16 R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA = 82
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI = 81
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO = 80
pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16 = 83
pkg debug/elf, const R_PPC64_GOT_TLSLD16 R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA = 86
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI = 85
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO = 84
pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_DS = 87
pkg debug/elf, const R_PPC64_GOT_TPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_HA = 90
pkg debug/elf, const R_PPC64_GOT_TPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_HI = 89
pkg debug/elf, const R_PPC64_GOT_TPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS = 88
pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_JMP_SLOT = 21
pkg debug/elf, const R_PPC64_JMP_SLOT R_PPC64
pkg debug/elf, const R_PPC64_NONE = 0
pkg debug/elf, const R_PPC64_NONE R_PPC64
pkg debug/elf, const R_PPC64_REL14 = 11
pkg debug/elf, const R_PPC64_REL14 R_PPC64
pkg debug/elf, const R_PPC64_REL14_BRNTAKEN = 13
pkg debug/elf, const R_PPC64_REL14_BRNTAKEN R_PPC64
pkg debug/elf, const R_PPC64_REL14_BRTAKEN = 12
pkg debug/elf, const R_PPC64_REL14_BRTAKEN R_PPC64
pkg debug/elf, const R_PPC64_REL16 = 249
pkg debug/elf, const R_PPC64_REL16 R_PPC64
pkg debug/elf, const R_PPC64_REL16_HA = 252
pkg debug/elf, const R_PPC64_REL16_HA R_PPC64
pkg debug/elf, const R_PPC64_REL16_HI = 251
pkg debug/elf, const R_PPC64_REL16_HI R_PPC64
pkg debug/elf, const R_PPC64_REL16_LO = 250
pkg debug/elf, const R_PPC64_REL16_LO R_PPC64
pkg debug/elf, const R_PPC64_REL24 = 10
pkg debug/elf, const R_PPC64_REL24 R_PPC64
pkg debug/elf, const R_PPC64_REL32 = 26
pkg debug/elf, const R_PPC64_REL32 R_PPC64
pkg debug/elf, const R_PPC64_REL64 = 44
pkg debug/elf, const R_PPC64_REL64 R_PPC64
pkg debug/elf, const R_PPC64_TLS = 67
pkg debug/elf, const R_PPC64_TLS R_PPC64
pkg debug/elf, const R_PPC64_TLSGD = 107
pkg debug/elf, const R_PPC64_TLSGD R_PPC64
pkg debug/elf, const R_PPC64_TLSLD = 108
pkg debug/elf, const R_PPC64_TLSLD R_PPC64
pkg debug/elf, const R_PPC64_TOC = 51
pkg debug/elf, const R_PPC64_TOC R_PPC64
pkg debug/elf, const R_PPC64_TOC16 = 47
pkg debug/elf, const R_PPC64_TOC16 R_PPC64
pkg debug/elf, const R_PPC64_TOC16_DS = 63
pkg debug/elf, const R_PPC64_TOC16_DS R_PPC64
pkg debug/elf, const R_PPC64_TOC16_HA = 50
pkg debug/elf, const R_PPC64_TOC16_HA R_PPC64
pkg debug/elf, const R_PPC64_TOC16_HI = 49
pkg debug/elf, const R_PPC64_TOC16_HI R_PPC64
pkg debug/elf, const R_PPC64_TOC16_LO = 48
pkg debug/elf, const R_PPC64_TOC16_LO R_PPC64
pkg debug/elf, const R_PPC64_TOC16_LO_DS = 64
pkg debug/elf, const R_PPC64_TOC16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL16 = 69
pkg debug/elf, const R_PPC64_TPREL16 R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_DS = 95
pkg debug/elf, const R_PPC64_TPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HA = 72
pkg debug/elf, const R_PPC64_TPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HI = 71
pkg debug/elf, const R_PPC64_TPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHER = 97
pkg debug/elf, const R_PPC64_TPREL16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHERA = 98
pkg debug/elf, const R_PPC64_TPREL16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHEST = 99
pkg debug/elf, const R_PPC64_TPREL16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA = 100
pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_LO = 70
pkg debug/elf, const R_PPC64_TPREL16_LO R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_LO_DS = 96
pkg debug/elf, const R_PPC64_TPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL64 = 73
pkg debug/elf, const R_PPC64_TPREL64 R_PPC64
pkg debug/elf, method (R_PPC64) GoString() string
pkg debug/elf, method (R_PPC64) String() string
pkg debug/elf, type R_PPC64 int
pkg encoding/base64, const NoPadding = -1
pkg encoding/base64, const NoPadding int32
pkg encoding/base64, const StdPadding = 61
pkg encoding/base64, const StdPadding int32
pkg encoding/base64, method (Encoding) WithPadding(int32) *Encoding
pkg encoding/base64, var RawStdEncoding *Encoding
pkg encoding/base64, var RawURLEncoding *Encoding
pkg encoding/json, type UnmarshalTypeError struct, Offset int64
pkg flag, func UnquoteUsage(*Flag) (string, string)
pkg go/ast, type EmptyStmt struct, Implicit bool
pkg go/build, type Package struct, PkgTargetRoot string
pkg go/constant, const Bool = 1
pkg go/constant, const Bool Kind
pkg go/constant, const Complex = 5
pkg go/constant, const Complex Kind
pkg go/constant, const Float = 4
pkg go/constant, const Float Kind
pkg go/constant, const Int = 3
pkg go/constant, const Int Kind
pkg go/constant, const String = 2
pkg go/constant, const String Kind
pkg go/constant, const Unknown = 0
pkg go/constant, const Unknown Kind
pkg go/constant, func BinaryOp(Value, token.Token, Value) Value
pkg go/constant, func BitLen(Value) int
pkg go/constant, func BoolVal(Value) bool
pkg go/constant, func Bytes(Value) []uint8
pkg go/constant, func Compare(Value, token.Token, Value) bool
pkg go/constant, func Denom(Value) Value
pkg go/constant, func Float32Val(Value) (float32, bool)
pkg go/constant, func Float64Val(Value) (float64, bool)
pkg go/constant, func Imag(Value) Value
pkg go/constant, func Int64Val(Value) (int64, bool)
pkg go/constant, func MakeBool(bool) Value
pkg go/constant, func MakeFloat64(float64) Value
pkg go/constant, func MakeFromBytes([]uint8) Value
pkg go/constant, func MakeFromLiteral(string, token.Token, uint) Value
pkg go/constant, func MakeImag(Value) Value
pkg go/constant, func MakeInt64(int64) Value
pkg go/constant, func MakeString(string) Value
pkg go/constant, func MakeUint64(uint64) Value
pkg go/constant, func MakeUnknown() Value
pkg go/constant, func Num(Value) Value
pkg go/constant, func Real(Value) Value
pkg go/constant, func Shift(Value, token.Token, uint) Value
pkg go/constant, func Sign(Value) int
pkg go/constant, func StringVal(Value) string
pkg go/constant, func Uint64Val(Value) (uint64, bool)
pkg go/constant, func UnaryOp(token.Token, Value, uint) Value
pkg go/constant, type Kind int
pkg go/constant, type Value interface, Kind() Kind
pkg go/constant, type Value interface, String() string
pkg go/constant, type Value interface, unexported methods
pkg go/importer, func Default() types.Importer
pkg go/importer, func For(string, Lookup) types.Importer
pkg go/importer, type Lookup func(string) (io.ReadCloser, error)
pkg go/parser, func ParseExprFrom(*token.FileSet, string, interface{}, Mode) (ast.Expr, error)
pkg go/types, const Bool = 1
pkg go/types, const Bool BasicKind
pkg go/types, const Byte = 8
pkg go/types, const Byte BasicKind
pkg go/types, const Complex128 = 16
pkg go/types, const Complex128 BasicKind
pkg go/types, const Complex64 = 15
pkg go/types, const Complex64 BasicKind
pkg go/types, const FieldVal = 0
pkg go/types, const FieldVal SelectionKind
pkg go/types, const Float32 = 13
pkg go/types, const Float32 BasicKind
pkg go/types, const Float64 = 14
pkg go/types, const Float64 BasicKind
pkg go/types, const Int = 2
pkg go/types, const Int BasicKind
pkg go/types, const Int16 = 4
pkg go/types, const Int16 BasicKind
pkg go/types, const Int32 = 5
pkg go/types, const Int32 BasicKind
pkg go/types, const Int64 = 6
pkg go/types, const Int64 BasicKind
pkg go/types, const Int8 = 3
pkg go/types, const Int8 BasicKind
pkg go/types, const Invalid = 0
pkg go/types, const Invalid BasicKind
pkg go/types, const IsBoolean = 1
pkg go/types, const IsBoolean BasicInfo
pkg go/types, const IsComplex = 16
pkg go/types, const IsComplex BasicInfo
pkg go/types, const IsConstType = 59
pkg go/types, const IsConstType BasicInfo
pkg go/types, const IsFloat = 8
pkg go/types, const IsFloat BasicInfo
pkg go/types, const IsInteger = 2
pkg go/types, const IsInteger BasicInfo
pkg go/types, const IsNumeric = 26
pkg go/types, const IsNumeric BasicInfo
pkg go/types, const IsOrdered = 42
pkg go/types, const IsOrdered BasicInfo
pkg go/types, const IsString = 32
pkg go/types, const IsString BasicInfo
pkg go/types, const IsUnsigned = 4
pkg go/types, const IsUnsigned BasicInfo
pkg go/types, const IsUntyped = 64
pkg go/types, const IsUntyped BasicInfo
pkg go/types, const MethodExpr = 2
pkg go/types, const MethodExpr SelectionKind
pkg go/types, const MethodVal = 1
pkg go/types, const MethodVal SelectionKind
pkg go/types, const RecvOnly = 2
pkg go/types, const RecvOnly ChanDir
pkg go/types, const Rune = 5
pkg go/types, const Rune BasicKind
pkg go/types, const SendOnly = 1
pkg go/types, const SendOnly ChanDir
pkg go/types, const SendRecv = 0
pkg go/types, const SendRecv ChanDir
pkg go/types, const String = 17
pkg go/types, const String BasicKind
pkg go/types, const Uint = 7
pkg go/types, const Uint BasicKind
pkg go/types, const Uint16 = 9
pkg go/types, const Uint16 BasicKind
pkg go/types, const Uint32 = 10
pkg go/types, const Uint32 BasicKind
pkg go/types, const Uint64 = 11
pkg go/types, const Uint64 BasicKind
pkg go/types, const Uint8 = 8
pkg go/types, const Uint8 BasicKind
pkg go/types, const Uintptr = 12
pkg go/types, const Uintptr BasicKind
pkg go/types, const UnsafePointer = 18
pkg go/types, const UnsafePointer BasicKind
pkg go/types, const UntypedBool = 19
pkg go/types, const UntypedBool BasicKind
pkg go/types, const UntypedComplex = 23
pkg go/types, const UntypedComplex BasicKind
pkg go/types, const UntypedFloat = 22
pkg go/types, const UntypedFloat BasicKind
pkg go/types, const UntypedInt = 20
pkg go/types, const UntypedInt BasicKind
pkg go/types, const UntypedNil = 25
pkg go/types, const UntypedNil BasicKind
pkg go/types, const UntypedRune = 21
pkg go/types, const UntypedRune BasicKind
pkg go/types, const UntypedString = 24
pkg go/types, const UntypedString BasicKind
pkg go/types, func AssertableTo(*Interface, Type) bool
pkg go/types, func AssignableTo(Type, Type) bool
pkg go/types, func Comparable(Type) bool
pkg go/types, func ConvertibleTo(Type, Type) bool
pkg go/types, func DefPredeclaredTestFuncs()
pkg go/types, func Eval(*token.FileSet, *Package, token.Pos, string) (TypeAndValue, error)
pkg go/types, func ExprString(ast.Expr) string
pkg go/types, func Id(*Package, string) string
pkg go/types, func Identical(Type, Type) bool
pkg go/types, func Implements(Type, *Interface) bool
pkg go/types, func IsInterface(Type) bool
pkg go/types, func LookupFieldOrMethod(Type, bool, *Package, string) (Object, []int, bool)
pkg go/types, func MissingMethod(Type, *Interface, bool) (*Func, bool)
pkg go/types, func NewArray(Type, int64) *Array
pkg go/types, func NewChan(ChanDir, Type) *Chan
pkg go/types, func NewChecker(*Config, *token.FileSet, *Package, *Info) *Checker
pkg go/types, func NewConst(token.Pos, *Package, string, Type, constant.Value) *Const
pkg go/types, func NewField(token.Pos, *Package, string, Type, bool) *Var
pkg go/types, func NewFunc(token.Pos, *Package, string, *Signature) *Func
pkg go/types, func NewInterface([]*Func, []*Named) *Interface
pkg go/types, func NewLabel(token.Pos, *Package, string) *Label
pkg go/types, func NewMap(Type, Type) *Map
pkg go/types, func NewMethodSet(Type) *MethodSet
pkg go/types, func NewNamed(*TypeName, Type, []*Func) *Named
pkg go/types, func NewPackage(string, string) *Package
pkg go/types, func NewParam(token.Pos, *Package, string, Type) *Var
pkg go/types, func NewPkgName(token.Pos, *Package, string, *Package) *PkgName
pkg go/types, func NewPointer(Type) *Pointer
pkg go/types, func NewScope(*Scope, token.Pos, token.Pos, string) *Scope
pkg go/types, func NewSignature(*Var, *Tuple, *Tuple, bool) *Signature
pkg go/types, func NewSlice(Type) *Slice
pkg go/types, func NewStruct([]*Var, []string) *Struct
pkg go/types, func NewTuple(...*Var) *Tuple
pkg go/types, func NewTypeName(token.Pos, *Package, string, Type) *TypeName
pkg go/types, func NewVar(token.Pos, *Package, string, Type) *Var
pkg go/types, func ObjectString(Object, Qualifier) string
pkg go/types, func RelativeTo(*Package) Qualifier
pkg go/types, func SelectionString(*Selection, Qualifier) string
pkg go/types, func TypeString(Type, Qualifier) string
pkg go/types, func WriteExpr(*bytes.Buffer, ast.Expr)
pkg go/types, func WriteSignature(*bytes.Buffer, *Signature, Qualifier)
pkg go/types, func WriteType(*bytes.Buffer, Type, Qualifier)
pkg go/types, method (*Array) Elem() Type
pkg go/types, method (*Array) Len() int64
pkg go/types, method (*Array) String() string
pkg go/types, method (*Array) Underlying() Type
pkg go/types, method (*Basic) Info() BasicInfo
pkg go/types, method (*Basic) Kind() BasicKind
pkg go/types, method (*Basic) Name() string
pkg go/types, method (*Basic) String() string
pkg go/types, method (*Basic) Underlying() Type
pkg go/types, method (*Builtin) Exported() bool
pkg go/types, method (*Builtin) Id() string
pkg go/types, method (*Builtin) Name() string
pkg go/types, method (*Builtin) Parent() *Scope
pkg go/types, method (*Builtin) Pkg() *Package
pkg go/types, method (*Builtin) Pos() token.Pos
pkg go/types, method (*Builtin) String() string
pkg go/types, method (*Builtin) Type() Type
pkg go/types, method (*Chan) Dir() ChanDir
pkg go/types, method (*Chan) Elem() Type
pkg go/types, method (*Chan) String() string
pkg go/types, method (*Chan) Underlying() Type
pkg go/types, method (*Checker) Files([]*ast.File) error
pkg go/types, method (*Config) Check(string, *token.FileSet, []*ast.File, *Info) (*Package, error)
pkg go/types, method (*Const) Exported() bool
pkg go/types, method (*Const) Id() string
pkg go/types, method (*Const) Name() string
pkg go/types, method (*Const) Parent() *Scope
pkg go/types, method (*Const) Pkg() *Package
pkg go/types, method (*Const) Pos() token.Pos
pkg go/types, method (*Const) String() string
pkg go/types, method (*Const) Type() Type
pkg go/types, method (*Const) Val() constant.Value
pkg go/types, method (*Func) Exported() bool
pkg go/types, method (*Func) FullName() string
pkg go/types, method (*Func) Id() string
pkg go/types, method (*Func) Name() string
pkg go/types, method (*Func) Parent() *Scope
pkg go/types, method (*Func) Pkg() *Package
pkg go/types, method (*Func) Pos() token.Pos
pkg go/types, method (*Func) Scope() *Scope
pkg go/types, method (*Func) String() string
pkg go/types, method (*Func) Type() Type
pkg go/types, method (*Info) ObjectOf(*ast.Ident) Object
pkg go/types, method (*Info) TypeOf(ast.Expr) Type
pkg go/types, method (*Initializer) String() string
pkg go/types, method (*Interface) Complete() *Interface
pkg go/types, method (*Interface) Embedded(int) *Named
pkg go/types, method (*Interface) Empty() bool
pkg go/types, method (*Interface) ExplicitMethod(int) *Func
pkg go/types, method (*Interface) Method(int) *Func
pkg go/types, method (*Interface) NumEmbeddeds() int
pkg go/types, method (*Interface) NumExplicitMethods() int
pkg go/types, method (*Interface) NumMethods() int
pkg go/types, method (*Interface) String() string
pkg go/types, method (*Interface) Underlying() Type
pkg go/types, method (*Label) Exported() bool
pkg go/types, method (*Label) Id() string
pkg go/types, method (*Label) Name() string
pkg go/types, method (*Label) Parent() *Scope
pkg go/types, method (*Label) Pkg() *Package
pkg go/types, method (*Label) Pos() token.Pos
pkg go/types, method (*Label) String() string
pkg go/types, method (*Label) Type() Type
pkg go/types, method (*Map) Elem() Type
pkg go/types, method (*Map) Key() Type
pkg go/types, method (*Map) String() string
pkg go/types, method (*Map) Underlying() Type
pkg go/types, method (*MethodSet) At(int) *Selection
pkg go/types, method (*MethodSet) Len() int
pkg go/types, method (*MethodSet) Lookup(*Package, string) *Selection
pkg go/types, method (*MethodSet) String() string
pkg go/types, method (*Named) AddMethod(*Func)
pkg go/types, method (*Named) Method(int) *Func
pkg go/types, method (*Named) NumMethods() int
pkg go/types, method (*Named) Obj() *TypeName
pkg go/types, method (*Named) SetUnderlying(Type)
pkg go/types, method (*Named) String() string
pkg go/types, method (*Named) Underlying() Type
pkg go/types, method (*Nil) Exported() bool
pkg go/types, method (*Nil) Id() string
pkg go/types, method (*Nil) Name() string
pkg go/types, method (*Nil) Parent() *Scope
pkg go/types, method (*Nil) Pkg() *Package
pkg go/types, method (*Nil) Pos() token.Pos
pkg go/types, method (*Nil) String() string
pkg go/types, method (*Nil) Type() Type
pkg go/types, method (*Package) Complete() bool
pkg go/types, method (*Package) Imports() []*Package
pkg go/types, method (*Package) MarkComplete()
pkg go/types, method (*Package) Name() string
pkg go/types, method (*Package) Path() string
pkg go/types, method (*Package) Scope() *Scope
pkg go/types, method (*Package) SetImports([]*Package)
pkg go/types, method (*Package) String() string
pkg go/types, method (*PkgName) Exported() bool
pkg go/types, method (*PkgName) Id() string
pkg go/types, method (*PkgName) Imported() *Package
pkg go/types, method (*PkgName) Name() string
pkg go/types, method (*PkgName) Parent() *Scope
pkg go/types, method (*PkgName) Pkg() *Package
pkg go/types, method (*PkgName) Pos() token.Pos
pkg go/types, method (*PkgName) String() string
pkg go/types, method (*PkgName) Type() Type
pkg go/types, method (*Pointer) Elem() Type
pkg go/types, method (*Pointer) String() string
pkg go/types, method (*Pointer) Underlying() Type
pkg go/types, method (*Scope) Child(int) *Scope
pkg go/types, method (*Scope) Contains(token.Pos) bool
pkg go/types, method (*Scope) End() token.Pos
pkg go/types, method (*Scope) Innermost(token.Pos) *Scope
pkg go/types, method (*Scope) Insert(Object) Object
pkg go/types, method (*Scope) Len() int
pkg go/types, method (*Scope) Lookup(string) Object
pkg go/types, method (*Scope) LookupParent(string, token.Pos) (*Scope, Object)
pkg go/types, method (*Scope) Names() []string
pkg go/types, method (*Scope) NumChildren() int
pkg go/types, method (*Scope) Parent() *Scope
pkg go/types, method (*Scope) Pos() token.Pos
pkg go/types, method (*Scope) String() string
pkg go/types, method (*Scope) WriteTo(io.Writer, int, bool)
pkg go/types, method (*Selection) Index() []int
pkg go/types, method (*Selection) Indirect() bool
pkg go/types, method (*Selection) Kind() SelectionKind
pkg go/types, method (*Selection) Obj() Object
pkg go/types, method (*Selection) Recv() Type
pkg go/types, method (*Selection) String() string
pkg go/types, method (*Selection) Type() Type
pkg go/types, method (*Signature) Params() *Tuple
pkg go/types, method (*Signature) Recv() *Var
pkg go/types, method (*Signature) Results() *Tuple
pkg go/types, method (*Signature) String() string
pkg go/types, method (*Signature) Underlying() Type
pkg go/types, method (*Signature) Variadic() bool
pkg go/types, method (*Slice) Elem() Type
pkg go/types, method (*Slice) String() string
pkg go/types, method (*Slice) Underlying() Type
pkg go/types, method (*StdSizes) Alignof(Type) int64
pkg go/types, method (*StdSizes) Offsetsof([]*Var) []int64
pkg go/types, method (*StdSizes) Sizeof(Type) int64
pkg go/types, method (*Struct) Field(int) *Var
pkg go/types, method (*Struct) NumFields() int
pkg go/types, method (*Struct) String() string
pkg go/types, method (*Struct) Tag(int) string
pkg go/types, method (*Struct) Underlying() Type
pkg go/types, method (*Tuple) At(int) *Var
pkg go/types, method (*Tuple) Len() int
pkg go/types, method (*Tuple) String() string
pkg go/types, method (*Tuple) Underlying() Type
pkg go/types, method (*TypeName) Exported() bool
pkg go/types, method (*TypeName) Id() string
pkg go/types, method (*TypeName) Name() string
pkg go/types, method (*TypeName) Parent() *Scope
pkg go/types, method (*TypeName) Pkg() *Package
pkg go/types, method (*TypeName) Pos() token.Pos
pkg go/types, method (*TypeName) String() string
pkg go/types, method (*TypeName) Type() Type
pkg go/types, method (*Var) Anonymous() bool
pkg go/types, method (*Var) Exported() bool
pkg go/types, method (*Var) Id() string
pkg go/types, method (*Var) IsField() bool
pkg go/types, method (*Var) Name() string
pkg go/types, method (*Var) Parent() *Scope
pkg go/types, method (*Var) Pkg() *Package
pkg go/types, method (*Var) Pos() token.Pos
pkg go/types, method (*Var) String() string
pkg go/types, method (*Var) Type() Type
pkg go/types, method (Checker) ObjectOf(*ast.Ident) Object
pkg go/types, method (Checker) TypeOf(ast.Expr) Type
pkg go/types, method (Error) Error() string
pkg go/types, method (TypeAndValue) Addressable() bool
pkg go/types, method (TypeAndValue) Assignable() bool
pkg go/types, method (TypeAndValue) HasOk() bool
pkg go/types, method (TypeAndValue) IsBuiltin() bool
pkg go/types, method (TypeAndValue) IsNil() bool
pkg go/types, method (TypeAndValue) IsType() bool
pkg go/types, method (TypeAndValue) IsValue() bool
pkg go/types, method (TypeAndValue) IsVoid() bool
pkg go/types, type Array struct
pkg go/types, type Basic struct
pkg go/types, type BasicInfo int
pkg go/types, type BasicKind int
pkg go/types, type Builtin struct
pkg go/types, type Chan struct
pkg go/types, type ChanDir int
pkg go/types, type Checker struct
pkg go/types, type Checker struct, embedded *Info
pkg go/types, type Config struct
pkg go/types, type Config struct, DisableUnusedImportCheck bool
pkg go/types, type Config struct, Error func(error)
pkg go/types, type Config struct, FakeImportC bool
pkg go/types, type Config struct, IgnoreFuncBodies bool
pkg go/types, type Config struct, Importer Importer
pkg go/types, type Config struct, Sizes Sizes
pkg go/types, type Const struct
pkg go/types, type Error struct
pkg go/types, type Error struct, Fset *token.FileSet
pkg go/types, type Error struct, Msg string
pkg go/types, type Error struct, Pos token.Pos
pkg go/types, type Error struct, Soft bool
pkg go/types, type Func struct
pkg go/types, type Importer interface { Import }
pkg go/types, type Importer interface, Import(string) (*Package, error)
pkg go/types, type Info struct
pkg go/types, type Info struct, Defs map[*ast.Ident]Object
pkg go/types, type Info struct, Implicits map[ast.Node]Object
pkg go/types, type Info struct, InitOrder []*Initializer
pkg go/types, type Info struct, Scopes map[ast.Node]*Scope
pkg go/types, type Info struct, Selections map[*ast.SelectorExpr]*Selection
pkg go/types, type Info struct, Types map[ast.Expr]TypeAndValue
pkg go/types, type Info struct, Uses map[*ast.Ident]Object
pkg go/types, type Initializer struct
pkg go/types, type Initializer struct, Lhs []*Var
pkg go/types, type Initializer struct, Rhs ast.Expr
pkg go/types, type Interface struct
pkg go/types, type Label struct
pkg go/types, type Map struct
pkg go/types, type MethodSet struct
pkg go/types, type Named struct
pkg go/types, type Nil struct
pkg go/types, type Object interface, Exported() bool
pkg go/types, type Object interface, Id() string
pkg go/types, type Object interface, Name() string
pkg go/types, type Object interface, Parent() *Scope
pkg go/types, type Object interface, Pkg() *Package
pkg go/types, type Object interface, Pos() token.Pos
pkg go/types, type Object interface, String() string
pkg go/types, type Object interface, Type() Type
pkg go/types, type Object interface, unexported methods
pkg go/types, type Package struct
pkg go/types, type PkgName struct
pkg go/types, type Pointer struct
pkg go/types, type Qualifier func(*Package) string
pkg go/types, type Scope struct
pkg go/types, type Selection struct
pkg go/types, type SelectionKind int
pkg go/types, type Signature struct
pkg go/types, type Sizes interface { Alignof, Offsetsof, Sizeof }
pkg go/types, type Sizes interface, Alignof(Type) int64
pkg go/types, type Sizes interface, Offsetsof([]*Var) []int64
pkg go/types, type Sizes interface, Sizeof(Type) int64
pkg go/types, type Slice struct
pkg go/types, type StdSizes struct
pkg go/types, type StdSizes struct, MaxAlign int64
pkg go/types, type StdSizes struct, WordSize int64
pkg go/types, type Struct struct
pkg go/types, type Tuple struct
pkg go/types, type Type interface { String, Underlying }
pkg go/types, type Type interface, String() string
pkg go/types, type Type interface, Underlying() Type
pkg go/types, type TypeAndValue struct
pkg go/types, type TypeAndValue struct, Type Type
pkg go/types, type TypeAndValue struct, Value constant.Value
pkg go/types, type TypeName struct
pkg go/types, type Var struct
pkg go/types, var Typ []*Basic
pkg go/types, var Universe *Scope
pkg go/types, var Unsafe *Package
pkg html/template, method (*Template) Option(...string) *Template
pkg image, const YCbCrSubsampleRatio410 = 5
pkg image, const YCbCrSubsampleRatio410 YCbCrSubsampleRatio
pkg image, const YCbCrSubsampleRatio411 = 4
pkg image, const YCbCrSubsampleRatio411 YCbCrSubsampleRatio
pkg image, func NewCMYK(Rectangle) *CMYK
pkg image, method (*CMYK) At(int, int) color.Color
pkg image, method (*CMYK) Bounds() Rectangle
pkg image, method (*CMYK) CMYKAt(int, int) color.CMYK
pkg image, method (*CMYK) ColorModel() color.Model
pkg image, method (*CMYK) Opaque() bool
pkg image, method (*CMYK) PixOffset(int, int) int
pkg image, method (*CMYK) Set(int, int, color.Color)
pkg image, method (*CMYK) SetCMYK(int, int, color.CMYK)
pkg image, method (*CMYK) SubImage(Rectangle) Image
pkg image, method (Rectangle) At(int, int) color.Color
pkg image, method (Rectangle) Bounds() Rectangle
pkg image, method (Rectangle) ColorModel() color.Model
pkg image, type CMYK struct
pkg image, type CMYK struct, Pix []uint8
pkg image, type CMYK struct, Rect Rectangle
pkg image, type CMYK struct, Stride int
pkg image/color, func CMYKToRGB(uint8, uint8, uint8, uint8) (uint8, uint8, uint8)
pkg image/color, func RGBToCMYK(uint8, uint8, uint8) (uint8, uint8, uint8, uint8)
pkg image/color, method (CMYK) RGBA() (uint32, uint32, uint32, uint32)
pkg image/color, type CMYK struct
pkg image/color, type CMYK struct, C uint8
pkg image/color, type CMYK struct, K uint8
pkg image/color, type CMYK struct, M uint8
pkg image/color, type CMYK struct, Y uint8
pkg image/color, var CMYKModel Model
pkg image/gif, const DisposalBackground = 2
pkg image/gif, const DisposalBackground ideal-int
pkg image/gif, const DisposalNone = 1
pkg image/gif, const DisposalNone ideal-int
pkg image/gif, const DisposalPrevious = 3
pkg image/gif, const DisposalPrevious ideal-int
pkg image/gif, type GIF struct, BackgroundIndex uint8
pkg image/gif, type GIF struct, Config image.Config
pkg image/gif, type GIF struct, Disposal []uint8
pkg io, func CopyBuffer(Writer, Reader, []uint8) (int64, error)
pkg log, const LUTC = 32
pkg log, const LUTC ideal-int
pkg log, func Output(int, string) error
pkg log, method (*Logger) SetOutput(io.Writer)
pkg math/big, const Above = 1
pkg math/big, const Above Accuracy
pkg math/big, const AwayFromZero = 3
pkg math/big, const AwayFromZero RoundingMode
pkg math/big, const Below = -1
pkg math/big, const Below Accuracy
pkg math/big, const Exact = 0
pkg math/big, const Exact Accuracy
pkg math/big, const MaxExp = 2147483647
pkg math/big, const MaxExp ideal-int
pkg math/big, const MaxPrec = 4294967295
pkg math/big, const MaxPrec ideal-int
pkg math/big, const MinExp = -2147483648
pkg math/big, const MinExp ideal-int
pkg math/big, const ToNearestAway = 1
pkg math/big, const ToNearestAway RoundingMode
pkg math/big, const ToNearestEven = 0
pkg math/big, const ToNearestEven RoundingMode
pkg math/big, const ToNegativeInf = 4
pkg math/big, const ToNegativeInf RoundingMode
pkg math/big, const ToPositiveInf = 5
pkg math/big, const ToPositiveInf RoundingMode
pkg math/big, const ToZero = 2
pkg math/big, const ToZero RoundingMode
pkg math/big, func Jacobi(*Int, *Int) int
pkg math/big, func NewFloat(float64) *Float
pkg math/big, func ParseFloat(string, int, uint, RoundingMode) (*Float, int, error)
pkg math/big, method (*Float) Abs(*Float) *Float
pkg math/big, method (*Float) Acc() Accuracy
pkg math/big, method (*Float) Add(*Float, *Float) *Float
pkg math/big, method (*Float) Append([]uint8, uint8, int) []uint8
pkg math/big, method (*Float) Cmp(*Float) int
pkg math/big, method (*Float) Copy(*Float) *Float
pkg math/big, method (*Float) Float32() (float32, Accuracy)
pkg math/big, method (*Float) Float64() (float64, Accuracy)
pkg math/big, method (*Float) Format(fmt.State, int32)
pkg math/big, method (*Float) Int(*Int) (*Int, Accuracy)
pkg math/big, method (*Float) Int64() (int64, Accuracy)
pkg math/big, method (*Float) IsInf() bool
pkg math/big, method (*Float) IsInt() bool
pkg math/big, method (*Float) MantExp(*Float) int
pkg math/big, method (*Float) MinPrec() uint
pkg math/big, method (*Float) Mode() RoundingMode
pkg math/big, method (*Float) Mul(*Float, *Float) *Float
pkg math/big, method (*Float) Neg(*Float) *Float
pkg math/big, method (*Float) Parse(string, int) (*Float, int, error)
pkg math/big, method (*Float) Prec() uint
pkg math/big, method (*Float) Quo(*Float, *Float) *Float
pkg math/big, method (*Float) Rat(*Rat) (*Rat, Accuracy)
pkg math/big, method (*Float) Set(*Float) *Float
pkg math/big, method (*Float) SetFloat64(float64) *Float
pkg math/big, method (*Float) SetInf(bool) *Float
pkg math/big, method (*Float) SetInt(*Int) *Float
pkg math/big, method (*Float) SetInt64(int64) *Float
pkg math/big, method (*Float) SetMantExp(*Float, int) *Float
pkg math/big, method (*Float) SetMode(RoundingMode) *Float
pkg math/big, method (*Float) SetPrec(uint) *Float
pkg math/big, method (*Float) SetRat(*Rat) *Float
pkg math/big, method (*Float) SetString(string) (*Float, bool)
pkg math/big, method (*Float) SetUint64(uint64) *Float
pkg math/big, method (*Float) Sign() int
pkg math/big, method (*Float) Signbit() bool
pkg math/big, method (*Float) String() string
pkg math/big, method (*Float) Sub(*Float, *Float) *Float
pkg math/big, method (*Float) Text(uint8, int) string
pkg math/big, method (*Float) Uint64() (uint64, Accuracy)
pkg math/big, method (*Int) ModSqrt(*Int, *Int) *Int
pkg math/big, method (Accuracy) String() string
pkg math/big, method (ErrNaN) Error() string
pkg math/big, method (RoundingMode) String() string
pkg math/big, type Accuracy int8
pkg math/big, type ErrNaN struct
pkg math/big, type Float struct
pkg math/big, type RoundingMode uint8
pkg mime, const BEncoding = 98
pkg mime, const BEncoding WordEncoder
pkg mime, const QEncoding = 113
pkg mime, const QEncoding WordEncoder
pkg mime, func ExtensionsByType(string) ([]string, error)
pkg mime, method (*WordDecoder) Decode(string) (string, error)
pkg mime, method (*WordDecoder) DecodeHeader(string) (string, error)
pkg mime, method (WordEncoder) Encode(string, string) string
pkg mime, type WordDecoder struct
pkg mime, type WordDecoder struct, CharsetReader func(string, io.Reader) (io.Reader, error)
pkg mime, type WordEncoder uint8
pkg mime/quotedprintable, func NewReader(io.Reader) *Reader
pkg mime/quotedprintable, func NewWriter(io.Writer) *Writer
pkg mime/quotedprintable, method (*Reader) Read([]uint8) (int, error)
pkg mime/quotedprintable, method (*Writer) Close() error
pkg mime/quotedprintable, method (*Writer) Write([]uint8) (int, error)
pkg mime/quotedprintable, type Reader struct
pkg mime/quotedprintable, type Writer struct
pkg mime/quotedprintable, type Writer struct, Binary bool
pkg net, type Dialer struct, FallbackDelay time.Duration
pkg net, type OpError struct, Source Addr
pkg net/http, type Request struct, Cancel <-chan struct
pkg net/http/fcgi, var ErrConnClosed error
pkg net/http/fcgi, var ErrRequestAborted error
pkg net/http/pprof, func Trace(http.ResponseWriter, *http.Request)
pkg net/mail, method (*AddressParser) Parse(string) (*Address, error)
pkg net/mail, method (*AddressParser) ParseList(string) ([]*Address, error)
pkg net/mail, type AddressParser struct
pkg net/mail, type AddressParser struct, WordDecoder *mime.WordDecoder
pkg net/smtp, method (*Client) TLSConnectionState() (tls.ConnectionState, bool)
pkg net/url, method (*URL) EscapedPath() string
pkg net/url, type URL struct, RawPath string
pkg os, func LookupEnv(string) (string, bool)
pkg os/signal, func Ignore(...os.Signal)
pkg os/signal, func Reset(...os.Signal)
pkg reflect, func ArrayOf(int, Type) Type
pkg reflect, func FuncOf([]Type, []Type, bool) Type
pkg runtime, func ReadTrace() []uint8
pkg runtime, func StartTrace() error
pkg runtime, func StopTrace()
pkg runtime/trace, func Start(io.Writer) error
pkg runtime/trace, func Stop()
pkg strings, func Compare(string, string) int
pkg strings, func LastIndexByte(string, uint8) int
pkg strings, method (*Reader) Size() int64
pkg syscall (darwin-386), type SysProcAttr struct, Ctty int
pkg syscall (darwin-386), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-386), type SysProcAttr struct, Pgid int
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (darwin-amd64), type SysProcAttr struct, Ctty int
pkg syscall (darwin-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-amd64), type SysProcAttr struct, Pgid int
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-386), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-386), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-arm), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-arm), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-arm), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-386), type SysProcAttr struct, Foreground bool
pkg syscall (linux-386), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-386), type SysProcAttr struct, Pgid int
pkg syscall (linux-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-386-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (linux-amd64), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-amd64), type SysProcAttr struct, Pgid int
pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-amd64-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-arm), type SysProcAttr struct, Foreground bool
pkg syscall (linux-arm), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-arm), type SysProcAttr struct, Pgid int
pkg syscall (linux-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-arm-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool
pkg syscall (linux-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-386), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-386), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-arm), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-arm), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-arm), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-386), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-386), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg text/template, method (*Template) DefinedTemplates() string
pkg text/template, method (*Template) Option(...string) *Template
pkg time, method (Time) AppendFormat([]uint8, string) []uint8
pkg unicode, const Version = "8.0.0"
pkg unicode, var Ahom *RangeTable
pkg unicode, var Anatolian_Hieroglyphs *RangeTable
pkg unicode, var Hatran *RangeTable
pkg unicode, var Multani *RangeTable
pkg unicode, var Old_Hungarian *RangeTable
pkg unicode, var SignWriting *RangeTable

View File

@ -1,957 +0,0 @@
pkg archive/zip, method (*Writer) SetOffset(int64)
pkg bufio, method (*Reader) Discard(int) (int, error)
pkg bufio, method (ReadWriter) Discard(int) (int, error)
pkg bytes, func LastIndexByte([]uint8, uint8) int
pkg bytes, method (*Buffer) Cap() int
pkg bytes, method (*Reader) Size() int64
pkg crypto, type Decrypter interface { Decrypt, Public }
pkg crypto, type Decrypter interface, Decrypt(io.Reader, []uint8, DecrypterOpts) ([]uint8, error)
pkg crypto, type Decrypter interface, Public() PublicKey
pkg crypto, type DecrypterOpts interface {}
pkg crypto/elliptic, type CurveParams struct, Name string
pkg crypto/rsa, method (*PrivateKey) Decrypt(io.Reader, []uint8, crypto.DecrypterOpts) ([]uint8, error)
pkg crypto/rsa, type OAEPOptions struct
pkg crypto/rsa, type OAEPOptions struct, Hash crypto.Hash
pkg crypto/rsa, type OAEPOptions struct, Label []uint8
pkg crypto/rsa, type PKCS1v15DecryptOptions struct
pkg crypto/rsa, type PKCS1v15DecryptOptions struct, SessionKeyLen int
pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 49196
pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 uint16
pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 49200
pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16
pkg crypto/tls, method (*Config) SetSessionTicketKeys([][32]uint8)
pkg crypto/tls, type Certificate struct, SignedCertificateTimestamps [][]uint8
pkg crypto/tls, type ConnectionState struct, OCSPResponse []uint8
pkg crypto/tls, type ConnectionState struct, SignedCertificateTimestamps [][]uint8
pkg crypto/x509, method (*CertificateRequest) CheckSignature() error
pkg crypto/x509, type Certificate struct, UnhandledCriticalExtensions []asn1.ObjectIdentifier
pkg crypto/x509/pkix, type Name struct, ExtraNames []AttributeTypeAndValue
pkg database/sql, method (*DB) Stats() DBStats
pkg database/sql, type DBStats struct
pkg database/sql, type DBStats struct, OpenConnections int
pkg debug/dwarf, const ClassAddress = 1
pkg debug/dwarf, const ClassAddress Class
pkg debug/dwarf, const ClassBlock = 2
pkg debug/dwarf, const ClassBlock Class
pkg debug/dwarf, const ClassConstant = 3
pkg debug/dwarf, const ClassConstant Class
pkg debug/dwarf, const ClassExprLoc = 4
pkg debug/dwarf, const ClassExprLoc Class
pkg debug/dwarf, const ClassFlag = 5
pkg debug/dwarf, const ClassFlag Class
pkg debug/dwarf, const ClassLinePtr = 6
pkg debug/dwarf, const ClassLinePtr Class
pkg debug/dwarf, const ClassLocListPtr = 7
pkg debug/dwarf, const ClassLocListPtr Class
pkg debug/dwarf, const ClassMacPtr = 8
pkg debug/dwarf, const ClassMacPtr Class
pkg debug/dwarf, const ClassRangeListPtr = 9
pkg debug/dwarf, const ClassRangeListPtr Class
pkg debug/dwarf, const ClassReference = 10
pkg debug/dwarf, const ClassReference Class
pkg debug/dwarf, const ClassReferenceAlt = 13
pkg debug/dwarf, const ClassReferenceAlt Class
pkg debug/dwarf, const ClassReferenceSig = 11
pkg debug/dwarf, const ClassReferenceSig Class
pkg debug/dwarf, const ClassString = 12
pkg debug/dwarf, const ClassString Class
pkg debug/dwarf, const ClassStringAlt = 14
pkg debug/dwarf, const ClassStringAlt Class
pkg debug/dwarf, method (*Data) LineReader(*Entry) (*LineReader, error)
pkg debug/dwarf, method (*Entry) AttrField(Attr) *Field
pkg debug/dwarf, method (*LineReader) Next(*LineEntry) error
pkg debug/dwarf, method (*LineReader) Reset()
pkg debug/dwarf, method (*LineReader) Seek(LineReaderPos)
pkg debug/dwarf, method (*LineReader) SeekPC(uint64, *LineEntry) error
pkg debug/dwarf, method (*LineReader) Tell() LineReaderPos
pkg debug/dwarf, method (*Reader) AddressSize() int
pkg debug/dwarf, method (Class) GoString() string
pkg debug/dwarf, method (Class) String() string
pkg debug/dwarf, type Class int
pkg debug/dwarf, type Field struct, Class Class
pkg debug/dwarf, type LineEntry struct
pkg debug/dwarf, type LineEntry struct, Address uint64
pkg debug/dwarf, type LineEntry struct, BasicBlock bool
pkg debug/dwarf, type LineEntry struct, Column int
pkg debug/dwarf, type LineEntry struct, Discriminator int
pkg debug/dwarf, type LineEntry struct, EndSequence bool
pkg debug/dwarf, type LineEntry struct, EpilogueBegin bool
pkg debug/dwarf, type LineEntry struct, File *LineFile
pkg debug/dwarf, type LineEntry struct, ISA int
pkg debug/dwarf, type LineEntry struct, IsStmt bool
pkg debug/dwarf, type LineEntry struct, Line int
pkg debug/dwarf, type LineEntry struct, OpIndex int
pkg debug/dwarf, type LineEntry struct, PrologueEnd bool
pkg debug/dwarf, type LineFile struct
pkg debug/dwarf, type LineFile struct, Length int
pkg debug/dwarf, type LineFile struct, Mtime uint64
pkg debug/dwarf, type LineFile struct, Name string
pkg debug/dwarf, type LineReader struct
pkg debug/dwarf, type LineReaderPos struct
pkg debug/dwarf, var ErrUnknownPC error
pkg debug/elf, const R_PPC64_ADDR14 = 7
pkg debug/elf, const R_PPC64_ADDR14 R_PPC64
pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN = 9
pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN R_PPC64
pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN = 8
pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN R_PPC64
pkg debug/elf, const R_PPC64_ADDR16 = 3
pkg debug/elf, const R_PPC64_ADDR16 R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_DS = 56
pkg debug/elf, const R_PPC64_ADDR16_DS R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HA = 6
pkg debug/elf, const R_PPC64_ADDR16_HA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HI = 5
pkg debug/elf, const R_PPC64_ADDR16_HI R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHER = 39
pkg debug/elf, const R_PPC64_ADDR16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHERA = 40
pkg debug/elf, const R_PPC64_ADDR16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHEST = 41
pkg debug/elf, const R_PPC64_ADDR16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA = 42
pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_LO = 4
pkg debug/elf, const R_PPC64_ADDR16_LO R_PPC64
pkg debug/elf, const R_PPC64_ADDR16_LO_DS = 57
pkg debug/elf, const R_PPC64_ADDR16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_ADDR24 = 2
pkg debug/elf, const R_PPC64_ADDR24 R_PPC64
pkg debug/elf, const R_PPC64_ADDR32 = 1
pkg debug/elf, const R_PPC64_ADDR32 R_PPC64
pkg debug/elf, const R_PPC64_ADDR64 = 38
pkg debug/elf, const R_PPC64_ADDR64 R_PPC64
pkg debug/elf, const R_PPC64_DTPMOD64 = 68
pkg debug/elf, const R_PPC64_DTPMOD64 R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16 = 74
pkg debug/elf, const R_PPC64_DTPREL16 R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_DS = 101
pkg debug/elf, const R_PPC64_DTPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HA = 77
pkg debug/elf, const R_PPC64_DTPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HI = 76
pkg debug/elf, const R_PPC64_DTPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHER = 103
pkg debug/elf, const R_PPC64_DTPREL16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA = 104
pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST = 105
pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA = 106
pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_LO = 75
pkg debug/elf, const R_PPC64_DTPREL16_LO R_PPC64
pkg debug/elf, const R_PPC64_DTPREL16_LO_DS = 102
pkg debug/elf, const R_PPC64_DTPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_DTPREL64 = 78
pkg debug/elf, const R_PPC64_DTPREL64 R_PPC64
pkg debug/elf, const R_PPC64_GOT16 = 14
pkg debug/elf, const R_PPC64_GOT16 R_PPC64
pkg debug/elf, const R_PPC64_GOT16_DS = 58
pkg debug/elf, const R_PPC64_GOT16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT16_HA = 17
pkg debug/elf, const R_PPC64_GOT16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT16_HI = 16
pkg debug/elf, const R_PPC64_GOT16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT16_LO = 15
pkg debug/elf, const R_PPC64_GOT16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT16_LO_DS = 59
pkg debug/elf, const R_PPC64_GOT16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS = 91
pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA = 94
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI = 93
pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS = 92
pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16 = 79
pkg debug/elf, const R_PPC64_GOT_TLSGD16 R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA = 82
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI = 81
pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO = 80
pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16 = 83
pkg debug/elf, const R_PPC64_GOT_TLSLD16 R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA = 86
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI = 85
pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO = 84
pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_DS = 87
pkg debug/elf, const R_PPC64_GOT_TPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_HA = 90
pkg debug/elf, const R_PPC64_GOT_TPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_HI = 89
pkg debug/elf, const R_PPC64_GOT_TPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS = 88
pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_JMP_SLOT = 21
pkg debug/elf, const R_PPC64_JMP_SLOT R_PPC64
pkg debug/elf, const R_PPC64_NONE = 0
pkg debug/elf, const R_PPC64_NONE R_PPC64
pkg debug/elf, const R_PPC64_REL14 = 11
pkg debug/elf, const R_PPC64_REL14 R_PPC64
pkg debug/elf, const R_PPC64_REL14_BRNTAKEN = 13
pkg debug/elf, const R_PPC64_REL14_BRNTAKEN R_PPC64
pkg debug/elf, const R_PPC64_REL14_BRTAKEN = 12
pkg debug/elf, const R_PPC64_REL14_BRTAKEN R_PPC64
pkg debug/elf, const R_PPC64_REL16 = 249
pkg debug/elf, const R_PPC64_REL16 R_PPC64
pkg debug/elf, const R_PPC64_REL16_HA = 252
pkg debug/elf, const R_PPC64_REL16_HA R_PPC64
pkg debug/elf, const R_PPC64_REL16_HI = 251
pkg debug/elf, const R_PPC64_REL16_HI R_PPC64
pkg debug/elf, const R_PPC64_REL16_LO = 250
pkg debug/elf, const R_PPC64_REL16_LO R_PPC64
pkg debug/elf, const R_PPC64_REL24 = 10
pkg debug/elf, const R_PPC64_REL24 R_PPC64
pkg debug/elf, const R_PPC64_REL32 = 26
pkg debug/elf, const R_PPC64_REL32 R_PPC64
pkg debug/elf, const R_PPC64_REL64 = 44
pkg debug/elf, const R_PPC64_REL64 R_PPC64
pkg debug/elf, const R_PPC64_TLS = 67
pkg debug/elf, const R_PPC64_TLS R_PPC64
pkg debug/elf, const R_PPC64_TLSGD = 107
pkg debug/elf, const R_PPC64_TLSGD R_PPC64
pkg debug/elf, const R_PPC64_TLSLD = 108
pkg debug/elf, const R_PPC64_TLSLD R_PPC64
pkg debug/elf, const R_PPC64_TOC = 51
pkg debug/elf, const R_PPC64_TOC R_PPC64
pkg debug/elf, const R_PPC64_TOC16 = 47
pkg debug/elf, const R_PPC64_TOC16 R_PPC64
pkg debug/elf, const R_PPC64_TOC16_DS = 63
pkg debug/elf, const R_PPC64_TOC16_DS R_PPC64
pkg debug/elf, const R_PPC64_TOC16_HA = 50
pkg debug/elf, const R_PPC64_TOC16_HA R_PPC64
pkg debug/elf, const R_PPC64_TOC16_HI = 49
pkg debug/elf, const R_PPC64_TOC16_HI R_PPC64
pkg debug/elf, const R_PPC64_TOC16_LO = 48
pkg debug/elf, const R_PPC64_TOC16_LO R_PPC64
pkg debug/elf, const R_PPC64_TOC16_LO_DS = 64
pkg debug/elf, const R_PPC64_TOC16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL16 = 69
pkg debug/elf, const R_PPC64_TPREL16 R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_DS = 95
pkg debug/elf, const R_PPC64_TPREL16_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HA = 72
pkg debug/elf, const R_PPC64_TPREL16_HA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HI = 71
pkg debug/elf, const R_PPC64_TPREL16_HI R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHER = 97
pkg debug/elf, const R_PPC64_TPREL16_HIGHER R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHERA = 98
pkg debug/elf, const R_PPC64_TPREL16_HIGHERA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHEST = 99
pkg debug/elf, const R_PPC64_TPREL16_HIGHEST R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA = 100
pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_LO = 70
pkg debug/elf, const R_PPC64_TPREL16_LO R_PPC64
pkg debug/elf, const R_PPC64_TPREL16_LO_DS = 96
pkg debug/elf, const R_PPC64_TPREL16_LO_DS R_PPC64
pkg debug/elf, const R_PPC64_TPREL64 = 73
pkg debug/elf, const R_PPC64_TPREL64 R_PPC64
pkg debug/elf, method (R_PPC64) GoString() string
pkg debug/elf, method (R_PPC64) String() string
pkg debug/elf, type R_PPC64 int
pkg encoding/base64, const NoPadding = -1
pkg encoding/base64, const NoPadding int32
pkg encoding/base64, const StdPadding = 61
pkg encoding/base64, const StdPadding int32
pkg encoding/base64, method (Encoding) WithPadding(int32) *Encoding
pkg encoding/base64, var RawStdEncoding *Encoding
pkg encoding/base64, var RawURLEncoding *Encoding
pkg encoding/json, type UnmarshalTypeError struct, Offset int64
pkg flag, func UnquoteUsage(*Flag) (string, string)
pkg go/ast, type EmptyStmt struct, Implicit bool
pkg go/build, type Package struct, PkgTargetRoot string
pkg go/constant, const Bool = 1
pkg go/constant, const Bool Kind
pkg go/constant, const Complex = 5
pkg go/constant, const Complex Kind
pkg go/constant, const Float = 4
pkg go/constant, const Float Kind
pkg go/constant, const Int = 3
pkg go/constant, const Int Kind
pkg go/constant, const String = 2
pkg go/constant, const String Kind
pkg go/constant, const Unknown = 0
pkg go/constant, const Unknown Kind
pkg go/constant, func BinaryOp(Value, token.Token, Value) Value
pkg go/constant, func BitLen(Value) int
pkg go/constant, func BoolVal(Value) bool
pkg go/constant, func Bytes(Value) []uint8
pkg go/constant, func Compare(Value, token.Token, Value) bool
pkg go/constant, func Denom(Value) Value
pkg go/constant, func Float32Val(Value) (float32, bool)
pkg go/constant, func Float64Val(Value) (float64, bool)
pkg go/constant, func Imag(Value) Value
pkg go/constant, func Int64Val(Value) (int64, bool)
pkg go/constant, func MakeBool(bool) Value
pkg go/constant, func MakeFloat64(float64) Value
pkg go/constant, func MakeFromBytes([]uint8) Value
pkg go/constant, func MakeFromLiteral(string, token.Token, uint) Value
pkg go/constant, func MakeImag(Value) Value
pkg go/constant, func MakeInt64(int64) Value
pkg go/constant, func MakeString(string) Value
pkg go/constant, func MakeUint64(uint64) Value
pkg go/constant, func MakeUnknown() Value
pkg go/constant, func Num(Value) Value
pkg go/constant, func Real(Value) Value
pkg go/constant, func Shift(Value, token.Token, uint) Value
pkg go/constant, func Sign(Value) int
pkg go/constant, func StringVal(Value) string
pkg go/constant, func Uint64Val(Value) (uint64, bool)
pkg go/constant, func UnaryOp(token.Token, Value, uint) Value
pkg go/constant, type Kind int
pkg go/constant, type Value interface, Kind() Kind
pkg go/constant, type Value interface, String() string
pkg go/constant, type Value interface, unexported methods
pkg go/importer, func Default() types.Importer
pkg go/importer, func For(string, Lookup) types.Importer
pkg go/importer, type Lookup func(string) (io.ReadCloser, error)
pkg go/types, const Bool = 1
pkg go/types, const Bool BasicKind
pkg go/types, const Byte = 8
pkg go/types, const Byte BasicKind
pkg go/types, const Complex128 = 16
pkg go/types, const Complex128 BasicKind
pkg go/types, const Complex64 = 15
pkg go/types, const Complex64 BasicKind
pkg go/types, const FieldVal = 0
pkg go/types, const FieldVal SelectionKind
pkg go/types, const Float32 = 13
pkg go/types, const Float32 BasicKind
pkg go/types, const Float64 = 14
pkg go/types, const Float64 BasicKind
pkg go/types, const Int = 2
pkg go/types, const Int BasicKind
pkg go/types, const Int16 = 4
pkg go/types, const Int16 BasicKind
pkg go/types, const Int32 = 5
pkg go/types, const Int32 BasicKind
pkg go/types, const Int64 = 6
pkg go/types, const Int64 BasicKind
pkg go/types, const Int8 = 3
pkg go/types, const Int8 BasicKind
pkg go/types, const Invalid = 0
pkg go/types, const Invalid BasicKind
pkg go/types, const IsBoolean = 1
pkg go/types, const IsBoolean BasicInfo
pkg go/types, const IsComplex = 16
pkg go/types, const IsComplex BasicInfo
pkg go/types, const IsConstType = 59
pkg go/types, const IsConstType BasicInfo
pkg go/types, const IsFloat = 8
pkg go/types, const IsFloat BasicInfo
pkg go/types, const IsInteger = 2
pkg go/types, const IsInteger BasicInfo
pkg go/types, const IsNumeric = 26
pkg go/types, const IsNumeric BasicInfo
pkg go/types, const IsOrdered = 42
pkg go/types, const IsOrdered BasicInfo
pkg go/types, const IsString = 32
pkg go/types, const IsString BasicInfo
pkg go/types, const IsUnsigned = 4
pkg go/types, const IsUnsigned BasicInfo
pkg go/types, const IsUntyped = 64
pkg go/types, const IsUntyped BasicInfo
pkg go/types, const MethodExpr = 2
pkg go/types, const MethodExpr SelectionKind
pkg go/types, const MethodVal = 1
pkg go/types, const MethodVal SelectionKind
pkg go/types, const RecvOnly = 2
pkg go/types, const RecvOnly ChanDir
pkg go/types, const Rune = 5
pkg go/types, const Rune BasicKind
pkg go/types, const SendOnly = 1
pkg go/types, const SendOnly ChanDir
pkg go/types, const SendRecv = 0
pkg go/types, const SendRecv ChanDir
pkg go/types, const String = 17
pkg go/types, const String BasicKind
pkg go/types, const Uint = 7
pkg go/types, const Uint BasicKind
pkg go/types, const Uint16 = 9
pkg go/types, const Uint16 BasicKind
pkg go/types, const Uint32 = 10
pkg go/types, const Uint32 BasicKind
pkg go/types, const Uint64 = 11
pkg go/types, const Uint64 BasicKind
pkg go/types, const Uint8 = 8
pkg go/types, const Uint8 BasicKind
pkg go/types, const Uintptr = 12
pkg go/types, const Uintptr BasicKind
pkg go/types, const UnsafePointer = 18
pkg go/types, const UnsafePointer BasicKind
pkg go/types, const UntypedBool = 19
pkg go/types, const UntypedBool BasicKind
pkg go/types, const UntypedComplex = 23
pkg go/types, const UntypedComplex BasicKind
pkg go/types, const UntypedFloat = 22
pkg go/types, const UntypedFloat BasicKind
pkg go/types, const UntypedInt = 20
pkg go/types, const UntypedInt BasicKind
pkg go/types, const UntypedNil = 25
pkg go/types, const UntypedNil BasicKind
pkg go/types, const UntypedRune = 21
pkg go/types, const UntypedRune BasicKind
pkg go/types, const UntypedString = 24
pkg go/types, const UntypedString BasicKind
pkg go/types, func AssertableTo(*Interface, Type) bool
pkg go/types, func AssignableTo(Type, Type) bool
pkg go/types, func Check(string, *token.FileSet, []*ast.File) (*Package, error)
pkg go/types, func Comparable(Type) bool
pkg go/types, func ConvertibleTo(Type, Type) bool
pkg go/types, func DefPredeclaredTestFuncs()
pkg go/types, func Eval(string, *Package, *Scope) (TypeAndValue, error)
pkg go/types, func EvalNode(*token.FileSet, ast.Expr, *Package, *Scope) (TypeAndValue, error)
pkg go/types, func ExprString(ast.Expr) string
pkg go/types, func Id(*Package, string) string
pkg go/types, func Identical(Type, Type) bool
pkg go/types, func Implements(Type, *Interface) bool
pkg go/types, func IsInterface(Type) bool
pkg go/types, func LookupFieldOrMethod(Type, bool, *Package, string) (Object, []int, bool)
pkg go/types, func MissingMethod(Type, *Interface, bool) (*Func, bool)
pkg go/types, func New(string) Type
pkg go/types, func NewArray(Type, int64) *Array
pkg go/types, func NewChan(ChanDir, Type) *Chan
pkg go/types, func NewChecker(*Config, *token.FileSet, *Package, *Info) *Checker
pkg go/types, func NewConst(token.Pos, *Package, string, Type, constant.Value) *Const
pkg go/types, func NewConst(token.Pos, *Package, string, Type, exact.Value) *Const
pkg go/types, func NewField(token.Pos, *Package, string, Type, bool) *Var
pkg go/types, func NewFunc(token.Pos, *Package, string, *Signature) *Func
pkg go/types, func NewInterface([]*Func, []*Named) *Interface
pkg go/types, func NewLabel(token.Pos, *Package, string) *Label
pkg go/types, func NewMap(Type, Type) *Map
pkg go/types, func NewMethodSet(Type) *MethodSet
pkg go/types, func NewNamed(*TypeName, Type, []*Func) *Named
pkg go/types, func NewPackage(string, string) *Package
pkg go/types, func NewParam(token.Pos, *Package, string, Type) *Var
pkg go/types, func NewPkgName(token.Pos, *Package, string, *Package) *PkgName
pkg go/types, func NewPointer(Type) *Pointer
pkg go/types, func NewScope(*Scope, string) *Scope
pkg go/types, func NewSignature(*Scope, *Var, *Tuple, *Tuple, bool) *Signature
pkg go/types, func NewSlice(Type) *Slice
pkg go/types, func NewStruct([]*Var, []string) *Struct
pkg go/types, func NewTuple(...*Var) *Tuple
pkg go/types, func NewTypeName(token.Pos, *Package, string, Type) *TypeName
pkg go/types, func NewVar(token.Pos, *Package, string, Type) *Var
pkg go/types, func ObjectString(*Package, Object) string
pkg go/types, func SelectionString(*Package, *Selection) string
pkg go/types, func TypeString(*Package, Type) string
pkg go/types, func WriteExpr(*bytes.Buffer, ast.Expr)
pkg go/types, func WriteSignature(*bytes.Buffer, *Package, *Signature)
pkg go/types, func WriteType(*bytes.Buffer, *Package, Type)
pkg go/types, method (*Array) Elem() Type
pkg go/types, method (*Array) Len() int64
pkg go/types, method (*Array) String() string
pkg go/types, method (*Array) Underlying() Type
pkg go/types, method (*Basic) Info() BasicInfo
pkg go/types, method (*Basic) Kind() BasicKind
pkg go/types, method (*Basic) Name() string
pkg go/types, method (*Basic) String() string
pkg go/types, method (*Basic) Underlying() Type
pkg go/types, method (*Builtin) Exported() bool
pkg go/types, method (*Builtin) Id() string
pkg go/types, method (*Builtin) Name() string
pkg go/types, method (*Builtin) Parent() *Scope
pkg go/types, method (*Builtin) Pkg() *Package
pkg go/types, method (*Builtin) Pos() token.Pos
pkg go/types, method (*Builtin) String() string
pkg go/types, method (*Builtin) Type() Type
pkg go/types, method (*Chan) Dir() ChanDir
pkg go/types, method (*Chan) Elem() Type
pkg go/types, method (*Chan) String() string
pkg go/types, method (*Chan) Underlying() Type
pkg go/types, method (*Checker) Files([]*ast.File) error
pkg go/types, method (*Config) Check(string, *token.FileSet, []*ast.File, *Info) (*Package, error)
pkg go/types, method (*Const) Exported() bool
pkg go/types, method (*Const) Id() string
pkg go/types, method (*Const) Name() string
pkg go/types, method (*Const) Parent() *Scope
pkg go/types, method (*Const) Pkg() *Package
pkg go/types, method (*Const) Pos() token.Pos
pkg go/types, method (*Const) String() string
pkg go/types, method (*Const) Type() Type
pkg go/types, method (*Const) Val() constant.Value
pkg go/types, method (*Const) Val() exact.Value
pkg go/types, method (*Func) Exported() bool
pkg go/types, method (*Func) FullName() string
pkg go/types, method (*Func) Id() string
pkg go/types, method (*Func) Name() string
pkg go/types, method (*Func) Parent() *Scope
pkg go/types, method (*Func) Pkg() *Package
pkg go/types, method (*Func) Pos() token.Pos
pkg go/types, method (*Func) Scope() *Scope
pkg go/types, method (*Func) String() string
pkg go/types, method (*Func) Type() Type
pkg go/types, method (*Info) ObjectOf(*ast.Ident) Object
pkg go/types, method (*Info) TypeOf(ast.Expr) Type
pkg go/types, method (*Initializer) String() string
pkg go/types, method (*Interface) Complete() *Interface
pkg go/types, method (*Interface) Embedded(int) *Named
pkg go/types, method (*Interface) Empty() bool
pkg go/types, method (*Interface) ExplicitMethod(int) *Func
pkg go/types, method (*Interface) Method(int) *Func
pkg go/types, method (*Interface) NumEmbeddeds() int
pkg go/types, method (*Interface) NumExplicitMethods() int
pkg go/types, method (*Interface) NumMethods() int
pkg go/types, method (*Interface) String() string
pkg go/types, method (*Interface) Underlying() Type
pkg go/types, method (*Label) Exported() bool
pkg go/types, method (*Label) Id() string
pkg go/types, method (*Label) Name() string
pkg go/types, method (*Label) Parent() *Scope
pkg go/types, method (*Label) Pkg() *Package
pkg go/types, method (*Label) Pos() token.Pos
pkg go/types, method (*Label) String() string
pkg go/types, method (*Label) Type() Type
pkg go/types, method (*Map) Elem() Type
pkg go/types, method (*Map) Key() Type
pkg go/types, method (*Map) String() string
pkg go/types, method (*Map) Underlying() Type
pkg go/types, method (*MethodSet) At(int) *Selection
pkg go/types, method (*MethodSet) Len() int
pkg go/types, method (*MethodSet) Lookup(*Package, string) *Selection
pkg go/types, method (*MethodSet) String() string
pkg go/types, method (*MethodSetCache) MethodSet(Type) *MethodSet
pkg go/types, method (*Named) AddMethod(*Func)
pkg go/types, method (*Named) Method(int) *Func
pkg go/types, method (*Named) NumMethods() int
pkg go/types, method (*Named) Obj() *TypeName
pkg go/types, method (*Named) SetUnderlying(Type)
pkg go/types, method (*Named) String() string
pkg go/types, method (*Named) Underlying() Type
pkg go/types, method (*Nil) Exported() bool
pkg go/types, method (*Nil) Id() string
pkg go/types, method (*Nil) Name() string
pkg go/types, method (*Nil) Parent() *Scope
pkg go/types, method (*Nil) Pkg() *Package
pkg go/types, method (*Nil) Pos() token.Pos
pkg go/types, method (*Nil) String() string
pkg go/types, method (*Nil) Type() Type
pkg go/types, method (*Package) Complete() bool
pkg go/types, method (*Package) Imports() []*Package
pkg go/types, method (*Package) MarkComplete()
pkg go/types, method (*Package) Name() string
pkg go/types, method (*Package) Path() string
pkg go/types, method (*Package) Scope() *Scope
pkg go/types, method (*Package) SetImports([]*Package)
pkg go/types, method (*Package) String() string
pkg go/types, method (*PkgName) Exported() bool
pkg go/types, method (*PkgName) Id() string
pkg go/types, method (*PkgName) Imported() *Package
pkg go/types, method (*PkgName) Name() string
pkg go/types, method (*PkgName) Parent() *Scope
pkg go/types, method (*PkgName) Pkg() *Package
pkg go/types, method (*PkgName) Pos() token.Pos
pkg go/types, method (*PkgName) String() string
pkg go/types, method (*PkgName) Type() Type
pkg go/types, method (*Pointer) Elem() Type
pkg go/types, method (*Pointer) String() string
pkg go/types, method (*Pointer) Underlying() Type
pkg go/types, method (*Scope) Child(int) *Scope
pkg go/types, method (*Scope) Insert(Object) Object
pkg go/types, method (*Scope) Len() int
pkg go/types, method (*Scope) Lookup(string) Object
pkg go/types, method (*Scope) LookupParent(string) (*Scope, Object)
pkg go/types, method (*Scope) Names() []string
pkg go/types, method (*Scope) NumChildren() int
pkg go/types, method (*Scope) Parent() *Scope
pkg go/types, method (*Scope) String() string
pkg go/types, method (*Scope) WriteTo(io.Writer, int, bool)
pkg go/types, method (*Selection) Index() []int
pkg go/types, method (*Selection) Indirect() bool
pkg go/types, method (*Selection) Kind() SelectionKind
pkg go/types, method (*Selection) Obj() Object
pkg go/types, method (*Selection) Recv() Type
pkg go/types, method (*Selection) String() string
pkg go/types, method (*Selection) Type() Type
pkg go/types, method (*Signature) Params() *Tuple
pkg go/types, method (*Signature) Recv() *Var
pkg go/types, method (*Signature) Results() *Tuple
pkg go/types, method (*Signature) String() string
pkg go/types, method (*Signature) Underlying() Type
pkg go/types, method (*Signature) Variadic() bool
pkg go/types, method (*Slice) Elem() Type
pkg go/types, method (*Slice) String() string
pkg go/types, method (*Slice) Underlying() Type
pkg go/types, method (*StdSizes) Alignof(Type) int64
pkg go/types, method (*StdSizes) Offsetsof([]*Var) []int64
pkg go/types, method (*StdSizes) Sizeof(Type) int64
pkg go/types, method (*Struct) Field(int) *Var
pkg go/types, method (*Struct) NumFields() int
pkg go/types, method (*Struct) String() string
pkg go/types, method (*Struct) Tag(int) string
pkg go/types, method (*Struct) Underlying() Type
pkg go/types, method (*Tuple) At(int) *Var
pkg go/types, method (*Tuple) Len() int
pkg go/types, method (*Tuple) String() string
pkg go/types, method (*Tuple) Underlying() Type
pkg go/types, method (*TypeName) Exported() bool
pkg go/types, method (*TypeName) Id() string
pkg go/types, method (*TypeName) Name() string
pkg go/types, method (*TypeName) Parent() *Scope
pkg go/types, method (*TypeName) Pkg() *Package
pkg go/types, method (*TypeName) Pos() token.Pos
pkg go/types, method (*TypeName) String() string
pkg go/types, method (*TypeName) Type() Type
pkg go/types, method (*Var) Anonymous() bool
pkg go/types, method (*Var) Exported() bool
pkg go/types, method (*Var) Id() string
pkg go/types, method (*Var) IsField() bool
pkg go/types, method (*Var) Name() string
pkg go/types, method (*Var) Parent() *Scope
pkg go/types, method (*Var) Pkg() *Package
pkg go/types, method (*Var) Pos() token.Pos
pkg go/types, method (*Var) String() string
pkg go/types, method (*Var) Type() Type
pkg go/types, method (Checker) ObjectOf(*ast.Ident) Object
pkg go/types, method (Checker) TypeOf(ast.Expr) Type
pkg go/types, method (Error) Error() string
pkg go/types, method (TypeAndValue) Addressable() bool
pkg go/types, method (TypeAndValue) Assignable() bool
pkg go/types, method (TypeAndValue) HasOk() bool
pkg go/types, method (TypeAndValue) IsBuiltin() bool
pkg go/types, method (TypeAndValue) IsNil() bool
pkg go/types, method (TypeAndValue) IsType() bool
pkg go/types, method (TypeAndValue) IsValue() bool
pkg go/types, method (TypeAndValue) IsVoid() bool
pkg go/types, type Array struct
pkg go/types, type Basic struct
pkg go/types, type BasicInfo int
pkg go/types, type BasicKind int
pkg go/types, type Builtin struct
pkg go/types, type Chan struct
pkg go/types, type ChanDir int
pkg go/types, type Checker struct
pkg go/types, type Checker struct, embedded *Info
pkg go/types, type Config struct
pkg go/types, type Config struct, DisableUnusedImportCheck bool
pkg go/types, type Config struct, Error func(error)
pkg go/types, type Config struct, FakeImportC bool
pkg go/types, type Config struct, IgnoreFuncBodies bool
pkg go/types, type Config struct, Import Importer
pkg go/types, type Config struct, Importer Importer
pkg go/types, type Config struct, Packages map[string]*Package
pkg go/types, type Config struct, Sizes Sizes
pkg go/types, type Const struct
pkg go/types, type Error struct
pkg go/types, type Error struct, Fset *token.FileSet
pkg go/types, type Error struct, Msg string
pkg go/types, type Error struct, Pos token.Pos
pkg go/types, type Error struct, Soft bool
pkg go/types, type Func struct
pkg go/types, type Importer func(map[string]*Package, string) (*Package, error)
pkg go/types, type Importer interface { Import }
pkg go/types, type Importer interface, Import(string) (*Package, error)
pkg go/types, type Info struct
pkg go/types, type Info struct, Defs map[*ast.Ident]Object
pkg go/types, type Info struct, Implicits map[ast.Node]Object
pkg go/types, type Info struct, InitOrder []*Initializer
pkg go/types, type Info struct, Scopes map[ast.Node]*Scope
pkg go/types, type Info struct, Selections map[*ast.SelectorExpr]*Selection
pkg go/types, type Info struct, Types map[ast.Expr]TypeAndValue
pkg go/types, type Info struct, Uses map[*ast.Ident]Object
pkg go/types, type Initializer struct
pkg go/types, type Initializer struct, Lhs []*Var
pkg go/types, type Initializer struct, Rhs ast.Expr
pkg go/types, type Interface struct
pkg go/types, type Label struct
pkg go/types, type Map struct
pkg go/types, type MethodSet struct
pkg go/types, type MethodSetCache struct
pkg go/types, type Named struct
pkg go/types, type Nil struct
pkg go/types, type Object interface, Exported() bool
pkg go/types, type Object interface, Id() string
pkg go/types, type Object interface, Name() string
pkg go/types, type Object interface, Parent() *Scope
pkg go/types, type Object interface, Pkg() *Package
pkg go/types, type Object interface, Pos() token.Pos
pkg go/types, type Object interface, String() string
pkg go/types, type Object interface, Type() Type
pkg go/types, type Object interface, unexported methods
pkg go/types, type Package struct
pkg go/types, type PkgName struct
pkg go/types, type Pointer struct
pkg go/types, type Scope struct
pkg go/types, type Selection struct
pkg go/types, type SelectionKind int
pkg go/types, type Signature struct
pkg go/types, type Sizes interface { Alignof, Offsetsof, Sizeof }
pkg go/types, type Sizes interface, Alignof(Type) int64
pkg go/types, type Sizes interface, Offsetsof([]*Var) []int64
pkg go/types, type Sizes interface, Sizeof(Type) int64
pkg go/types, type Slice struct
pkg go/types, type StdSizes struct
pkg go/types, type StdSizes struct, MaxAlign int64
pkg go/types, type StdSizes struct, WordSize int64
pkg go/types, type Struct struct
pkg go/types, type Tuple struct
pkg go/types, type Type interface { String, Underlying }
pkg go/types, type Type interface, String() string
pkg go/types, type Type interface, Underlying() Type
pkg go/types, type TypeAndValue struct
pkg go/types, type TypeAndValue struct, Type Type
pkg go/types, type TypeAndValue struct, Value constant.Value
pkg go/types, type TypeAndValue struct, Value exact.Value
pkg go/types, type TypeName struct
pkg go/types, type Var struct
pkg go/types, var DefaultImport Importer
pkg go/types, var GcCompatibilityMode bool
pkg go/types, var Typ [26]*Basic
pkg go/types, var Universe *Scope
pkg go/types, var UniverseByte *Basic
pkg go/types, var UniverseRune *Basic
pkg go/types, var Unsafe *Package
pkg html/template, method (*Template) Option(...string) *Template
pkg image, const YCbCrSubsampleRatio410 = 5
pkg image, const YCbCrSubsampleRatio410 YCbCrSubsampleRatio
pkg image, const YCbCrSubsampleRatio411 = 4
pkg image, const YCbCrSubsampleRatio411 YCbCrSubsampleRatio
pkg image, func NewCMYK(Rectangle) *CMYK
pkg image, method (*CMYK) At(int, int) color.Color
pkg image, method (*CMYK) Bounds() Rectangle
pkg image, method (*CMYK) CMYKAt(int, int) color.CMYK
pkg image, method (*CMYK) ColorModel() color.Model
pkg image, method (*CMYK) Opaque() bool
pkg image, method (*CMYK) PixOffset(int, int) int
pkg image, method (*CMYK) Set(int, int, color.Color)
pkg image, method (*CMYK) SetCMYK(int, int, color.CMYK)
pkg image, method (*CMYK) SubImage(Rectangle) Image
pkg image, method (Rectangle) At(int, int) color.Color
pkg image, method (Rectangle) Bounds() Rectangle
pkg image, method (Rectangle) ColorModel() color.Model
pkg image, type CMYK struct
pkg image, type CMYK struct, Pix []uint8
pkg image, type CMYK struct, Rect Rectangle
pkg image, type CMYK struct, Stride int
pkg image/color, func CMYKToRGB(uint8, uint8, uint8, uint8) (uint8, uint8, uint8)
pkg image/color, func RGBToCMYK(uint8, uint8, uint8) (uint8, uint8, uint8, uint8)
pkg image/color, method (CMYK) RGBA() (uint32, uint32, uint32, uint32)
pkg image/color, type CMYK struct
pkg image/color, type CMYK struct, C uint8
pkg image/color, type CMYK struct, K uint8
pkg image/color, type CMYK struct, M uint8
pkg image/color, type CMYK struct, Y uint8
pkg image/color, var CMYKModel Model
pkg image/gif, const DisposalBackground = 2
pkg image/gif, const DisposalBackground ideal-int
pkg image/gif, const DisposalNone = 1
pkg image/gif, const DisposalNone ideal-int
pkg image/gif, const DisposalPrevious = 3
pkg image/gif, const DisposalPrevious ideal-int
pkg image/gif, type GIF struct, BackgroundIndex uint8
pkg image/gif, type GIF struct, Config image.Config
pkg image/gif, type GIF struct, Disposal []uint8
pkg io, func CopyBuffer(Writer, Reader, []uint8) (int64, error)
pkg log, const LUTC = 32
pkg log, const LUTC ideal-int
pkg log, func Output(int, string) error
pkg log, method (*Logger) SetOutput(io.Writer)
pkg math/big, const Above = 1
pkg math/big, const Above Accuracy
pkg math/big, const AwayFromZero = 3
pkg math/big, const AwayFromZero RoundingMode
pkg math/big, const Below = -1
pkg math/big, const Below Accuracy
pkg math/big, const Exact = 0
pkg math/big, const Exact Accuracy
pkg math/big, const MaxExp = 2147483647
pkg math/big, const MaxExp ideal-int
pkg math/big, const MaxPrec = 4294967295
pkg math/big, const MaxPrec ideal-int
pkg math/big, const MinExp = -2147483648
pkg math/big, const MinExp ideal-int
pkg math/big, const ToNearestAway = 1
pkg math/big, const ToNearestAway RoundingMode
pkg math/big, const ToNearestEven = 0
pkg math/big, const ToNearestEven RoundingMode
pkg math/big, const ToNegativeInf = 4
pkg math/big, const ToNegativeInf RoundingMode
pkg math/big, const ToPositiveInf = 5
pkg math/big, const ToPositiveInf RoundingMode
pkg math/big, const ToZero = 2
pkg math/big, const ToZero RoundingMode
pkg math/big, func Jacobi(*Int, *Int) int
pkg math/big, func NewFloat(float64) *Float
pkg math/big, func ParseFloat(string, int, uint, RoundingMode) (*Float, int, error)
pkg math/big, func ScanFloat(io.ByteScanner, int, uint, RoundingMode) (*Float, int, error)
pkg math/big, method (*Float) Abs(*Float) *Float
pkg math/big, method (*Float) Acc() Accuracy
pkg math/big, method (*Float) Add(*Float, *Float) *Float
pkg math/big, method (*Float) Append([]uint8, uint8, int) []uint8
pkg math/big, method (*Float) Cmp(*Float) int
pkg math/big, method (*Float) Copy(*Float) *Float
pkg math/big, method (*Float) Float32() (float32, Accuracy)
pkg math/big, method (*Float) Float64() (float64, Accuracy)
pkg math/big, method (*Float) Format(uint8, int) string
pkg math/big, method (*Float) Int(*Int) (*Int, Accuracy)
pkg math/big, method (*Float) Int64() (int64, Accuracy)
pkg math/big, method (*Float) IsInf() bool
pkg math/big, method (*Float) IsInt() bool
pkg math/big, method (*Float) MantExp(*Float) int
pkg math/big, method (*Float) MinPrec() uint
pkg math/big, method (*Float) Mode() RoundingMode
pkg math/big, method (*Float) Mul(*Float, *Float) *Float
pkg math/big, method (*Float) Neg(*Float) *Float
pkg math/big, method (*Float) Parse(string, int) (*Float, int, error)
pkg math/big, method (*Float) Prec() uint
pkg math/big, method (*Float) Quo(*Float, *Float) *Float
pkg math/big, method (*Float) Rat(*Rat) (*Rat, Accuracy)
pkg math/big, method (*Float) Scan(io.ByteScanner, int) (*Float, int, error)
pkg math/big, method (*Float) Set(*Float) *Float
pkg math/big, method (*Float) SetFloat64(float64) *Float
pkg math/big, method (*Float) SetInf(bool) *Float
pkg math/big, method (*Float) SetInt(*Int) *Float
pkg math/big, method (*Float) SetInt64(int64) *Float
pkg math/big, method (*Float) SetMantExp(*Float, int) *Float
pkg math/big, method (*Float) SetMode(RoundingMode) *Float
pkg math/big, method (*Float) SetPrec(uint) *Float
pkg math/big, method (*Float) SetRat(*Rat) *Float
pkg math/big, method (*Float) SetString(string) (*Float, bool)
pkg math/big, method (*Float) SetUint64(uint64) *Float
pkg math/big, method (*Float) Sign() int
pkg math/big, method (*Float) Signbit() bool
pkg math/big, method (*Float) String() string
pkg math/big, method (*Float) Sub(*Float, *Float) *Float
pkg math/big, method (*Float) Uint64() (uint64, Accuracy)
pkg math/big, method (*Int) ModSqrt(*Int, *Int) *Int
pkg math/big, method (Accuracy) String() string
pkg math/big, method (ErrNaN) Error() string
pkg math/big, method (RoundingMode) String() string
pkg math/big, type Accuracy int8
pkg math/big, type ErrNaN struct
pkg math/big, type Float struct
pkg math/big, type RoundingMode uint8
pkg mime, const BEncoding = 98
pkg mime, const BEncoding WordEncoder
pkg mime, const QEncoding = 113
pkg mime, const QEncoding WordEncoder
pkg mime, func ExtensionsByType(string) ([]string, error)
pkg mime, method (*WordDecoder) Decode(string) (string, error)
pkg mime, method (*WordDecoder) DecodeHeader(string) (string, error)
pkg mime, method (WordEncoder) Encode(string, string) string
pkg mime, type WordDecoder struct
pkg mime, type WordDecoder struct, CharsetReader func(string, io.Reader) (io.Reader, error)
pkg mime, type WordEncoder uint8
pkg mime/quotedprintable, func NewReader(io.Reader) *Reader
pkg mime/quotedprintable, func NewReader(io.Reader) io.Reader
pkg mime/quotedprintable, func NewWriter(io.Writer) *Writer
pkg mime/quotedprintable, method (*Reader) Read([]uint8) (int, error)
pkg mime/quotedprintable, method (*Writer) Close() error
pkg mime/quotedprintable, method (*Writer) Write([]uint8) (int, error)
pkg mime/quotedprintable, type Reader struct
pkg mime/quotedprintable, type Writer struct
pkg mime/quotedprintable, type Writer struct, Binary bool
pkg net, func SocketConn(*os.File, SocketAddr) (Conn, error)
pkg net, func SocketPacketConn(*os.File, SocketAddr) (PacketConn, error)
pkg net, type OpError struct, Source Addr
pkg net, type SocketAddr interface { Addr, Raw }
pkg net, type SocketAddr interface, Addr([]uint8) Addr
pkg net, type SocketAddr interface, Raw(Addr) []uint8
pkg net/http/fcgi, var ErrConnClosed error
pkg net/http/fcgi, var ErrRequestAborted error
pkg net/http/pprof, func Trace(http.ResponseWriter, *http.Request)
pkg net/smtp, method (*Client) TLSConnectionState() (tls.ConnectionState, bool)
pkg os, func LookupEnv(string) (string, bool)
pkg os/signal, func Ignore(...os.Signal)
pkg os/signal, func Reset(...os.Signal)
pkg reflect, func ArrayOf(int, Type) Type
pkg reflect, func FuncOf([]Type, []Type, bool) Type
pkg runtime, func ReadTrace() []uint8
pkg runtime, func StartTrace() error
pkg runtime, func StopTrace()
pkg runtime/pprof, func StartTrace(io.Writer) error
pkg runtime/pprof, func StopTrace()
pkg strings, func Compare(string, string) int
pkg strings, func LastIndexByte(string, uint8) int
pkg strings, method (*Reader) Size() int64
pkg syscall (darwin-386), type SysProcAttr struct, Ctty int
pkg syscall (darwin-386), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-386), type SysProcAttr struct, Pgid int
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (darwin-amd64), type SysProcAttr struct, Ctty int
pkg syscall (darwin-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-amd64), type SysProcAttr struct, Pgid int
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-386), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-386), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-arm), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-arm), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-arm), type SysProcAttr struct, Pgid int
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Ctty int
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-386), type SysProcAttr struct, Foreground bool
pkg syscall (linux-386), type SysProcAttr struct, Pgid int
pkg syscall (linux-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (linux-amd64), type SysProcAttr struct, Pgid int
pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (linux-arm), type SysProcAttr struct, Foreground bool
pkg syscall (linux-arm), type SysProcAttr struct, Pgid int
pkg syscall (linux-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (linux-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-386), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-386), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-arm), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-arm), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-arm), type SysProcAttr struct, Pgid int
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Ctty int
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-386), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-386), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-386), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-amd64), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-amd64), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-amd64), type SysProcAttr struct, Pgid int
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Ctty int
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Foreground bool
pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Pgid int
pkg text/template, method (*Template) DefinedTemplates() string
pkg text/template, method (*Template) Option(...string) *Template
pkg time, method (Time) AppendFormat([]uint8, string) []uint8
pkg unicode, const Version = "8.0.0"
pkg unicode, var Ahom *RangeTable
pkg unicode, var Anatolian_Hieroglyphs *RangeTable
pkg unicode, var Hatran *RangeTable
pkg unicode, var Multani *RangeTable
pkg unicode, var Old_Hungarian *RangeTable
pkg unicode, var SignWriting *RangeTable

View File

@ -6,16 +6,16 @@
<h2 id="introduction">A Quick Guide to Go's Assembler</h2>
<p>
This document is a quick outline of the unusual form of assembly language used by the <code>gc</code>
Go compiler.
This document is a quick outline of the unusual form of assembly language used by the <code>gc</code> Go compiler.
The document is not comprehensive.
</p>
<p>
The assembler is based on the input to the Plan 9 assemblers, which is documented in detail
<a href="http://plan9.bell-labs.com/sys/doc/asm.html">on the Plan 9 site</a>.
The assembler is based on the input style of the Plan 9 assemblers, which is documented in detail
<a href="http://plan9.bell-labs.com/sys/doc/asm.html">elsewhere</a>.
If you plan to write assembly language, you should read that document although much of it is Plan 9-specific.
This document provides a summary of the syntax and
The current document provides a summary of the syntax and the differences with
what is explained in that document, and
describes the peculiarities that apply when writing assembly code to interact with Go.
</p>
@ -25,10 +25,12 @@ Some of the details map precisely to the machine, but some do not.
This is because the compiler suite (see
<a href="http://plan9.bell-labs.com/sys/doc/compiler.html">this description</a>)
needs no assembler pass in the usual pipeline.
Instead, the compiler emits a kind of incompletely defined instruction set, in binary form, which the linker
then completes.
In particular, the linker does instruction selection, so when you see an instruction like <code>MOV</code>
what the linker actually generates for that operation might not be a move instruction at all, perhaps a clear or load.
Instead, the compiler operates on a kind of semi-abstract instruction set,
and instruction selection occurs partly after code generation.
The assembler works on the semi-abstract form, so
when you see an instruction like <code>MOV</code>
what the tool chain actually generates for that operation might
not be a move instruction at all, perhaps a clear or load.
Or it might correspond exactly to the machine instruction with that name.
In general, machine-specific operations tend to appear as themselves, while more general concepts like
memory move and subroutine call and return are more abstract.
@ -36,13 +38,15 @@ The details vary with architecture, and we apologize for the imprecision; the si
</p>
<p>
The assembler program is a way to generate that intermediate, incompletely defined instruction sequence
as input for the linker.
The assembler program is a way to parse a description of that
semi-abstract instruction set and turn it into instructions to be
input to the linker.
If you want to see what the instructions look like in assembly for a given architecture, say amd64, there
are many examples in the sources of the standard library, in packages such as
<a href="/pkg/runtime/"><code>runtime</code></a> and
<a href="/pkg/math/big/"><code>math/big</code></a>.
You can also examine what the compiler emits as assembly code:
You can also examine what the compiler emits as assembly code
(the actual output may differ from what you see here):
</p>
<pre>
@ -52,7 +56,7 @@ package main
func main() {
println(3)
}
$ go tool compile -S x.go # or: go build -gcflags -S x.go
$ GOOS=linux GOARCH=amd64 go tool compile -S x.go # or: go build -gcflags -S x.go
--- prog list "main" ---
0000 (x.go:3) TEXT main+0(SB),$8-0
@ -106,20 +110,73 @@ codeblk [0x2000,0x1d059) at offset 0x1000
-->
<h3 id="constants">Constants</h3>
<p>
Although the assembler takes its guidance from the Plan 9 assemblers,
it is a distinct program, so there are some differences.
One is in constant evaluation.
Constant expressions in the assembler are parsed using Go's operator
precedence, not the C-like precedence of the original.
Thus <code>3&amp;1<<2</code> is 4, not 0—it parses as <code>(3&amp;1)<<2</code>
not <code>3&amp;(1<<2)</code>.
Also, constants are always evaluated as 64-bit unsigned integers.
Thus <code>-2</code> is not the integer value minus two,
but the unsigned 64-bit integer with the same bit pattern.
The distinction rarely matters but
to avoid ambiguity, division or right shift where the right operand's
high bit is set is rejected.
</p>
<h3 id="symbols">Symbols</h3>
<p>
Some symbols, such as <code>PC</code>, <code>R0</code> and <code>SP</code>, are predeclared and refer to registers.
There are two other predeclared symbols, <code>SB</code> (static base) and <code>FP</code> (frame pointer).
All user-defined symbols other than jump labels are written as offsets to these pseudo-registers.
Some symbols, such as <code>R1</code> or <code>LR</code>,
are predefined and refer to registers.
The exact set depends on the architecture.
</p>
<p>
There are four predeclared symbols that refer to pseudo-registers.
These are not real registers, but rather virtual registers maintained by
the tool chain, such as a frame pointer.
The set of pseudo-registers is the same for all architectures:
</p>
<ul>
<li>
<code>FP</code>: Frame pointer: arguments and locals.
</li>
<li>
<code>PC</code>: Program counter:
jumps and branches.
</li>
<li>
<code>SB</code>: Static base pointer: global symbols.
</li>
<li>
<code>SP</code>: Stack pointer: top of stack.
</li>
</ul>
<p>
All user-defined symbols are written as offsets to the pseudo-registers
<code>FP</code> (arguments and locals) and <code>SB</code> (globals).
</p>
<p>
The <code>SB</code> pseudo-register can be thought of as the origin of memory, so the symbol <code>foo(SB)</code>
is the name <code>foo</code> as an address in memory.
This form is used to name global functions and data.
Adding <code>&lt;&gt;</code> to the name, as in <code>foo&lt;&gt;(SB)</code>, makes the name
Adding <code>&lt;&gt;</code> to the name, as in <span style="white-space: nowrap"><code>foo&lt;&gt;(SB)</code></span>, makes the name
visible only in the current source file, like a top-level <code>static</code> declaration in a C file.
Adding an offset to the name refers to that offset from the symbol's address, so
<code>a+4(SB)</code> is four bytes past the start of <code>foo</code>.
</p>
<p>
@ -128,9 +185,19 @@ used to refer to function arguments.
The compilers maintain a virtual frame pointer and refer to the arguments on the stack as offsets from that pseudo-register.
Thus <code>0(FP)</code> is the first argument to the function,
<code>8(FP)</code> is the second (on a 64-bit machine), and so on.
When referring to a function argument this way, it is conventional to place the name
However, when referring to a function argument this way, it is necessary to place a name
at the beginning, as in <code>first_arg+0(FP)</code> and <code>second_arg+8(FP)</code>.
Some of the assemblers enforce this convention, rejecting plain <code>0(FP)</code> and <code>8(FP)</code>.
(The meaning of the offset—offset from the frame pointer—distinct
from its use with <code>SB</code>, where it is an offset from the symbol.)
The assembler enforces this convention, rejecting plain <code>0(FP)</code> and <code>8(FP)</code>.
The actual name is semantically irrelevant but should be used to document
the argument's name.
It is worth stressing that <code>FP</code> is always a
pseudo-register, not a hardware
register, even on architectures with a hardware frame pointer.
</p>
<p>
For assembly functions with Go prototypes, <code>go</code> <code>vet</code> will check that the argument names
and offsets match.
On 32-bit systems, the low and high 32 bits of a 64-bit value are distinguished by adding
@ -145,13 +212,53 @@ prepared for function calls.
It points to the top of the local stack frame, so references should use negative offsets
in the range [framesize, 0):
<code>x-8(SP)</code>, <code>y-4(SP)</code>, and so on.
On architectures with a real register named <code>SP</code>, the name prefix distinguishes
references to the virtual stack pointer from references to the architectural <code>SP</code> register.
That is, <code>x-8(SP)</code> and <code>-8(SP)</code> are different memory locations:
the first refers to the virtual stack pointer pseudo-register, while the second refers to the
</p>
<p>
On architectures with a hardware register named <code>SP</code>,
the name prefix distinguishes
references to the virtual stack pointer from references to the architectural
<code>SP</code> register.
That is, <code>x-8(SP)</code> and <code>-8(SP)</code>
are different memory locations:
the first refers to the virtual stack pointer pseudo-register,
while the second refers to the
hardware's <code>SP</code> register.
</p>
<p>
On machines where <code>SP</code> and <code>PC</code> are
traditionally aliases for a physical, numbered register,
in the Go assembler the names <code>SP</code> and <code>PC</code>
are still treated specially;
for instance, references to <code>SP</code> require a symbol,
much like <code>FP</code>.
To access the actual hardware register use the true <code>R</code> name.
For example, on the ARM architecture the hardware
<code>SP</code> and <code>PC</code> are accessible as
<code>R13</code> and <code>R15</code>.
</p>
<p>
Branches and direct jumps are always written as offsets to the PC, or as
jumps to labels:
</p>
<pre>
label:
MOVW $0, R1
JMP label
</pre>
<p>
Each label is visible only within the function in which it is defined.
It is therefore permitted for multiple functions in a file to define
and use the same label names.
Direct jumps and call instructions can target text symbols,
such as <code>name(SB)</code>, but not offsets from symbols,
such as <code>name+4(SB)</code>.
</p>
<p>
Instructions, registers, and assembler directives are always in UPPER CASE to remind you
that assembly programming is a fraught endeavor.
@ -312,11 +419,17 @@ This data contains no pointers and therefore does not need to be
scanned by the garbage collector.
</li>
<li>
<code>WRAPPER</code> = 32
<code>WRAPPER</code> = 32
<br>
(For <code>TEXT</code> items.)
This is a wrapper function and should not count as disabling <code>recover</code>.
</li>
<li>
<code>NEEDCTXT</code> = 64
<br>
(For <code>TEXT</code> items.)
This function is a closure so it uses its incoming context register.
</li>
</ul>
<h3 id="runtime">Runtime Coordination</h3>
@ -401,42 +514,61 @@ even pointers to stack data must not be kept in local variables.
<p>
It is impractical to list all the instructions and other details for each machine.
To see what instructions are defined for a given machine, say 32-bit Intel x86,
look in the top-level header file for the corresponding linker, in this case <code>8l</code>.
That is, the file <code>$GOROOT/src/cmd/8l/8.out.h</code> contains a C enumeration, called <code>as</code>,
of the instructions and their spellings as known to the assembler and linker for that architecture.
In that file you'll find a declaration that begins
To see what instructions are defined for a given machine, say ARM,
look in the source for the <code>obj</code> support library for
that architecture, located in the directory <code>src/cmd/internal/obj/arm</code>.
In that directory is a file <code>a.out.go</code>; it contains
a long list of constants starting with <code>A</code>, like this:
</p>
<pre>
enum as
{
AXXX,
AAAA,
AAAD,
AAAM,
AAAS,
AADCB,
const (
AAND = obj.ABaseARM + obj.A_ARCHSPECIFIC + iota
AEOR
ASUB
ARSB
AADD
...
</pre>
<p>
Each instruction begins with a initial capital <code>A</code> in this list, so <code>AADCB</code>
represents the <code>ADCB</code> (add carry byte) instruction.
The enumeration is in alphabetical order, plus some late additions (<code>AXXX</code> occupies
the zero slot as an invalid instruction).
The sequence has nothing to do with the actual encoding of the machine instructions.
Again, the linker takes care of that detail.
This is the list of instructions and their spellings as known to the assembler and linker for that architecture.
Each instruction begins with an initial capital <code>A</code> in this list, so <code>AAND</code>
represents the bitwise and instruction,
<code>AND</code> (without the leading <code>A</code>),
and is written in assembly source as <code>AND</code>.
The enumeration is mostly in alphabetical order.
(The architecture-independent <code>AXXX</code>, defined in the
<code>cmd/internal/obj</code> package,
represents an invalid instruction).
The sequence of the <code>A</code> names has nothing to do with the actual
encoding of the machine instructions.
The <code>cmd/internal/obj</code> package takes care of that detail.
</p>
<p>
The instructions for both the 386 and AMD64 architectures are listed in
<code>cmd/internal/obj/x86/a.out.go</code>.
</p>
<p>
The architectures share syntax for common addressing modes such as
<code>(R1)</code> (register indirect),
<code>4(R1)</code> (register indirect with offset), and
<code>$foo(SB)</code> (absolute address).
The assembler also supports some (not necessarily all) addressing modes
specific to each architecture.
The sections below list these.
</p>
<p>
One detail evident in the examples from the previous sections is that data in the instructions flows from left to right:
<code>MOVQ</code> <code>$0,</code> <code>CX</code> clears <code>CX</code>.
This convention applies even on architectures where the usual mode is the opposite direction.
This rule applies even on architectures where the conventional notation uses the opposite direction.
</p>
<p>
Here follows some descriptions of key Go-specific details for the supported architectures.
Here follow some descriptions of key Go-specific details for the supported architectures.
</p>
<h3 id="x86">32-bit Intel 386</h3>
@ -445,11 +577,11 @@ Here follows some descriptions of key Go-specific details for the supported arch
The runtime pointer to the <code>g</code> structure is maintained
through the value of an otherwise unused (as far as Go is concerned) register in the MMU.
A OS-dependent macro <code>get_tls</code> is defined for the assembler if the source includes
an architecture-dependent header file, like this:
a special header, <code>go_asm.h</code>:
</p>
<pre>
#include "zasm_GOOS_GOARCH.h"
#include "go_asm.h"
</pre>
<p>
@ -462,21 +594,39 @@ The sequence to load <code>g</code> and <code>m</code> using <code>CX</code> loo
<pre>
get_tls(CX)
MOVL g(CX), AX // Move g into AX.
MOVL g_m(AX), BX // Move g->m into BX.
MOVL g_m(AX), BX // Move g.m into BX.
</pre>
<p>
Addressing modes:
</p>
<ul>
<li>
<code>(DI)(BX*2)</code>: The location at address <code>DI</code> plus <code>BX*2</code>.
</li>
<li>
<code>64(DI)(BX*2)</code>: The location at address <code>DI</code> plus <code>BX*2</code> plus 64.
These modes accept only 1, 2, 4, and 8 as scale factors.
</li>
</ul>
<h3 id="amd64">64-bit Intel 386 (a.k.a. amd64)</h3>
<p>
The assembly code to access the <code>m</code> and <code>g</code>
pointers is the same as on the 386, except it uses <code>MOVQ</code> rather than
<code>MOVL</code>:
The two architectures behave largely the same at the assembler level.
Assembly code to access the <code>m</code> and <code>g</code>
pointers on the 64-bit version is the same as on the 32-bit 386,
except it uses <code>MOVQ</code> rather than <code>MOVL</code>:
</p>
<pre>
get_tls(CX)
MOVQ g(CX), AX // Move g into AX.
MOVQ g_m(AX), BX // Move g->m into BX.
MOVQ g_m(AX), BX // Move g.m into BX.
</pre>
<h3 id="arm">ARM</h3>
@ -513,6 +663,107 @@ The name <code>SP</code> always refers to the virtual stack pointer described ea
For the hardware register, use <code>R13</code>.
</p>
<p>
Condition code syntax is to append a period and the one- or two-letter code to the instruction,
as in <code>MOVW.EQ</code>.
Multiple codes may be appended: <code>MOVM.IA.W</code>.
The order of the code modifiers is irrelevant.
</p>
<p>
Addressing modes:
</p>
<ul>
<li>
<code>R0-&gt;16</code>
<br>
<code>R0&gt;&gt;16</code>
<br>
<code>R0&lt;&lt;16</code>
<br>
<code>R0@&gt;16</code>:
For <code>&lt;&lt;</code>, left shift <code>R0</code> by 16 bits.
The other codes are <code>-&gt;</code> (arithmetic right shift),
<code>&gt;&gt;</code> (logical right shift), and
<code>@&gt;</code> (rotate right).
</li>
<li>
<code>R0-&gt;R1</code>
<br>
<code>R0&gt;&gt;R1</code>
<br>
<code>R0&lt;&lt;R1</code>
<br>
<code>R0@&gt;R1</code>:
For <code>&lt;&lt;</code>, left shift <code>R0</code> by the count in <code>R1</code>.
The other codes are <code>-&gt;</code> (arithmetic right shift),
<code>&gt;&gt;</code> (logical right shift), and
<code>@&gt;</code> (rotate right).
</li>
<li>
<code>[R0,g,R12-R15]</code>: For multi-register instructions, the set comprising
<code>R0</code>, <code>g</code>, and <code>R12</code> through <code>R15</code> inclusive.
</li>
<li>
<code>(R5, R6)</code>: Destination register pair.
</li>
</ul>
<h3 id="arm64">ARM64</h3>
<p>
The ARM64 port is in an experimental state.
</p>
<p>
Instruction modifiers are appended to the instruction following a period.
The only modifiers are <code>P</code> (postincrement) and <code>W</code>
(preincrement):
<code>MOVW.P</code>, <code>MOVW.W</code>
</p>
<p>
Addressing modes:
</p>
<ul>
<li>
<code>(R5, R6)</code>: Register pair for <code>LDP</code>/<code>STP</code>.
</li>
</ul>
<h3 id="ppc64">Power 64, a.k.a. ppc64</h3>
<p>
The Power 64 port is in an experimental state.
</p>
<p>
Addressing modes:
</p>
<ul>
<li>
<code>(R5)(R6*1)</code>: The location at <code>R5</code> plus <code>R6</code>. It is a scaled
mode as on the x86, but the only scale allowed is <code>1</code>.
</li>
<li>
<code>(R5+R6)</code>: Alias for (R5)(R6*1)
</li>
</ul>
<h3 id="unsupported_opcodes">Unsupported opcodes</h3>
<p>
@ -531,11 +782,17 @@ Here's how the 386 runtime defines the 64-bit atomic load function.
// uint64 atomicload64(uint64 volatile* addr);
// so actually
// void atomicload64(uint64 *res, uint64 volatile *addr);
TEXT runtime·atomicload64(SB), NOSPLIT, $0-8
TEXT runtime·atomicload64(SB), NOSPLIT, $0-12
MOVL ptr+0(FP), AX
TESTL $7, AX
JZ 2(PC)
MOVL 0, AX // crash with nil ptr deref
LEAL ret_lo+4(FP), BX
BYTE $0x0f; BYTE $0x6f; BYTE $0x00 // MOVQ (%EAX), %MM0
BYTE $0x0f; BYTE $0x7f; BYTE $0x03 // MOVQ %MM0, 0(%EBX)
BYTE $0x0F; BYTE $0x77 // EMMS
// MOVQ (%EAX), %MM0
BYTE $0x0f; BYTE $0x6f; BYTE $0x00
// MOVQ %MM0, 0(%EBX)
BYTE $0x0f; BYTE $0x7f; BYTE $0x03
// EMMS
BYTE $0x0F; BYTE $0x77
RET
</pre>

View File

@ -3172,40 +3172,44 @@ count the completion signals by draining the channel after
launching all the goroutines.
</p>
<pre>
const NCPU = 4 // number of CPU cores
const numCPU = 4 // number of CPU cores
func (v Vector) DoAll(u Vector) {
c := make(chan int, NCPU) // Buffering optional but sensible.
for i := 0; i &lt; NCPU; i++ {
go v.DoSome(i*len(v)/NCPU, (i+1)*len(v)/NCPU, u, c)
c := make(chan int, numCPU) // Buffering optional but sensible.
for i := 0; i &lt; numCPU; i++ {
go v.DoSome(i*len(v)/numCPU, (i+1)*len(v)/numCPU, u, c)
}
// Drain the channel.
for i := 0; i &lt; NCPU; i++ {
for i := 0; i &lt; numCPU; i++ {
&lt;-c // wait for one task to complete
}
// All done.
}
</pre>
<p>
The current implementation of the Go runtime
will not parallelize this code by default.
It dedicates only a single core to user-level processing. An
arbitrary number of goroutines can be blocked in system calls, but
by default only one can be executing user-level code at any time.
It should be smarter and one day it will be smarter, but until it
is if you want CPU parallelism you must tell the run-time
how many goroutines you want executing code simultaneously. There
are two related ways to do this. Either run your job with environment
variable <code>GOMAXPROCS</code> set to the number of cores to use
or import the <code>runtime</code> package and call
<code>runtime.GOMAXPROCS(NCPU)</code>.
A helpful value might be <code>runtime.NumCPU()</code>, which reports the number
of logical CPUs on the local machine.
Again, this requirement is expected to be retired as the scheduling and run-time improve.
Rather than create a constant value for numCPU, we can ask the runtime what
value is appropriate.
The function <code><a href="/pkg/runtime#NumCPU">runtime.NumCPU</a></code>
returns the number of hardware CPU cores in the machine, so we could write
</p>
<pre>
var numCPU = runtime.NumCPU()
</pre>
<p>
There is also a function
<code><a href="/pkg/runtime#GOMAXPROCS">runtime.GOMAXPROCS</a></code>,
which reports (or sets)
the user-specified number of cores that a Go program can have running
simultaneously.
It defaults to the value of <code>runtime.NumCPU</code> but can be
overridden by setting the similarly named shell environment variable
or by calling the function with a positive number. Calling it with
zero just queries the value.
Therefore if we want to honor the user's resource request, we should write
</p>
<pre>
var numCPU = runtime.GOMAXPROCS(0)
</pre>
<p>
Be sure not to confuse the ideas of concurrency—structuring a program
as independently executing components—and parallelism—executing

View File

@ -183,7 +183,7 @@ export LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH
The gccgo compiler works like other gcc frontends. As of GCC 5 the gccgo
installation also includes a version of the <code>go</code> command,
which may be used to build Go programs as described at
<a href="http://golang.org/cmd/go">http://golang.org/cmd/go</a>.
<a href="https://golang.org/cmd/go">https://golang.org/cmd/go</a>.
</p>
<p>

File diff suppressed because it is too large Load Diff

View File

@ -95,6 +95,18 @@ We therefore recommend that composite literals whose type is defined
in a separate package should use the keyed notation.
</li>
<li>
Methods. As with struct fields, it may be necessary to add methods
to types.
Under some circumstances, such as when the type is embedded in
a struct along with another type,
the addition of the new method may break
the struct by creating a conflict with an existing method of the other
embedded type.
We cannot protect against this rare case and do not guarantee compatibility
should it arise.
</li>
<li>
Dot imports. If a program imports a standard package
using <code>import . "path"</code>, additional names defined in the

View File

@ -92,13 +92,6 @@ portability and the addition of new functionality such as improved support for i
There may well be a Go 2 one day, but not for a few years and it will be influenced by what we learn using Go 1 as it is today.
</p>
<h3 id="What_is_the_origin_of_the_name">
What is the origin of the name?</h3>
<p>
&ldquo;Ogle&rdquo; would be a good name for a Go debugger.
</p>
<h3 id="Whats_the_origin_of_the_mascot">
What's the origin of the mascot?</h3>
@ -893,7 +886,7 @@ encourages you to be explicit.
</p>
<p>
A blog post titled <a href="http://blog.golang.org/constants">Constants</a>
A blog post titled <a href="https://blog.golang.org/constants">Constants</a>
explores this topic in more detail.
</p>
@ -1591,6 +1584,51 @@ test cases. The standard Go library is full of illustrative examples, such as in
<a href="/src/fmt/fmt_test.go">the formatting tests for the <code>fmt</code> package</a>.
</p>
<h3 id="x_in_std">
Why isn't <i>X</i> in the standard library?</h3>
<p>
The standard library's purpose is to support the runtime, connect to
the operating system, and provide key functionality that many Go
programs require, such as formatted I/O and networking.
It also contains elements important for web programming, including
cryptography and support for standards like HTTP, JSON, and XML.
</p>
<p>
There is no clear criterion that defines what is included because for
a long time, this was the <i>only</i> Go library.
There are criteria that define what gets added today, however.
</p>
<p>
New additions to the standard library are rare and the bar for
inclusion is high.
Code included in the standard library bears a large ongoing maintenance cost
(often borne by those other than the original author),
is subject to the <a href="/doc/go1compat.html">Go 1 compatibility promise</a>
(blocking fixes to any flaws in the API),
and is subject to the Go
<a href="https://golang.org/s/releasesched">release schedule</a>,
preventing bug fixes from being available to users quickly.
</p>
<p>
Most new code should live outside of the standard library and be accessible
via the <a href="/cmd/go/"><code>go</code> tool</a>'s
<code>go get</code> command.
Such code can have its own maintainers, release cycle,
and compatibility guarantees.
Users can find packages and read their documentation at
<a href="https://godoc.org/">godoc.org</a>.
</p>
<p>
Although there are pieces in the standard library that don't really belong,
such as <code>log/syslog</code>, we continue to maintain everything in the
library because of the Go 1 compatibility promise.
But we encourage most new code to live elsewhere.
</p>
<h2 id="Implementation">Implementation</h2>

View File

@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
"Subtitle": "Version of June 23, 2015",
"Subtitle": "Version of July 23, 2015",
"Path": "/ref/spec"
}-->
@ -129,27 +129,27 @@ hex_digit = "0" … "9" | "A" … "F" | "a" … "f" .
<h3 id="Comments">Comments</h3>
<p>
There are two forms of comments:
Comments serve as program documentation. There are two forms:
</p>
<ol>
<li>
<i>Line comments</i> start with the character sequence <code>//</code>
and stop at the end of the line. A line comment acts like a newline.
and stop at the end of the line.
</li>
<li>
<i>General comments</i> start with the character sequence <code>/*</code>
and continue through the character sequence <code>*/</code>. A general
comment containing one or more newlines acts like a newline, otherwise it acts
like a space.
and stop with the first subsequent character sequence <code>*/</code>.
</li>
</ol>
<p>
Comments do not nest.
A comment cannot start inside a <a href="#Rune_literals">rune</a> or
<a href="#String_literals">string literal</a>, or inside a comment.
A general comment containing no newlines acts like a space.
Any other comment acts like a newline.
</p>
<h3 id="Tokens">Tokens</h3>
<p>
@ -176,11 +176,8 @@ using the following two rules:
<ol>
<li>
<p>
When the input is broken into tokens, a semicolon is automatically inserted
into the token stream at the end of a non-blank line if the line's final
token is
</p>
into the token stream immediately after a line's final token if that token is
<ul>
<li>an
<a href="#Identifiers">identifier</a>
@ -357,9 +354,10 @@ imaginary_lit = (decimals | float_lit) "i" .
<p>
A rune literal represents a <a href="#Constants">rune constant</a>,
an integer value identifying a Unicode code point.
A rune literal is expressed as one or more characters enclosed in single quotes.
Within the quotes, any character may appear except single
quote and newline. A single quoted character represents the Unicode value
A rune literal is expressed as one or more characters enclosed in single quotes,
as in <code>'x'</code> or <code>'\n'</code>.
Within the quotes, any character may appear except newline and unescaped single
quote. A single quoted character represents the Unicode value
of the character itself,
while multi-character sequences beginning with a backslash encode
values in various formats.
@ -433,6 +431,7 @@ escaped_char = `\` ( "a" | "b" | "f" | "n" | "r" | "t" | "v" | `\` | "'" | `
'\xff'
'\u12e4'
'\U00101234'
'\'' // rune literal containing single quote character
'aa' // illegal: too many characters
'\xa' // illegal: too few hexadecimal digits
'\0' // illegal: too few octal digits
@ -449,8 +448,8 @@ obtained from concatenating a sequence of characters. There are two forms:
raw string literals and interpreted string literals.
</p>
<p>
Raw string literals are character sequences between back quotes
<code>``</code>. Within the quotes, any character is legal except
Raw string literals are character sequences between back quotes, as in
<code>`foo`</code>. Within the quotes, any character may appear except
back quote. The value of a raw string literal is the
string composed of the uninterpreted (implicitly UTF-8-encoded) characters
between the quotes;
@ -461,8 +460,9 @@ are discarded from the raw string value.
</p>
<p>
Interpreted string literals are character sequences between double
quotes <code>&quot;&quot;</code>. The text between the quotes,
which may not contain newlines, forms the
quotes, as in <code>&quot;bar&quot;</code>.
Within the quotes, any character may appear except newline and unescaped double quote.
The text between the quotes forms the
value of the literal, with backslash escapes interpreted as they
are in <a href="#Rune_literals">rune literals</a> (except that <code>\'</code> is illegal and
<code>\"</code> is legal), with the same restrictions.
@ -484,17 +484,17 @@ interpreted_string_lit = `"` { unicode_value | byte_value } `"` .
</pre>
<pre>
`abc` // same as "abc"
`abc` // same as "abc"
`\n
\n` // same as "\\n\n\\n"
\n` // same as "\\n\n\\n"
"\n"
""
"\"" // same as `"`
"Hello, world!\n"
"日本語"
"\u65e5本\U00008a9e"
"\xff\u00FF"
"\uD800" // illegal: surrogate half
"\U00110000" // illegal: invalid Unicode code point
"\uD800" // illegal: surrogate half
"\U00110000" // illegal: invalid Unicode code point
</pre>
<p>
@ -2090,7 +2090,7 @@ Receiver = Parameters .
</pre>
<p>
The receiver is specified via an extra parameter section preceeding the method
The receiver is specified via an extra parameter section preceding the method
name. That parameter section must declare a single parameter, the receiver.
Its type must be of the form <code>T</code> or <code>*T</code> (possibly using
parentheses) where <code>T</code> is a type name. The type denoted by <code>T</code> is called

View File

@ -1,3 +1,3 @@
The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)
The design is licensed under the Creative Commons 3.0 Attributions license.
Read this article for more details: http://blog.golang.org/gopher
Read this article for more details: https://blog.golang.org/gopher

View File

@ -487,6 +487,7 @@ The valid combinations of <code>$GOOS</code> and <code>$GOARCH</code> are:
<td></td><td><code>windows</code></td> <td><code>amd64</code></td>
</tr>
</table>
<br>
<li><code>$GOHOSTOS</code> and <code>$GOHOSTARCH</code>
<p>

View File

@ -7,8 +7,8 @@
# downloaded from the ICANN/IANA distribution.
# Versions to use.
CODE=2014j
DATA=2014j
CODE=2015e
DATA=2015e
set -e
rm -rf work

Binary file not shown.

View File

@ -4,7 +4,7 @@
// Test that the #cgo CFLAGS directive works,
// with and without platform filters.
// See http://golang.org/issue/5224 for details.
// See https://golang.org/issue/5224 for details.
package cgotest
/*

View File

@ -64,5 +64,6 @@ func TestReturnAfterGrowFromGo(t *testing.T) { testReturnAfterGrowFromGo(t) }
func Test9026(t *testing.T) { test9026(t) }
func Test9557(t *testing.T) { test9557(t) }
func Test10303(t *testing.T) { test10303(t, 10) }
func Test11925(t *testing.T) { test11925(t) }
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }

View File

@ -0,0 +1,37 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Issue 11925. Structs with zero-length trailing fields are now
// padded by the Go compiler.
package cgotest
/*
struct a11925 {
int i;
char a[0];
char b[0];
};
struct b11925 {
int i;
char a[0];
char b[];
};
*/
import "C"
import (
"testing"
"unsafe"
)
func test11925(t *testing.T) {
if C.sizeof_struct_a11925 != unsafe.Sizeof(C.struct_a11925{}) {
t.Errorf("size of a changed: C %d, Go %d", C.sizeof_struct_a11925, unsafe.Sizeof(C.struct_a11925{}))
}
if C.sizeof_struct_b11925 != unsafe.Sizeof(C.struct_b11925{}) {
t.Errorf("size of b changed: C %d, Go %d", C.sizeof_struct_b11925, unsafe.Sizeof(C.struct_b11925{}))
}
}

View File

@ -5,7 +5,7 @@
package cgotest
// Test that cgo reserves enough stack space during cgo call.
// See http://golang.org/issue/3945 for details.
// See https://golang.org/issue/3945 for details.
// #include <stdio.h>
//

View File

@ -4,7 +4,7 @@
// Test that pthread_cancel works as expected
// (NPTL uses SIGRTMIN to implement thread cancellation)
// See http://golang.org/issue/6997
// See https://golang.org/issue/6997
package cgotest
/*

View File

@ -7,7 +7,7 @@ package cgotest
import "testing"
// This test actually doesn't have anything to do with cgo. It is a
// test of http://golang.org/issue/7234, a compiler/linker bug in
// test of https://golang.org/issue/7234, a compiler/linker bug in
// handling string constants when using -linkmode=external. The test
// is in this directory because we routinely test -linkmode=external
// here.

View File

@ -20,6 +20,7 @@ struct issue8428two {
void *p;
char b;
char rest[0];
char pad;
};
struct issue8428three {
@ -34,8 +35,10 @@ import "C"
import "unsafe"
var _ = C.struct_issue8428one{
b: C.char(0),
rest: [0]C.char{},
b: C.char(0),
// The trailing rest field is not available in cgo.
// See issue 11925.
// rest: [0]C.char{},
}
var _ = C.struct_issue8428two{

View File

@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// Test that setgid does not hang on GNU/Linux.
// See http://golang.org/issue/3871 for details.
// See https://golang.org/issue/3871 for details.
package cgotest

View File

@ -143,6 +143,10 @@ func testMain(m *testing.M) (int, error) {
}
func TestMain(m *testing.M) {
// Some of the tests install binaries into a custom GOPATH.
// That won't work if GOBIN is set.
os.Unsetenv("GOBIN")
flag.Parse()
exitCode, err := testMain(m)
if err != nil {

View File

@ -0,0 +1,10 @@
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//+build !gccgo
#include "textflag.h"
TEXT ·ImplementedInAsm(SB),NOSPLIT,$0-0
RET

View File

@ -0,0 +1,5 @@
//+build gccgo
package dep
func ImplementedInAsm() {}

View File

@ -0,0 +1,5 @@
//+build !gccgo
package dep
func ImplementedInAsm()

View File

@ -1,7 +1,12 @@
package main
import "dep"
import (
"dep"
"runtime"
)
func main() {
defer dep.ImplementedInAsm()
runtime.GC()
dep.V = dep.F() + 1
}

View File

@ -11,7 +11,7 @@
# define VAR __declspec(dllimport)
#endif
#else
# define VAR
# define VAR extern
#endif
VAR const char *exported_var;

View File

@ -23,7 +23,7 @@ function urlForInput(t) {
}
if (gerritChangeIdRE.test(t)) {
return "http://golang.org/cl/" + t;
return "https://golang.org/cl/" + t;
}
var match = commitRE.exec(t);
@ -34,7 +34,7 @@ function urlForInput(t) {
if (pkgRE.test(t)) {
// TODO: make this smarter, using a list of packages + substring matches.
// Get the list from godoc itself in JSON format?
return "http://golang.org/pkg/" + t;
return "https://golang.org/pkg/" + t;
}
return null;

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-script minSpecVersion="1.000000">
<title>Go</title>
<background mime-type="image/png" file="bg.png"/>
<options customize="never" allow-external-scripts="no"/>
<domains enable_localSystem="true" />
<installation-check script="installCheck();"/>
<script>
function installCheck() {
if(!(system.compareVersions(system.version.ProductVersion, '10.6.0') >= 0)) {
my.result.title = 'Unable to install';
my.result.message = 'Go requires Mac OS X 10.6 or later.';
my.result.type = 'Fatal';
return false;
}
if(system.files.fileExistsAtPath('/usr/local/go/bin/go')) {
my.result.title = 'Previous Installation Detected';
my.result.message = 'A previous installation of Go exists at /usr/local/go. This installer will remove the previous installation prior to installing. Please back up any data before proceeding.';
my.result.type = 'Warning';
return false;
}
return true;
}
</script>
<choices-outline>
<line choice="com.googlecode.go.choice"/>
</choices-outline>
<choice id="com.googlecode.go.choice" title="Go">
<pkg-ref id="com.googlecode.go.pkg"/>
</choice>
<pkg-ref id="com.googlecode.go.pkg" auth="Root">com.googlecode.go.pkg</pkg-ref>
</installer-script>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1 +0,0 @@
/usr/local/go/bin

View File

@ -1,10 +0,0 @@
#!/bin/bash
GOROOT=/usr/local/go
echo "Fixing permissions"
cd $GOROOT
find . -exec chmod ugo+r \{\} \;
find bin -exec chmod ugo+rx \{\} \;
find . -type d -exec chmod ugo+rx \{\} \;
chmod o-w .

View File

@ -1,8 +0,0 @@
#!/bin/bash
GOROOT=/usr/local/go
echo "Removing previous installation"
if [ -d $GOROOT ]; then
rm -r $GOROOT
fi

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,25 +0,0 @@
Windows build dependencies
- Mercurial (hg): http://mercurial.selenic.com/
- MinGW: http://www.mingw.org/
- Windows Installer XML (WiX) toolset: http://wix.sourceforge.net/
Packaging
The dependencies must be in/added to the system's search PATH.
Run bindist as normal, eg:
bindist windows-386
TODO
- Documentation server shortcut checkbox option
Misc
WiX box sizes:
- banner size: 493x58
- left side of dialog: 164x312
- full dialog size: 493x312

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,163 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!--
# Copyright 2010 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
-->
<?if $(var.Arch) = 386 ?>
<?define ProdId = {FF5B30B2-08C2-11E1-85A2-6ACA4824019B} ?>
<?define UpgradeCode = {1C3114EA-08C3-11E1-9095-7FCA4824019B} ?>
<?define SysFolder=SystemFolder ?>
<?else?>
<?define ProdId = {716c3eaa-9302-48d2-8e5e-5cfec5da2fab} ?>
<?define UpgradeCode = {22ea7650-4ac6-4001-bf29-f4b8775db1c0} ?>
<?define SysFolder=System64Folder ?>
<?endif?>
<Product
Id="FF5B30B2-08C2-11E1-85A2-6ACA4824019B"
Name="Go Programming Language $(var.Arch) $(var.GoVersion)"
Language="1033"
Codepage="1252"
Version="$(var.WixGoVersion)"
Manufacturer="http://golang.org"
UpgradeCode="$(var.UpgradeCode)" >
<Package
Id='*'
Keywords='Installer'
Description="The Go Programming Language Installer"
Comments="The Go programming language is an open source project to make programmers more productive."
InstallerVersion="300"
Compressed="yes"
InstallScope="perMachine"
SummaryCodepage="1252"
Languages="1033" />
<!-- Platform="x86 or x64" -->
<Property Id="ARPCOMMENTS" Value="The Go programming language is a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language." />
<Property Id="ARPCONTACT" Value="golang-nuts@googlegroups.com" />
<Property Id="ARPHELPLINK" Value="https://golang.org/help/" />
<Property Id="ARPREADME" Value="https://golang.org" />
<Property Id="ARPURLINFOABOUT" Value="https://golang.org" />
<Property Id="LicenseAccepted">1</Property>
<Icon Id="gopher.ico" SourceFile="images\gopher.ico"/>
<Property Id="ARPPRODUCTICON" Value="gopher.ico" />
<Media Id='1' Cabinet="go.cab" EmbedCab="yes" CompressionLevel="high" />
<Condition Message="Windows 2000 or greater required."> VersionNT >= 500</Condition>
<MajorUpgrade AllowDowngrades="yes" />
<SetDirectory Id="INSTALLDIRROOT" Value="[%SYSTEMDRIVE]"/>
<CustomAction
Id="SetApplicationRootDirectory"
Property="ARPINSTALLLOCATION"
Value="[INSTALLDIR]" />
<!-- Define the directory structure and environment variables -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIRROOT">
<Directory Id="INSTALLDIR" Name="Go"/>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="GoProgramShortcutsDir" Name="Go Programming Language"/>
</Directory>
<Directory Id="EnvironmentEntries">
<Directory Id="GoEnvironmentEntries" Name="Go Programming Language"/>
</Directory>
</Directory>
<!-- Programs Menu Shortcuts -->
<DirectoryRef Id="GoProgramShortcutsDir">
<Component Id="Component_GoProgramShortCuts" Guid="{f5fbfb5e-6c5c-423b-9298-21b0e3c98f4b}">
<Shortcut
Id="GoDocServerStartMenuShortcut"
Name="GoDocServer"
Description="Starts the Go documentation server (http://localhost:6060)"
Show="minimized"
Arguments='/c start "Godoc Server http://localhost:6060" "[INSTALLDIR]bin\godoc.exe" -http=localhost:6060 -goroot="[INSTALLDIR]." &amp;&amp; start http://localhost:6060'
Icon="gopher.ico"
Target="[%ComSpec]" />
<Shortcut
Id="UninstallShortcut"
Name="Uninstall Go"
Description="Uninstalls Go and all of its components"
Target="[$(var.SysFolder)]msiexec.exe"
Arguments="/x [ProductCode]" />
<RemoveFolder
Id="GoProgramShortcutsDir"
On="uninstall" />
<RegistryValue
Root="HKCU"
Key="Software\GoProgrammingLanguage"
Name="ShortCuts"
Type="integer"
Value="1"
KeyPath="yes" />
</Component>
</DirectoryRef>
<!-- Registry & Environment Settings -->
<DirectoryRef Id="GoEnvironmentEntries">
<Component Id="Component_GoEnvironment" Guid="{3ec7a4d5-eb08-4de7-9312-2df392c45993}">
<RegistryKey
Root="HKCU"
Key="Software\GoProgrammingLanguage"
Action="create" >
<RegistryValue
Name="installed"
Type="integer"
Value="1"
KeyPath="yes" />
<RegistryValue
Name="installLocation"
Type="string"
Value="[INSTALLDIR]" />
</RegistryKey>
<Environment
Id="GoPathEntry"
Action="set"
Part="last"
Name="PATH"
Permanent="no"
System="yes"
Value="[INSTALLDIR]bin" />
<Environment
Id="GoRoot"
Action="set"
Part="all"
Name="GOROOT"
Permanent="no"
System="yes"
Value="[INSTALLDIR]" />
<RemoveFolder
Id="GoEnvironmentEntries"
On="uninstall" />
</Component>
</DirectoryRef>
<!-- Install the files -->
<Feature
Id="GoTools"
Title="Go"
Level="1">
<ComponentRef Id="Component_GoEnvironment" />
<ComponentGroupRef Id="AppFiles" />
<ComponentRef Id="Component_GoProgramShortCuts" />
</Feature>
<!-- Update the environment -->
<InstallExecuteSequence>
<Custom Action="SetApplicationRootDirectory" Before="InstallFinalize" />
</InstallExecuteSequence>
<!-- Include the user interface -->
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="images\Banner.jpg" />
<WixVariable Id="WixUIDialogBmp" Value="images\Dialog.jpg" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<UIRef Id="WixUI_InstallDir" />
</Product>
</Wix>

View File

@ -11,7 +11,7 @@ Go 1.3 supports three architectures
limited to a 4gb window.
* nacl/arm which is 32-bit ARMv7A architecture with 1GB address space.
For background it is recommended that you read http://golang.org/s/go13nacl.
For background it is recommended that you read https://golang.org/s/go13nacl.
Prerequisites
-------------

View File

@ -2,7 +2,7 @@ This directory contains helper file for trace viewer (`go tool trace`).
`trace_viewer_lean.html` was generated by following
[instructions](https://github.com/google/trace-viewer/wiki/Embedding)
on revision `3c695b420a09db9933686fa958f1765c373c372e` using:
on revision `280626ef607decf36291e290d5f0322b173e8a7f` using:
```
trace-viewer$ ./vulcanize_trace_viewer --config=lean
trace-viewer$ cp bin/trace_viewer_lean.html $GOROOT/misc/trace/

File diff suppressed because one or more lines are too long

View File

@ -35,6 +35,13 @@ GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
-o ../bin/go_android_${GOARCH}_exec \
../misc/android/go_android_exec.go
export ANDROID_TEST_DIR=/tmp/androidtest-$$
function cleanup() {
rm -rf ${ANDROID_TEST_DIR}
}
trap cleanup EXIT
# Push GOROOT to target device.
#
# The adb sync command will sync either the /system or /data
@ -42,7 +49,7 @@ GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
# on the host. We copy the files required for running tests under
# /data/local/tmp/goroot. The adb sync command does not follow
# symlinks so we have to copy.
export ANDROID_PRODUCT_OUT=/tmp/androidtest-$$
export ANDROID_PRODUCT_OUT="${ANDROID_TEST_DIR}/out"
FAKE_GOROOT=$ANDROID_PRODUCT_OUT/data/local/tmp/goroot
mkdir -p $FAKE_GOROOT
mkdir -p $FAKE_GOROOT/pkg
@ -54,17 +61,15 @@ echo '# Syncing test files to android device'
adb shell mkdir -p /data/local/tmp/goroot
time adb sync data &> /dev/null
export CLEANER=/tmp/androidcleaner-$$
export CLEANER=${ANDROID_TEST_DIR}/androidcleaner-$$
cp ../misc/android/cleaner.go $CLEANER.go
echo 'var files = `' >> $CLEANER.go
(cd $ANDROID_PRODUCT_OUT/data/local/tmp/goroot; find . >> $CLEANER.go)
echo '`' >> $CLEANER.go
go build -o $CLEANER $CLEANER.go
adb push $CLEANER /data/local/tmp/cleaner
rm $CLEANER $CLEANER.go
adb shell /data/local/tmp/cleaner
rm -rf "$ANDROID_PRODUCT_OUT"
echo ''
# Run standard tests.

Binary file not shown.

Binary file not shown.

View File

@ -400,7 +400,6 @@ func (b *Reader) ReadBytes(delim byte) (line []byte, err error) {
// accumulating full buffers.
var frag []byte
var full [][]byte
err = nil
for {
var e error

View File

@ -115,7 +115,7 @@ func TestCompareAPI(t *testing.T) {
out: "",
},
{
// http://golang.org/issue/4303
// https://golang.org/issue/4303
name: "contexts reconverging",
required: []string{
"A",

View File

@ -26,7 +26,7 @@ func main() {
}
out, err := exec.Command("go", "tool", "api",
"-c", file("go1", "go1.1", "go1.2", "go1.3", "go1.4"),
"-c", file("go1", "go1.1", "go1.2", "go1.3", "go1.4", "go1.5"),
"-next", file("next"),
"-except", file("except")).CombinedOutput()
if err != nil {

View File

@ -79,6 +79,7 @@ var armJump = map[string]bool{
"BGT": true,
"BLE": true,
"CALL": true,
"JMP": true,
}
func jumpArm(word string) bool {

View File

@ -42,6 +42,7 @@ var arm64Jump = map[string]bool{
"CBZW": true,
"CBNZ": true,
"CBNZW": true,
"JMP": true,
}
func jumpArm64(word string) bool {

View File

@ -12,7 +12,7 @@ import "cmd/internal/obj/ppc64"
func jumpPPC64(word string) bool {
switch word {
case "BC", "BCL", "BEQ", "BGE", "BGT", "BL", "BLE", "BLT", "BNE", "BR", "BVC", "BVS", "CALL":
case "BC", "BCL", "BEQ", "BGE", "BGT", "BL", "BLE", "BLT", "BNE", "BR", "BVC", "BVS", "CALL", "JMP":
return true
}
return false

View File

@ -467,12 +467,12 @@ func (p *Parser) register(name string, prefix rune) (r1, r2 int16, scale int8, o
switch p.next().ScanToken {
case ',':
if char != '5' && char != '7' {
p.errorf("illegal register pair syntax")
p.errorf("(register,register) not supported on this architecture")
return
}
case '+':
if char != '9' {
p.errorf("illegal register pair syntax")
p.errorf("(register+register) not supported on this architecture")
return
}
}
@ -605,7 +605,7 @@ func (p *Parser) setPseudoRegister(addr *obj.Addr, reg string, isStatic bool, pr
// registerIndirect parses the general form of a register indirection.
// It is can be (R1), (R2*scale), or (R1)(R2*scale) where R1 may be a simple
// register or register pair R:R or (R, R).
// register or register pair R:R or (R, R) or (R+R).
// Or it might be a pseudo-indirection like (FP).
// We are sitting on the opening parenthesis.
func (p *Parser) registerIndirect(a *obj.Addr, prefix rune) {
@ -648,9 +648,9 @@ func (p *Parser) registerIndirect(a *obj.Addr, prefix rune) {
return
}
if p.arch.Thechar == '9' {
// Special form for PPC64: register pair (R1+R2).
// Special form for PPC64: (R1+R2); alias for (R1)(R2*1).
if prefix != 0 || scale != 0 {
p.errorf("illegal address mode for register pair")
p.errorf("illegal address mode for register+register")
return
}
a.Type = obj.TYPE_MEM

View File

@ -1,57 +1,57 @@
5 00001 (testdata/amd64.s:5) TEXT foo(SB), 0, $0
8 00002 (testdata/amd64.s:8) NEGQ R11
9 00003 (testdata/amd64.s:9) NEGQ 4(R11)
10 00004 (testdata/amd64.s:10) NEGQ foo+4(SB)
13 00005 (testdata/amd64.s:13) INT $4
14 00006 (testdata/amd64.s:14) DIVB R11
15 00007 (testdata/amd64.s:15) DIVB 4(R11)
16 00008 (testdata/amd64.s:16) DIVB foo+4(SB)
19 00009 (testdata/amd64.s:19) SUBQ $4, DI
20 00010 (testdata/amd64.s:20) SUBQ R11, DI
21 00011 (testdata/amd64.s:21) SUBQ 4(R11), DI
22 00012 (testdata/amd64.s:22) SUBQ foo+4(SB), DI
23 00013 (testdata/amd64.s:23) SUBQ $4, 8(R12)
24 00014 (testdata/amd64.s:24) SUBQ R11, 8(R12)
25 00015 (testdata/amd64.s:25) SUBQ R11, foo+4(SB)
28 00016 (testdata/amd64.s:28) CMPB CX, $4
32 00017 (testdata/amd64.s:32) JCS 13(PC)
33 00018 (testdata/amd64.s:33) JCS 17
36 00019 (testdata/amd64.s:36) JMP 15(PC)
37 00020 (testdata/amd64.s:37) JMP 17
38 00021 (testdata/amd64.s:38) JMP foo+4(SB)
39 00022 (testdata/amd64.s:39) JMP bar<>+4(SB)
40 00023 (testdata/amd64.s:40) JMP bar<>+4(SB)(R11*4)
41 00024 (testdata/amd64.s:41) JMP 4(SP)
42 00025 (testdata/amd64.s:42) JMP (R12)
44 00026 (testdata/amd64.s:44) JMP (R12)(R13*4)
45 00027 (testdata/amd64.s:45) JMP (AX)
46 00028 (testdata/amd64.s:46) JMP (SP)
48 00029 (testdata/amd64.s:48) JMP (AX)(AX*4)
49 00030 (testdata/amd64.s:49) JMP 4(SP)
50 00031 (testdata/amd64.s:50) JMP (R12)
52 00032 (testdata/amd64.s:52) JMP (R12)(R13*4)
53 00033 (testdata/amd64.s:53) JMP (AX)
54 00034 (testdata/amd64.s:54) JMP (SP)
56 00035 (testdata/amd64.s:56) JMP (AX)(AX*4)
57 00036 (testdata/amd64.s:57) JMP R13
60 00037 (testdata/amd64.s:60) NOP
61 00038 (testdata/amd64.s:61) NOP AX
62 00039 (testdata/amd64.s:62) NOP foo+4(SB)
65 00040 (testdata/amd64.s:65) SHLL R11, R12
66 00041 (testdata/amd64.s:66) SHLL R11, foo+4(SB)
67 00042 (testdata/amd64.s:67) SHLL R11, AX, R11
70 00043 (testdata/amd64.s:70) MOVL AX, R11
71 00044 (testdata/amd64.s:71) MOVL $4, R11
72 00045 (testdata/amd64.s:72) MOVL AX, CS, AX
75 00046 (testdata/amd64.s:75) IMULB $4
76 00047 (testdata/amd64.s:76) IMULB R11
77 00048 (testdata/amd64.s:77) IMULB $4, R11
78 00049 (testdata/amd64.s:78) IMULB R11, R12
79 00050 (testdata/amd64.s:79) IMULB R11, foo+4(SB)
82 00051 (testdata/amd64.s:82) CMPPD R11, R12, 4
83 00052 (testdata/amd64.s:83) CMPPD R11, foo+4(SB), 4
86 00053 (testdata/amd64.s:86) PINSRW $4, R11, AX
87 00054 (testdata/amd64.s:87) PINSRW $4, foo+4(SB), AX
90 00055 (testdata/amd64.s:90) RETFL $4
94 00056 (testdata/amd64.s:94) LOOP
97 00057 (testdata/amd64.s:97) RET
9 00001 (testdata/amd64.s:9) TEXT foo(SB), 0, $0
12 00002 (testdata/amd64.s:12) NEGQ R11
13 00003 (testdata/amd64.s:13) NEGQ 4(R11)
14 00004 (testdata/amd64.s:14) NEGQ foo+4(SB)
17 00005 (testdata/amd64.s:17) INT $4
18 00006 (testdata/amd64.s:18) DIVB R11
19 00007 (testdata/amd64.s:19) DIVB 4(R11)
20 00008 (testdata/amd64.s:20) DIVB foo+4(SB)
23 00009 (testdata/amd64.s:23) SUBQ $4, DI
24 00010 (testdata/amd64.s:24) SUBQ R11, DI
25 00011 (testdata/amd64.s:25) SUBQ 4(R11), DI
26 00012 (testdata/amd64.s:26) SUBQ foo+4(SB), DI
27 00013 (testdata/amd64.s:27) SUBQ $4, 8(R12)
28 00014 (testdata/amd64.s:28) SUBQ R11, 8(R12)
29 00015 (testdata/amd64.s:29) SUBQ R11, foo+4(SB)
32 00016 (testdata/amd64.s:32) CMPB CX, $4
36 00017 (testdata/amd64.s:36) JCS 13(PC)
37 00018 (testdata/amd64.s:37) JCS 17
40 00019 (testdata/amd64.s:40) JMP 15(PC)
41 00020 (testdata/amd64.s:41) JMP 17
42 00021 (testdata/amd64.s:42) JMP foo+4(SB)
43 00022 (testdata/amd64.s:43) JMP bar<>+4(SB)
44 00023 (testdata/amd64.s:44) JMP bar<>+4(SB)(R11*4)
45 00024 (testdata/amd64.s:45) JMP 4(SP)
46 00025 (testdata/amd64.s:46) JMP (R12)
48 00026 (testdata/amd64.s:48) JMP (R12)(R13*4)
49 00027 (testdata/amd64.s:49) JMP (AX)
50 00028 (testdata/amd64.s:50) JMP (SP)
52 00029 (testdata/amd64.s:52) JMP (AX)(AX*4)
53 00030 (testdata/amd64.s:53) JMP 4(SP)
54 00031 (testdata/amd64.s:54) JMP (R12)
56 00032 (testdata/amd64.s:56) JMP (R12)(R13*4)
57 00033 (testdata/amd64.s:57) JMP (AX)
58 00034 (testdata/amd64.s:58) JMP (SP)
60 00035 (testdata/amd64.s:60) JMP (AX)(AX*4)
61 00036 (testdata/amd64.s:61) JMP R13
64 00037 (testdata/amd64.s:64) NOP
65 00038 (testdata/amd64.s:65) NOP AX
66 00039 (testdata/amd64.s:66) NOP foo+4(SB)
69 00040 (testdata/amd64.s:69) SHLL R11, R12
70 00041 (testdata/amd64.s:70) SHLL R11, foo+4(SB)
71 00042 (testdata/amd64.s:71) SHLL R11, AX, R11
74 00043 (testdata/amd64.s:74) MOVL AX, R11
75 00044 (testdata/amd64.s:75) MOVL $4, R11
76 00045 (testdata/amd64.s:76) MOVL AX, CS, AX
79 00046 (testdata/amd64.s:79) IMULB $4
80 00047 (testdata/amd64.s:80) IMULB R11
81 00048 (testdata/amd64.s:81) IMULB $4, R11
82 00049 (testdata/amd64.s:82) IMULB R11, R12
83 00050 (testdata/amd64.s:83) IMULB R11, foo+4(SB)
86 00051 (testdata/amd64.s:86) CMPPD R11, R12, 4
87 00052 (testdata/amd64.s:87) CMPPD R11, foo+4(SB), 4
90 00053 (testdata/amd64.s:90) PINSRW $4, R11, AX
91 00054 (testdata/amd64.s:91) PINSRW $4, foo+4(SB), AX
94 00055 (testdata/amd64.s:94) RETFL $4
98 00056 (testdata/amd64.s:98) LOOP
101 00057 (testdata/amd64.s:101) RET

View File

@ -1,3 +1,7 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This input was created by taking the instruction productions in
// the old assembler's (6a's) grammar and hand-writing complete
// instructions for each rule, to guarantee we cover the same space.

View File

@ -1,55 +1,59 @@
5 00001 (testdata/arm.s:5) TEXT foo(SB), 0, $0
14 00002 (testdata/arm.s:14) ADD $1, R2, R3
15 00003 (testdata/arm.s:15) ADD R1<<R2, R3, R4
16 00004 (testdata/arm.s:16) ADD R1>>R2, R3, R4
17 00005 (testdata/arm.s:17) ADD R1@>R2, R3, R4
18 00006 (testdata/arm.s:18) ADD R1->R2, R3, R4
19 00007 (testdata/arm.s:19) ADD R1, R2, R3
20 00008 (testdata/arm.s:20) ADD R1<<R2, R3, R4
30 00009 (testdata/arm.s:30) ADD $1, R2
31 00010 (testdata/arm.s:31) ADD R1<<R2, R3
32 00011 (testdata/arm.s:32) ADD R1>>R2, R3
33 00012 (testdata/arm.s:33) ADD R1@>R2, R3
34 00013 (testdata/arm.s:34) ADD R1->R2, R3
35 00014 (testdata/arm.s:35) ADD R1, R2
44 00015 (testdata/arm.s:44) CLZ.S R1, R2
53 00016 (testdata/arm.s:53) MOVW.S R1, R2
54 00017 (testdata/arm.s:54) MOVW.S $1, R2
55 00018 (testdata/arm.s:55) MOVW.S R1<<R2, R3
64 00019 (testdata/arm.s:64) JMP.S 20(PC)
70 00020 (testdata/arm.s:70) JMP.S (R2)
71 00021 (testdata/arm.s:71) JMP.S foo(SB)
72 00022 (testdata/arm.s:72) JMP.S bar<>(SB)
81 00023 (testdata/arm.s:81) BX (R2)
90 00024 (testdata/arm.s:90) BEQ 25(PC)
99 00025 (testdata/arm.s:99) SWI.S R1
100 00026 (testdata/arm.s:100) SWI.S (R1)
101 00027 (testdata/arm.s:101) SWI.S foo(SB)
110 00028 (testdata/arm.s:110) CMP.S $1, R2
111 00029 (testdata/arm.s:111) CMP.S R1<<R2, R3
112 00030 (testdata/arm.s:112) CMP.S R1, R2
126 00031 (testdata/arm.s:126) MOVM (R1), [R2,R5,R8,g]
127 00032 (testdata/arm.s:127) MOVM (R1), [R2,R3,R4,R5]
128 00033 (testdata/arm.s:128) MOVM.S (R1), [R2]
139 00034 (testdata/arm.s:139) MOVM [R2,R5,R8,g], (R1)
140 00035 (testdata/arm.s:140) MOVM [R2,R3,R4,R5], (R1)
141 00036 (testdata/arm.s:141) MOVM.S [R2], (R1)
150 00037 (testdata/arm.s:150) STREX.S (R2), R1, R3
156 00038 (testdata/arm.s:156) STREX.S (R2), R1, R1
162 00039 (testdata/arm.s:162) STREX.S (R2), R3, R3
170 00040 (testdata/arm.s:170) CASE.S R1
179 00041 (testdata/arm.s:179) WORD $1234
188 00042 (testdata/arm.s:188) ABSF.S F1, F2
194 00043 (testdata/arm.s:194) ADDD.S F1, F2
195 00044 (testdata/arm.s:195) ADDD.S $(0.5), F2
201 00045 (testdata/arm.s:201) ADDD.S F1, F2, F3
202 00046 (testdata/arm.s:202) ADDD.S $(0.5), F2, F3
208 00047 (testdata/arm.s:208) CMPD.S F1, F2
232 00048 (testdata/arm.s:232) MRC $8301712627
233 00049 (testdata/arm.s:233) MRC $8300664051
242 00050 (testdata/arm.s:242) MULL R1, R2, (R3, R4)
254 00051 (testdata/arm.s:254) MULAWT R1, R2, R3, R4
262 00052 (testdata/arm.s:262) PLD (R1)
263 00053 (testdata/arm.s:263) PLD 4(R1)
272 00054 (testdata/arm.s:272) RET
281 00055 (testdata/arm.s:281) END
9 00001 (testdata/arm.s:9) TEXT foo(SB), 0, $0
18 00002 (testdata/arm.s:18) ADD $1, R2, R3
19 00003 (testdata/arm.s:19) ADD R1<<R2, R3, R4
20 00004 (testdata/arm.s:20) ADD R1>>R2, R3, R4
21 00005 (testdata/arm.s:21) ADD R1@>R2, R3, R4
22 00006 (testdata/arm.s:22) ADD R1->R2, R3, R4
23 00007 (testdata/arm.s:23) ADD R1, R2, R3
24 00008 (testdata/arm.s:24) ADD R1<<R2, R3, R4
34 00009 (testdata/arm.s:34) ADD $1, R2
35 00010 (testdata/arm.s:35) ADD R1<<R2, R3
36 00011 (testdata/arm.s:36) ADD R1>>R2, R3
37 00012 (testdata/arm.s:37) ADD R1@>R2, R3
38 00013 (testdata/arm.s:38) ADD R1->R2, R3
39 00014 (testdata/arm.s:39) ADD R1, R2
48 00015 (testdata/arm.s:48) CLZ.S R1, R2
57 00016 (testdata/arm.s:57) MOVW.S R1, R2
58 00017 (testdata/arm.s:58) MOVW.S $1, R2
59 00018 (testdata/arm.s:59) MOVW.S R1<<R2, R3
68 00019 (testdata/arm.s:68) JMP.S 20(PC)
74 00020 (testdata/arm.s:74) JMP.S (R2)
75 00021 (testdata/arm.s:75) JMP.S foo(SB)
76 00022 (testdata/arm.s:76) JMP.S bar<>(SB)
85 00023 (testdata/arm.s:85) BX (R2)
94 00024 (testdata/arm.s:94) BEQ 25(PC)
103 00025 (testdata/arm.s:103) SWI.S R1
104 00026 (testdata/arm.s:104) SWI.S (R1)
105 00027 (testdata/arm.s:105) SWI.S foo(SB)
114 00028 (testdata/arm.s:114) CMP.S $1, R2
115 00029 (testdata/arm.s:115) CMP.S R1<<R2, R3
116 00030 (testdata/arm.s:116) CMP.S R1, R2
130 00031 (testdata/arm.s:130) MOVM (R1), [R2,R5,R8,g]
131 00032 (testdata/arm.s:131) MOVM (R1), [R2,R3,R4,R5]
132 00033 (testdata/arm.s:132) MOVM.S (R1), [R2]
143 00034 (testdata/arm.s:143) MOVM [R2,R5,R8,g], (R1)
144 00035 (testdata/arm.s:144) MOVM [R2,R3,R4,R5], (R1)
145 00036 (testdata/arm.s:145) MOVM.S [R2], (R1)
154 00037 (testdata/arm.s:154) STREX.S (R2), R1, R3
160 00038 (testdata/arm.s:160) STREX.S (R2), R1, R1
166 00039 (testdata/arm.s:166) STREX.S (R2), R3, R3
174 00040 (testdata/arm.s:174) CASE.S R1
183 00041 (testdata/arm.s:183) WORD $1234
192 00042 (testdata/arm.s:192) ABSF.S F1, F2
198 00043 (testdata/arm.s:198) ADDD.S F1, F2
199 00044 (testdata/arm.s:199) ADDD.S $(0.5), F2
205 00045 (testdata/arm.s:205) ADDD.S F1, F2, F3
206 00046 (testdata/arm.s:206) ADDD.S $(0.5), F2, F3
212 00047 (testdata/arm.s:212) CMPD.S F1, F2
236 00048 (testdata/arm.s:236) MRC $8301712627
237 00049 (testdata/arm.s:237) MRC $8300664051
246 00050 (testdata/arm.s:246) MULL R1, R2, (R3, R4)
258 00051 (testdata/arm.s:258) MULAWT R1, R2, R3, R4
266 00052 (testdata/arm.s:266) PLD (R1)
267 00053 (testdata/arm.s:267) PLD 4(R1)
276 00054 (testdata/arm.s:276) RET
280 00055 (testdata/arm.s:280) JMP foo(SB)
281 00056 (testdata/arm.s:281) CALL foo(SB)
282 00057 (testdata/arm.s:282) JMP foo(SB)
283 00058 (testdata/arm.s:283) CALL foo(SB)
292 00059 (testdata/arm.s:292) END

View File

@ -1,3 +1,7 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This input was created by taking the instruction productions in
// the old assembler's (5a's) grammar and hand-writing complete
// instructions for each rule, to guarantee we cover the same space.
@ -271,6 +275,13 @@ TEXT foo(SB), 0, $0
// }
RET
// More B/BL cases, and canonical names JMP, CALL.
B foo(SB)
BL foo(SB)
JMP foo(SB)
CALL foo(SB)
//
// END
//

View File

@ -1,51 +1,55 @@
5 00001 (testdata/arm64.s:5) TEXT foo(SB), 7, $-8
16 00002 (testdata/arm64.s:16) ADDW $1, R2, R3
17 00003 (testdata/arm64.s:17) ADDW R1, R2, R3
18 00004 (testdata/arm64.s:18) ADDW R1, ZR, R3
19 00005 (testdata/arm64.s:19) ADD $1, R2, R3
20 00006 (testdata/arm64.s:20) ADD R1, R2, R3
21 00007 (testdata/arm64.s:21) ADD R1, ZR, R3
22 00008 (testdata/arm64.s:22) ADD $1, R2, R3
32 00009 (testdata/arm64.s:32) ADDW $1, R2
33 00010 (testdata/arm64.s:33) ADDW R1, R2
34 00011 (testdata/arm64.s:34) ADD $1, R2
35 00012 (testdata/arm64.s:35) ADD R1, R2
44 00013 (testdata/arm64.s:44) CLSW R1, R2
45 00014 (testdata/arm64.s:45) CLS R1, R2
54 00015 (testdata/arm64.s:54) MOVW R1, R2
55 00016 (testdata/arm64.s:55) MOVW ZR, R1
56 00017 (testdata/arm64.s:56) MOVW R1, ZR
57 00018 (testdata/arm64.s:57) MOVW $1, ZR
58 00019 (testdata/arm64.s:58) MOVW $1, R1
59 00020 (testdata/arm64.s:59) MOVW ZR, (R1)
60 00021 (testdata/arm64.s:60) MOVD R1, R2
61 00022 (testdata/arm64.s:61) MOVD ZR, R1
62 00023 (testdata/arm64.s:62) MOVD $1, ZR
63 00024 (testdata/arm64.s:63) MOVD $1, R1
64 00025 (testdata/arm64.s:64) MOVD ZR, (R1)
73 00026 (testdata/arm64.s:73) MOVK $1, R1
82 00027 (testdata/arm64.s:82) CALL 28(PC)
88 00028 (testdata/arm64.s:88) CALL (R2)
89 00029 (testdata/arm64.s:89) CALL foo(SB)
90 00030 (testdata/arm64.s:90) CALL bar<>(SB)
98 00031 (testdata/arm64.s:98) BEQ 32(PC)
106 00032 (testdata/arm64.s:106) SVC
115 00033 (testdata/arm64.s:115) CMP $3, R2
116 00034 (testdata/arm64.s:116) CMP R1, R2
126 00035 (testdata/arm64.s:126) CBZ R1
135 00036 (testdata/arm64.s:135) CSET GT, R1
143 00037 (testdata/arm64.s:143) CSEL LT, R1, R2, ZR
144 00038 (testdata/arm64.s:144) CSINC GT, R1, ZR, R3
145 00039 (testdata/arm64.s:145) CSNEG MI, R1, R2, R3
146 00040 (testdata/arm64.s:146) CSINV 0, R1, R2, R3
152 00041 (testdata/arm64.s:152) CSEL LT, R1, R2
160 00042 (testdata/arm64.s:160) CCMN MI, ZR, R1, $4
169 00043 (testdata/arm64.s:169) FADDD $(0.5), F1
170 00044 (testdata/arm64.s:170) FADDD F1, F2
176 00045 (testdata/arm64.s:176) FADDD $(0.69999999999999996), F1, F2
177 00046 (testdata/arm64.s:177) FADDD F1, F2, F3
229 00047 (testdata/arm64.s:229) DMB $1
238 00048 (testdata/arm64.s:238) LDAXRW (R0), R2
239 00049 (testdata/arm64.s:239) STLXRW R1, (R0), R3
247 00050 (testdata/arm64.s:247) RET
255 00051 (testdata/arm64.s:255) END
9 00001 (testdata/arm64.s:9) TEXT foo(SB), 7, $-8
20 00002 (testdata/arm64.s:20) ADDW $1, R2, R3
21 00003 (testdata/arm64.s:21) ADDW R1, R2, R3
22 00004 (testdata/arm64.s:22) ADDW R1, ZR, R3
23 00005 (testdata/arm64.s:23) ADD $1, R2, R3
24 00006 (testdata/arm64.s:24) ADD R1, R2, R3
25 00007 (testdata/arm64.s:25) ADD R1, ZR, R3
26 00008 (testdata/arm64.s:26) ADD $1, R2, R3
36 00009 (testdata/arm64.s:36) ADDW $1, R2
37 00010 (testdata/arm64.s:37) ADDW R1, R2
38 00011 (testdata/arm64.s:38) ADD $1, R2
39 00012 (testdata/arm64.s:39) ADD R1, R2
48 00013 (testdata/arm64.s:48) CLSW R1, R2
49 00014 (testdata/arm64.s:49) CLS R1, R2
58 00015 (testdata/arm64.s:58) MOVW R1, R2
59 00016 (testdata/arm64.s:59) MOVW ZR, R1
60 00017 (testdata/arm64.s:60) MOVW R1, ZR
61 00018 (testdata/arm64.s:61) MOVW $1, ZR
62 00019 (testdata/arm64.s:62) MOVW $1, R1
63 00020 (testdata/arm64.s:63) MOVW ZR, (R1)
64 00021 (testdata/arm64.s:64) MOVD R1, R2
65 00022 (testdata/arm64.s:65) MOVD ZR, R1
66 00023 (testdata/arm64.s:66) MOVD $1, ZR
67 00024 (testdata/arm64.s:67) MOVD $1, R1
68 00025 (testdata/arm64.s:68) MOVD ZR, (R1)
77 00026 (testdata/arm64.s:77) MOVK $1, R1
86 00027 (testdata/arm64.s:86) CALL 28(PC)
92 00028 (testdata/arm64.s:92) CALL (R2)
93 00029 (testdata/arm64.s:93) CALL foo(SB)
94 00030 (testdata/arm64.s:94) CALL bar<>(SB)
102 00031 (testdata/arm64.s:102) BEQ 32(PC)
110 00032 (testdata/arm64.s:110) SVC
119 00033 (testdata/arm64.s:119) CMP $3, R2
120 00034 (testdata/arm64.s:120) CMP R1, R2
130 00035 (testdata/arm64.s:130) CBZ R1
139 00036 (testdata/arm64.s:139) CSET GT, R1
147 00037 (testdata/arm64.s:147) CSEL LT, R1, R2, ZR
148 00038 (testdata/arm64.s:148) CSINC GT, R1, ZR, R3
149 00039 (testdata/arm64.s:149) CSNEG MI, R1, R2, R3
150 00040 (testdata/arm64.s:150) CSINV 0, R1, R2, R3
156 00041 (testdata/arm64.s:156) CSEL LT, R1, R2
164 00042 (testdata/arm64.s:164) CCMN MI, ZR, R1, $4
173 00043 (testdata/arm64.s:173) FADDD $(0.5), F1
174 00044 (testdata/arm64.s:174) FADDD F1, F2
180 00045 (testdata/arm64.s:180) FADDD $(0.69999999999999996), F1, F2
181 00046 (testdata/arm64.s:181) FADDD F1, F2, F3
233 00047 (testdata/arm64.s:233) DMB $1
242 00048 (testdata/arm64.s:242) LDAXRW (R0), R2
243 00049 (testdata/arm64.s:243) STLXRW R1, (R0), R3
251 00050 (testdata/arm64.s:251) RET
255 00051 (testdata/arm64.s:255) JMP foo(SB)
256 00052 (testdata/arm64.s:256) CALL foo(SB)
257 00053 (testdata/arm64.s:257) JMP foo(SB)
258 00054 (testdata/arm64.s:258) CALL foo(SB)
266 00055 (testdata/arm64.s:266) END

View File

@ -1,3 +1,7 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This input was created by taking the instruction productions in
// the old assembler's (7a's) grammar and hand-writing complete
// instructions for each rule, to guarantee we cover the same space.
@ -246,6 +250,13 @@ again:
// }
RET
// More B/BL cases, and canonical names JMP, CALL.
B foo(SB)
BL foo(SB)
JMP foo(SB)
CALL foo(SB)
// END
//
// LTYPEE comma

View File

@ -1,110 +1,114 @@
5 00001 (testdata/ppc64.s:5) TEXT foo(SB), 0, $0
15 00002 (testdata/ppc64.s:15) MOVW R1, R2
21 00003 (testdata/ppc64.s:21) MOVW foo<>+3(SB), R2
22 00004 (testdata/ppc64.s:22) MOVW 16(R1), R2
28 00005 (testdata/ppc64.s:28) MOVW (R1), R2
29 00006 (testdata/ppc64.s:29) MOVW (R1)(R2*1), R3
35 00007 (testdata/ppc64.s:35) MOVW R1, R2
41 00008 (testdata/ppc64.s:41) MOVB foo<>+3(SB), R2
42 00009 (testdata/ppc64.s:42) MOVB 16(R1), R2
48 00010 (testdata/ppc64.s:48) MOVB (R1), R2
49 00011 (testdata/ppc64.s:49) MOVB (R1)(R2*1), R3
58 00012 (testdata/ppc64.s:58) FMOVD foo<>+3(SB), F2
59 00013 (testdata/ppc64.s:59) FMOVD 16(R1), F2
65 00014 (testdata/ppc64.s:65) FMOVD (R1), F2
71 00015 (testdata/ppc64.s:71) FMOVD $(0.10000000000000001), F2
77 00016 (testdata/ppc64.s:77) FMOVD F1, F2
83 00017 (testdata/ppc64.s:83) FMOVD F2, foo<>+3(SB)
84 00018 (testdata/ppc64.s:84) FMOVD F2, 16(R1)
90 00019 (testdata/ppc64.s:90) FMOVD F2, (R1)
99 00020 (testdata/ppc64.s:99) MOVW R1, foo<>+3(SB)
100 00021 (testdata/ppc64.s:100) MOVW R1, 16(R2)
106 00022 (testdata/ppc64.s:106) MOVW R1, (R1)
107 00023 (testdata/ppc64.s:107) MOVW R1, (R2)(R3*1)
113 00024 (testdata/ppc64.s:113) MOVB R1, foo<>+3(SB)
114 00025 (testdata/ppc64.s:114) MOVB R1, 16(R2)
120 00026 (testdata/ppc64.s:120) MOVB R1, (R1)
121 00027 (testdata/ppc64.s:121) MOVB R1, (R2)(R3*1)
129 00028 (testdata/ppc64.s:129) FMOVD F1, foo<>+3(SB)
130 00029 (testdata/ppc64.s:130) FMOVD F1, 16(R2)
136 00030 (testdata/ppc64.s:136) FMOVD F1, (R1)
145 00031 (testdata/ppc64.s:145) MOVFL FPSCR, F1
151 00032 (testdata/ppc64.s:151) MOVFL F1, FPSCR
157 00033 (testdata/ppc64.s:157) MOVFL F1, $4, FPSCR
163 00034 (testdata/ppc64.s:163) MOVFL FPSCR, CR0
184 00035 (testdata/ppc64.s:184) MOVW R1, CR1
190 00036 (testdata/ppc64.s:190) MOVW R1, CR
202 00037 (testdata/ppc64.s:202) ADD R1, R2, R3
208 00038 (testdata/ppc64.s:208) ADD $1, R2, R3
220 00039 (testdata/ppc64.s:220) ADD R1, R2
226 00040 (testdata/ppc64.s:226) ADD $4, R1
232 00041 (testdata/ppc64.s:232) ADDE R1, R2, R3
238 00042 (testdata/ppc64.s:238) ADDE R1, R2
244 00043 (testdata/ppc64.s:244) SLW R1, R2, R3
250 00044 (testdata/ppc64.s:250) SLW R1, R2
256 00045 (testdata/ppc64.s:256) SLW $4, R1, R2
262 00046 (testdata/ppc64.s:262) SLW $4, R1
268 00047 (testdata/ppc64.s:268) SLW $4, R1
274 00048 (testdata/ppc64.s:274) SUBME R1, R1
292 00049 (testdata/ppc64.s:292) MOVW $1, R1
298 00050 (testdata/ppc64.s:298) MOVW $1, R1
299 00051 (testdata/ppc64.s:299) MOVW $foo(SB), R1
323 00052 (testdata/ppc64.s:323) MOVFL CR0, CR1
335 00053 (testdata/ppc64.s:335) MOVW CR, R1
341 00054 (testdata/ppc64.s:341) MOVW SPR(0), R1
342 00055 (testdata/ppc64.s:342) MOVW SPR(7), R1
348 00056 (testdata/ppc64.s:348) MOVW LR, R1
349 00057 (testdata/ppc64.s:349) MOVW CTR, R1
355 00058 (testdata/ppc64.s:355) MOVW R1, LR
356 00059 (testdata/ppc64.s:356) MOVW R1, CTR
368 00060 (testdata/ppc64.s:368) MOVW R1, SPR(7)
380 00061 (testdata/ppc64.s:380) JMP 62(PC)
381 00062 (testdata/ppc64.s:381) JMP 61
387 00063 (testdata/ppc64.s:387) JMP 4(R1)
388 00064 (testdata/ppc64.s:388) JMP foo(SB)
394 00065 (testdata/ppc64.s:394) JMP CTR
413 00066 (testdata/ppc64.s:413) BEQ CR1, 67(PC)
414 00067 (testdata/ppc64.s:414) BEQ CR1, 66
440 00068 (testdata/ppc64.s:440) BC 4, CTR
450 00069 (testdata/ppc64.s:450) BC $3, R4, 66
470 00070 (testdata/ppc64.s:470) BC $3, R3, LR
500 00071 (testdata/ppc64.s:500) FABS F1, F2
506 00072 (testdata/ppc64.s:506) FADD F1, F2
512 00073 (testdata/ppc64.s:512) FADD F1, F2, F3
518 00074 (testdata/ppc64.s:518) FMADD F1, F2, F3, F4
524 00075 (testdata/ppc64.s:524) FCMPU F1, F2
530 00076 (testdata/ppc64.s:530) FCMPU F1, F2, CR0
539 00077 (testdata/ppc64.s:539) CMP R1, R2
545 00078 (testdata/ppc64.s:545) CMP R1, $4
551 00079 (testdata/ppc64.s:551) CMP R1, CR0, R2
557 00080 (testdata/ppc64.s:557) CMP R1, CR0, $4
566 00081 (testdata/ppc64.s:566) RLDC $4, R1, $5, R2
572 00082 (testdata/ppc64.s:572) RLDC $26, R1, $201326592, R2
578 00083 (testdata/ppc64.s:578) RLDC R1, R2, $4, R3
584 00084 (testdata/ppc64.s:584) RLWMI R1, R2, $201326592, R3
593 00085 (testdata/ppc64.s:593) MOVMW foo(SB), R2
594 00086 (testdata/ppc64.s:594) MOVMW 4(R1), R2
600 00087 (testdata/ppc64.s:600) MOVMW R1, foo(SB)
601 00088 (testdata/ppc64.s:601) MOVMW R1, 4(R2)
611 00089 (testdata/ppc64.s:611) LSW (R1), R2
612 00090 (testdata/ppc64.s:612) LSW (R1)(R2*1), R3
618 00091 (testdata/ppc64.s:618) LSW (R1), $1, R2
619 00092 (testdata/ppc64.s:619) LSW (R1)(R2*1), $1, R3
625 00093 (testdata/ppc64.s:625) STSW R1, (R2)
626 00094 (testdata/ppc64.s:626) STSW R1, (R2)(R3*1)
632 00095 (testdata/ppc64.s:632) STSW R1, $1, (R2)
633 00096 (testdata/ppc64.s:633) STSW R1, $1, (R2)(R3*1)
639 00097 (testdata/ppc64.s:639) MOVHBR (R1), R2
640 00098 (testdata/ppc64.s:640) MOVHBR (R1)(R2*1), R3
646 00099 (testdata/ppc64.s:646) MOVHBR R1, (R2)
647 00100 (testdata/ppc64.s:647) MOVHBR R1, (R2)(R3*1)
653 00101 (testdata/ppc64.s:653) DCBF (R1)
654 00102 (testdata/ppc64.s:654) DCBF (R1)(R2*1)
663 00103 (testdata/ppc64.s:663) NOP
669 00104 (testdata/ppc64.s:669) NOP R2
675 00105 (testdata/ppc64.s:675) NOP F2
681 00106 (testdata/ppc64.s:681) NOP R2
687 00107 (testdata/ppc64.s:687) NOP F2
693 00108 (testdata/ppc64.s:693) NOP $4
701 00109 (testdata/ppc64.s:701) RET
709 00110 (testdata/ppc64.s:709) END
9 00001 (testdata/ppc64.s:9) TEXT foo(SB), 0, $0
19 00002 (testdata/ppc64.s:19) MOVW R1, R2
25 00003 (testdata/ppc64.s:25) MOVW foo<>+3(SB), R2
26 00004 (testdata/ppc64.s:26) MOVW 16(R1), R2
32 00005 (testdata/ppc64.s:32) MOVW (R1), R2
33 00006 (testdata/ppc64.s:33) MOVW (R1)(R2*1), R3
39 00007 (testdata/ppc64.s:39) MOVW R1, R2
45 00008 (testdata/ppc64.s:45) MOVB foo<>+3(SB), R2
46 00009 (testdata/ppc64.s:46) MOVB 16(R1), R2
52 00010 (testdata/ppc64.s:52) MOVB (R1), R2
53 00011 (testdata/ppc64.s:53) MOVB (R1)(R2*1), R3
62 00012 (testdata/ppc64.s:62) FMOVD foo<>+3(SB), F2
63 00013 (testdata/ppc64.s:63) FMOVD 16(R1), F2
69 00014 (testdata/ppc64.s:69) FMOVD (R1), F2
75 00015 (testdata/ppc64.s:75) FMOVD $(0.10000000000000001), F2
81 00016 (testdata/ppc64.s:81) FMOVD F1, F2
87 00017 (testdata/ppc64.s:87) FMOVD F2, foo<>+3(SB)
88 00018 (testdata/ppc64.s:88) FMOVD F2, 16(R1)
94 00019 (testdata/ppc64.s:94) FMOVD F2, (R1)
103 00020 (testdata/ppc64.s:103) MOVW R1, foo<>+3(SB)
104 00021 (testdata/ppc64.s:104) MOVW R1, 16(R2)
110 00022 (testdata/ppc64.s:110) MOVW R1, (R1)
111 00023 (testdata/ppc64.s:111) MOVW R1, (R2)(R3*1)
117 00024 (testdata/ppc64.s:117) MOVB R1, foo<>+3(SB)
118 00025 (testdata/ppc64.s:118) MOVB R1, 16(R2)
124 00026 (testdata/ppc64.s:124) MOVB R1, (R1)
125 00027 (testdata/ppc64.s:125) MOVB R1, (R2)(R3*1)
133 00028 (testdata/ppc64.s:133) FMOVD F1, foo<>+3(SB)
134 00029 (testdata/ppc64.s:134) FMOVD F1, 16(R2)
140 00030 (testdata/ppc64.s:140) FMOVD F1, (R1)
149 00031 (testdata/ppc64.s:149) MOVFL FPSCR, F1
155 00032 (testdata/ppc64.s:155) MOVFL F1, FPSCR
161 00033 (testdata/ppc64.s:161) MOVFL F1, $4, FPSCR
167 00034 (testdata/ppc64.s:167) MOVFL FPSCR, CR0
188 00035 (testdata/ppc64.s:188) MOVW R1, CR1
194 00036 (testdata/ppc64.s:194) MOVW R1, CR
206 00037 (testdata/ppc64.s:206) ADD R1, R2, R3
212 00038 (testdata/ppc64.s:212) ADD $1, R2, R3
224 00039 (testdata/ppc64.s:224) ADD R1, R2
230 00040 (testdata/ppc64.s:230) ADD $4, R1
236 00041 (testdata/ppc64.s:236) ADDE R1, R2, R3
242 00042 (testdata/ppc64.s:242) ADDE R1, R2
248 00043 (testdata/ppc64.s:248) SLW R1, R2, R3
254 00044 (testdata/ppc64.s:254) SLW R1, R2
260 00045 (testdata/ppc64.s:260) SLW $4, R1, R2
266 00046 (testdata/ppc64.s:266) SLW $4, R1
272 00047 (testdata/ppc64.s:272) SLW $4, R1
278 00048 (testdata/ppc64.s:278) SUBME R1, R1
296 00049 (testdata/ppc64.s:296) MOVW $1, R1
302 00050 (testdata/ppc64.s:302) MOVW $1, R1
303 00051 (testdata/ppc64.s:303) MOVW $foo(SB), R1
327 00052 (testdata/ppc64.s:327) MOVFL CR0, CR1
339 00053 (testdata/ppc64.s:339) MOVW CR, R1
345 00054 (testdata/ppc64.s:345) MOVW SPR(0), R1
346 00055 (testdata/ppc64.s:346) MOVW SPR(7), R1
352 00056 (testdata/ppc64.s:352) MOVW LR, R1
353 00057 (testdata/ppc64.s:353) MOVW CTR, R1
359 00058 (testdata/ppc64.s:359) MOVW R1, LR
360 00059 (testdata/ppc64.s:360) MOVW R1, CTR
372 00060 (testdata/ppc64.s:372) MOVW R1, SPR(7)
384 00061 (testdata/ppc64.s:384) JMP 62(PC)
385 00062 (testdata/ppc64.s:385) JMP 61
391 00063 (testdata/ppc64.s:391) JMP 4(R1)
392 00064 (testdata/ppc64.s:392) JMP foo(SB)
398 00065 (testdata/ppc64.s:398) JMP CTR
417 00066 (testdata/ppc64.s:417) BEQ CR1, 67(PC)
418 00067 (testdata/ppc64.s:418) BEQ CR1, 66
444 00068 (testdata/ppc64.s:444) BC 4, CTR
454 00069 (testdata/ppc64.s:454) BC $3, R4, 66
474 00070 (testdata/ppc64.s:474) BC $3, R3, LR
504 00071 (testdata/ppc64.s:504) FABS F1, F2
510 00072 (testdata/ppc64.s:510) FADD F1, F2
516 00073 (testdata/ppc64.s:516) FADD F1, F2, F3
522 00074 (testdata/ppc64.s:522) FMADD F1, F2, F3, F4
528 00075 (testdata/ppc64.s:528) FCMPU F1, F2
534 00076 (testdata/ppc64.s:534) FCMPU F1, F2, CR0
543 00077 (testdata/ppc64.s:543) CMP R1, R2
549 00078 (testdata/ppc64.s:549) CMP R1, $4
555 00079 (testdata/ppc64.s:555) CMP R1, CR0, R2
561 00080 (testdata/ppc64.s:561) CMP R1, CR0, $4
570 00081 (testdata/ppc64.s:570) RLDC $4, R1, $5, R2
576 00082 (testdata/ppc64.s:576) RLDC $26, R1, $201326592, R2
582 00083 (testdata/ppc64.s:582) RLDC R1, R2, $4, R3
588 00084 (testdata/ppc64.s:588) RLWMI R1, R2, $201326592, R3
597 00085 (testdata/ppc64.s:597) MOVMW foo(SB), R2
598 00086 (testdata/ppc64.s:598) MOVMW 4(R1), R2
604 00087 (testdata/ppc64.s:604) MOVMW R1, foo(SB)
605 00088 (testdata/ppc64.s:605) MOVMW R1, 4(R2)
615 00089 (testdata/ppc64.s:615) LSW (R1), R2
616 00090 (testdata/ppc64.s:616) LSW (R1)(R2*1), R3
622 00091 (testdata/ppc64.s:622) LSW (R1), $1, R2
623 00092 (testdata/ppc64.s:623) LSW (R1)(R2*1), $1, R3
629 00093 (testdata/ppc64.s:629) STSW R1, (R2)
630 00094 (testdata/ppc64.s:630) STSW R1, (R2)(R3*1)
636 00095 (testdata/ppc64.s:636) STSW R1, $1, (R2)
637 00096 (testdata/ppc64.s:637) STSW R1, $1, (R2)(R3*1)
643 00097 (testdata/ppc64.s:643) MOVHBR (R1), R2
644 00098 (testdata/ppc64.s:644) MOVHBR (R1)(R2*1), R3
650 00099 (testdata/ppc64.s:650) MOVHBR R1, (R2)
651 00100 (testdata/ppc64.s:651) MOVHBR R1, (R2)(R3*1)
657 00101 (testdata/ppc64.s:657) DCBF (R1)
658 00102 (testdata/ppc64.s:658) DCBF (R1)(R2*1)
667 00103 (testdata/ppc64.s:667) NOP
673 00104 (testdata/ppc64.s:673) NOP R2
679 00105 (testdata/ppc64.s:679) NOP F2
685 00106 (testdata/ppc64.s:685) NOP R2
691 00107 (testdata/ppc64.s:691) NOP F2
697 00108 (testdata/ppc64.s:697) NOP $4
705 00109 (testdata/ppc64.s:705) RET
709 00110 (testdata/ppc64.s:709) JMP foo(SB)
710 00111 (testdata/ppc64.s:710) CALL foo(SB)
711 00112 (testdata/ppc64.s:711) JMP foo(SB)
712 00113 (testdata/ppc64.s:712) CALL foo(SB)
720 00114 (testdata/ppc64.s:720) END

View File

@ -1,3 +1,7 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This input was created by taking the instruction productions in
// the old assembler's (9a's) grammar and hand-writing complete
// instructions for each rule, to guarantee we cover the same space.
@ -700,6 +704,13 @@ label1:
// }
RET
// More BR/BL cases, and canonical names JMP, CALL.
BR foo(SB)
BL foo(SB)
JMP foo(SB)
CALL foo(SB)
// END
//
// LEND comma // asm doesn't support the trailing comma.

View File

@ -29,14 +29,14 @@ not be referenced from Go code; static functions are permitted.
See $GOROOT/misc/cgo/stdio and $GOROOT/misc/cgo/gmp for examples. See
"C? Go? Cgo!" for an introduction to using cgo:
http://golang.org/doc/articles/c_go_cgo.html.
https://golang.org/doc/articles/c_go_cgo.html.
CFLAGS, CPPFLAGS, CXXFLAGS and LDFLAGS may be defined with pseudo #cgo
directives within these comments to tweak the behavior of the C or C++
compiler. Values defined in multiple directives are concatenated
together. The directive can include a list of build constraints limiting its
effect to systems satisfying one of the constraints
(see http://golang.org/pkg/go/build/#hdr-Build_Constraints for details about the constraint syntax).
(see https://golang.org/pkg/go/build/#hdr-Build_Constraints for details about the constraint syntax).
For example:
// #cgo CFLAGS: -DPNG_DEBUG=1
@ -90,17 +90,19 @@ compilers may be changed by the CC and CXX environment variables,
respectively; those environment variables may include command line
options.
To enable cgo during cross compiling builds, set the CGO_ENABLED
environment variable to 1 when building the Go tools with make.bash.
Also, set CC_FOR_TARGET to the C cross compiler for the target. CC will
be used for compiling for the host.
The cgo tool is enabled by default for native builds on systems where
it is expected to work. It is disabled by default when
cross-compiling. You can control this by setting the CGO_ENABLED
environment variable when running the go tool: set it to 1 to enable
the use of cgo, and to 0 to disable it. The go tool will set the
build constraint "cgo" if cgo is enabled.
After the Go tools are built, when running the go command, CC_FOR_TARGET is
ignored. The value of CC_FOR_TARGET when running make.bash is the default
compiler. However, you can set the environment variable CC, not CC_FOR_TARGET,
to control the compiler when running the go tool.
CXX_FOR_TARGET works in a similar way for C++ code.
When cross-compiling, you must specify a C cross-compiler for cgo to
use. You can do this by setting the CC_FOR_TARGET environment
variable when building the toolchain using make.bash, or by setting
the CC environment variable any time you run the go tool. The
CXX_FOR_TARGET and CXX environment variables work in a similar way for
C++ code.
Go references to C

View File

@ -781,7 +781,7 @@ func (p *Package) gccCmd() []string {
// incorrectly typed unsigned long. We work around that
// by disabling the builtin functions (this is safe as
// it won't affect the actual compilation of the C code).
// See: http://golang.org/issue/6506.
// See: https://golang.org/issue/6506.
"-fno-builtin",
)
}
@ -1544,11 +1544,13 @@ func (c *typeConv) intExpr(n int64) ast.Expr {
}
// Add padding of given size to fld.
func (c *typeConv) pad(fld []*ast.Field, size int64) []*ast.Field {
func (c *typeConv) pad(fld []*ast.Field, sizes []int64, size int64) ([]*ast.Field, []int64) {
n := len(fld)
fld = fld[0 : n+1]
fld[n] = &ast.Field{Names: []*ast.Ident{c.Ident("_")}, Type: c.Opaque(size)}
return fld
sizes = sizes[0 : n+1]
sizes[n] = size
return fld, sizes
}
// Struct conversion: return Go and (gc) C syntax for type.
@ -1559,6 +1561,7 @@ func (c *typeConv) Struct(dt *dwarf.StructType, pos token.Pos) (expr *ast.Struct
var buf bytes.Buffer
buf.WriteString("struct {")
fld := make([]*ast.Field, 0, 2*len(dt.Field)+1) // enough for padding around every field
sizes := make([]int64, 0, 2*len(dt.Field)+1)
off := int64(0)
// Rename struct fields that happen to be named Go keywords into
@ -1594,7 +1597,7 @@ func (c *typeConv) Struct(dt *dwarf.StructType, pos token.Pos) (expr *ast.Struct
anon := 0
for _, f := range dt.Field {
if f.ByteOffset > off {
fld = c.pad(fld, f.ByteOffset-off)
fld, sizes = c.pad(fld, sizes, f.ByteOffset-off)
off = f.ByteOffset
}
@ -1652,6 +1655,8 @@ func (c *typeConv) Struct(dt *dwarf.StructType, pos token.Pos) (expr *ast.Struct
ident[name] = name
}
fld[n] = &ast.Field{Names: []*ast.Ident{c.Ident(ident[name])}, Type: tgo}
sizes = sizes[0 : n+1]
sizes[n] = size
off += size
buf.WriteString(t.C.String())
buf.WriteString(" ")
@ -1662,9 +1667,22 @@ func (c *typeConv) Struct(dt *dwarf.StructType, pos token.Pos) (expr *ast.Struct
}
}
if off < dt.ByteSize {
fld = c.pad(fld, dt.ByteSize-off)
fld, sizes = c.pad(fld, sizes, dt.ByteSize-off)
off = dt.ByteSize
}
// If the last field in a non-zero-sized struct is zero-sized
// the compiler is going to pad it by one (see issue 9401).
// We can't permit that, because then the size of the Go
// struct will not be the same as the size of the C struct.
// Our only option in such a case is to remove the field,
// which means that it can not be referenced from Go.
for off > 0 && sizes[len(sizes)-1] == 0 {
n := len(sizes)
fld = fld[0 : n-1]
sizes = sizes[0 : n-1]
}
if off != dt.ByteSize {
fatalf("%s: struct size calculation error off=%d bytesize=%d", lineno(pos), off, dt.ByteSize)
}

View File

@ -656,7 +656,7 @@ func (p *Package) writeGccgoOutputFunc(fgcc *os.File, n *Name) {
// used to match gc's struct layout. For example, on 386 Windows,
// gcc wants to 8-align int64s, but gc does not.
// Use __gcc_struct__ to work around http://gcc.gnu.org/PR52991 on x86,
// and http://golang.org/issue/5603.
// and https://golang.org/issue/5603.
func (p *Package) packedAttribute() string {
s := "__attribute__((__packed__"
if !p.GccIsClang && (goarch == "amd64" || goarch == "386") {
@ -809,6 +809,7 @@ func (p *Package) writeExports(fgo2, fm, fgcc, fgcch io.Writer) {
fmt.Fprintf(fgo2, "//go:linkname _cgoexp%s_%s _cgoexp%s_%s\n", cPrefix, exp.ExpName, cPrefix, exp.ExpName)
fmt.Fprintf(fgo2, "//go:cgo_export_static _cgoexp%s_%s\n", cPrefix, exp.ExpName)
fmt.Fprintf(fgo2, "//go:nosplit\n") // no split stack, so no use of m or g
fmt.Fprintf(fgo2, "//go:norace\n") // must not have race detector calls inserted
fmt.Fprintf(fgo2, "func _cgoexp%s_%s(a unsafe.Pointer, n int32) {", cPrefix, exp.ExpName)
fmt.Fprintf(fgo2, "\tfn := %s\n", goname)
// The indirect here is converting from a Go function pointer to a C function pointer.

View File

@ -119,7 +119,7 @@ preempted.
//go:linkname localname importpath.name
The //go:linkname directive instructs the compiler to use ``importpath.name' as the
The //go:linkname directive instructs the compiler to use ``importpath.name'' as the
object file symbol name for the variable or function declared as ``localname'' in the
source code. Because this directive can subvert the type system and package
modularity, it is only enabled in files that have imported "unsafe".

View File

@ -19,6 +19,13 @@ func defframe(ptxt *obj.Prog) {
ptxt.To.Val = int32(gc.Rnd(gc.Curfn.Type.Argwid, int64(gc.Widthptr)))
frame := uint32(gc.Rnd(gc.Stksize+gc.Maxarg, int64(gc.Widthreg)))
// arm64 requires that the frame size (not counting saved LR)
// be empty or be 8 mod 16. If not, pad it.
if frame != 0 && frame%16 != 8 {
frame += 8
}
ptxt.To.Offset = int64(frame)
// insert code to zero ambiguously live variables

View File

@ -1406,7 +1406,7 @@ func (x *Float) ucmp(y *Float) int {
// sum (or difference) shall be 0. However, x+x = x(x) retains the same
// sign as x even when x is zero.
//
// See also: http://play.golang.org/p/RtH3UCt5IH
// See also: https://play.golang.org/p/RtH3UCt5IH
// Add sets z to the rounded sum x+y and returns z. If z's precision is 0,
// it is changed to the larger of x's or y's precision before the operation.

View File

@ -693,7 +693,7 @@ var primes = []string{
"10953742525620032441",
"17908251027575790097",
// http://golang.org/issue/638
// https://golang.org/issue/638
"18699199384836356663",
"98920366548084643601728869055592650835572950932266967461790948584315647051443",

View File

@ -199,6 +199,7 @@ func makeclosure(func_ *Node) *Node {
xfunc.Func.Nname.Name.Funcdepth = func_.Func.Depth
xfunc.Func.Depth = func_.Func.Depth
xfunc.Func.Endlineno = func_.Func.Endlineno
makefuncsym(xfunc.Func.Nname.Sym)
xfunc.Nbody = func_.Nbody
xfunc.Func.Dcl = concat(func_.Func.Dcl, xfunc.Func.Dcl)
@ -300,17 +301,18 @@ func transformclosure(xfunc *Node) {
// func(a int, byval int, &byref *int) {
// println(byval)
// (*&byref)++
// }(42, byval, &byref)
// }(byval, &byref, 42)
// f is ONAME of the actual function.
f := xfunc.Func.Nname
// Get pointer to input arguments and rewind to the end.
// We are going to append captured variables to input args.
// Get pointer to input arguments.
// We are going to insert captured variables before input args.
param := &getinargx(f.Type).Type
original_args := *param // old input args
original_dcl := xfunc.Func.Dcl
xfunc.Func.Dcl = nil
for ; *param != nil; param = &(*param).Down {
}
var v *Node
var addr *Node
var fld *Type
@ -342,12 +344,14 @@ func transformclosure(xfunc *Node) {
fld.Type = fld.Nname.Type
fld.Sym = fld.Nname.Sym
// Declare the new param and append it to input arguments.
// Declare the new param and add it the first part of the input arguments.
xfunc.Func.Dcl = list(xfunc.Func.Dcl, fld.Nname)
*param = fld
param = &fld.Down
}
*param = original_args
xfunc.Func.Dcl = concat(xfunc.Func.Dcl, original_dcl)
// Recalculate param offsets.
if f.Type.Width > 0 {

View File

@ -585,6 +585,10 @@ func funchdr(n *Node) {
Fatal("funchdr: dclcontext")
}
if importpkg == nil && n.Func.Nname != nil {
makefuncsym(n.Func.Nname.Sym)
}
dclcontext = PAUTO
markdcl()
Funcdepth++
@ -1489,12 +1493,21 @@ func funcsym(s *Sym) *Sym {
}
s1 := Pkglookup(s.Name+"·f", s.Pkg)
if s1.Def == nil {
s1.Def = newfuncname(s1)
s1.Def.Func.Shortname = newname(s)
funcsyms = list(funcsyms, s1.Def)
}
s.Fsym = s1
return s1
}
func makefuncsym(s *Sym) {
if isblanksym(s) {
return
}
if compiling_runtime != 0 && s.Name == "getg" {
// runtime.getg() is not a real function and so does
// not get a funcsym.
return
}
s1 := funcsym(s)
s1.Def = newfuncname(s1)
s1.Def.Func.Shortname = newname(s)
funcsyms = list(funcsyms, s1.Def)
}

View File

@ -1735,6 +1735,7 @@ func escwalk(e *EscState, level Level, dst *Node, src *Node) {
}
case ODOT,
ODOTTYPE,
OSLICE,
OSLICEARR,
OSLICE3,

View File

@ -660,6 +660,7 @@ var (
nosplit bool
nowritebarrier bool
systemstack bool
norace bool
)
var debuglive int

View File

@ -1390,6 +1390,7 @@ xfndcl:
$$.Nbody = $3;
$$.Func.Endlineno = lineno;
$$.Noescape = noescape;
$$.Func.Norace = norace;
$$.Func.Nosplit = nosplit;
$$.Func.Nowritebarrier = nowritebarrier;
$$.Func.Systemstack = systemstack;
@ -1579,6 +1580,7 @@ xdcl_list:
}
nointerface = false
noescape = false
norace = false
nosplit = false
nowritebarrier = false
systemstack = false
@ -1632,7 +1634,7 @@ structdcl:
var n *Node
l = $1;
if l == nil {
if l == nil || l.N.Sym.Name == "?" {
// ? symbol, during import (list1(nil) == nil)
n = $2;
if n.Op == OIND {

View File

@ -787,8 +787,15 @@ func mkinlcall1(np **Node, fn *Node, isddd bool) {
call.Type = n.Type
call.Typecheck = 1
// Hide the args from setlno -- the parameters to the inlined
// call already have good line numbers that should be preserved.
args := as.Rlist
as.Rlist = nil
setlno(call, int(n.Lineno))
as.Rlist = args
//dumplist("call body", body);
*np = call

View File

@ -1576,7 +1576,7 @@ func getlinepragma() int {
}
cp = nil
text := lexbuf.String()
text := strings.TrimSuffix(lexbuf.String(), "\r")
if strings.HasPrefix(text, "go:cgo_") {
pragcgo(text)
@ -1612,6 +1612,11 @@ func getlinepragma() int {
return c
}
if verb == "go:norace" {
norace = true
return c
}
if verb == "go:nosplit" {
nosplit = true
return c
@ -1666,7 +1671,7 @@ func getlinepragma() int {
if linep == 0 {
return c
}
text := lexbuf.String()
text := strings.TrimSuffix(lexbuf.String(), "\r")
n := 0
for _, c := range text[linep:] {
if c < '0' || c > '9' {

View File

@ -42,6 +42,7 @@ func ispkgin(pkgs []string) bool {
return false
}
// TODO(rsc): Remove. Put //go:norace on forkAndExecInChild instead.
func isforkfunc(fn *Node) bool {
// Special case for syscall.forkAndExecInChild.
// In the child, this function must not acquire any locks, because
@ -52,7 +53,7 @@ func isforkfunc(fn *Node) bool {
}
func racewalk(fn *Node) {
if ispkgin(omit_pkgs) || isforkfunc(fn) {
if ispkgin(omit_pkgs) || isforkfunc(fn) || fn.Func.Norace {
return
}

View File

@ -760,10 +760,11 @@ func dcommontype(s *Sym, ot int, t *Type) int {
}
var sptr *Sym
if t.Sym != nil && !Isptr[t.Etype] {
sptr = dtypesym(Ptrto(t))
tptr := Ptrto(t)
if !Isptr[t.Etype] && (t.Sym != nil || methods(tptr) != nil) {
sptr = dtypesym(tptr)
} else {
sptr = weaktypesym(Ptrto(t))
sptr = weaktypesym(tptr)
}
// All (non-reflect-allocated) Types share the same zero object.

View File

@ -302,6 +302,10 @@ func staticcopy(l *Node, r *Node, out **NodeList) bool {
orig := r
r = r.Name.Defn.Right
for r.Op == OCONVNOP {
r = r.Left
}
switch r.Op {
case ONAME:
if staticcopy(l, r, out) {
@ -380,6 +384,7 @@ func staticcopy(l *Node, r *Node, out **NodeList) bool {
rr.Orig = rr // completely separate copy
rr.Type = ll.Type
rr.Xoffset += e.Xoffset
setlineno(rr)
*out = list(*out, Nod(OAS, ll, rr))
}
}
@ -394,6 +399,10 @@ func staticcopy(l *Node, r *Node, out **NodeList) bool {
func staticassign(l *Node, r *Node, out **NodeList) bool {
var n1 Node
for r.Op == OCONVNOP {
r = r.Left
}
switch r.Op {
//dump("not static", r);
default:
@ -484,6 +493,7 @@ func staticassign(l *Node, r *Node, out **NodeList) bool {
if e.Expr.Op == OLITERAL {
gdata(&n1, e.Expr, int(n1.Type.Width))
} else {
setlineno(e.Expr)
a = Nod(OXXX, nil, nil)
*a = n1
a.Orig = a // completely separate copy
@ -636,6 +646,7 @@ func structlit(ctxt int, pass int, n *Node, var_ *Node, init **NodeList) {
}
// build list of var.field = expr
setlineno(value)
a = Nod(ODOT, var_, newname(index.Sym))
a = Nod(OAS, a, value)
@ -703,6 +714,7 @@ func arraylit(ctxt int, pass int, n *Node, var_ *Node, init **NodeList) {
}
// build list of var[index] = value
setlineno(value)
a = Nod(OINDEX, var_, index)
a = Nod(OAS, a, value)
@ -866,6 +878,7 @@ func slicelit(ctxt int, n *Node, var_ *Node, init **NodeList) {
}
// build list of var[c] = expr
setlineno(value)
a = Nod(OAS, a, value)
typecheck(&a, Etop)
@ -954,6 +967,7 @@ func maplit(ctxt int, n *Node, var_ *Node, init **NodeList) {
if isliteral(index) && isliteral(value) {
// build vstat[b].a = key;
setlineno(index)
a = Nodintconst(b)
a = Nod(OINDEX, vstat, a)
@ -965,6 +979,7 @@ func maplit(ctxt int, n *Node, var_ *Node, init **NodeList) {
*init = list(*init, a)
// build vstat[b].b = value;
setlineno(value)
a = Nodintconst(b)
a = Nod(OINDEX, vstat, a)
@ -1032,15 +1047,18 @@ func maplit(ctxt int, n *Node, var_ *Node, init **NodeList) {
val = temp(var_.Type.Type)
}
setlineno(r.Left)
a = Nod(OAS, key, r.Left)
typecheck(&a, Etop)
walkstmt(&a)
*init = list(*init, a)
setlineno(r.Right)
a = Nod(OAS, val, r.Right)
typecheck(&a, Etop)
walkstmt(&a)
*init = list(*init, a)
setlineno(val)
a = Nod(OAS, Nod(OINDEX, var_, key), val)
typecheck(&a, Etop)
walkstmt(&a)

View File

@ -770,7 +770,7 @@ func treecopy(n *Node, lineno int32) *Node {
m.Left = treecopy(n.Left, lineno)
m.Right = treecopy(n.Right, lineno)
m.List = listtreecopy(n.List, lineno)
if lineno != -1 {
if lineno != 0 {
m.Lineno = lineno
}
if m.Name != nil && n.Op != ODCLFIELD {
@ -2145,10 +2145,8 @@ func adddot(n *Node) *Node {
// rebuild elided dots
for c := d - 1; c >= 0; c-- {
if n.Left.Type != nil && Isptr[n.Left.Type.Etype] {
n.Left.Implicit = true
}
n.Left = Nod(ODOT, n.Left, newname(dotlist[c].field.Sym))
n.Left.Implicit = true
}
return n

View File

@ -652,6 +652,9 @@ func (s *typeSwitch) typeone(t *Node) *Node {
} else {
name = t.Rlist.N
init = list1(Nod(ODCL, name, nil))
a := Nod(OAS, name, nil)
typecheck(&a, Etop)
init = list(init, a)
}
a := Nod(OAS2, nil, nil)

View File

@ -169,6 +169,7 @@ type Func struct {
Endlineno int32
Norace bool // func must not have race detector annotations
Nosplit bool // func should not execute on separate stack
Nowritebarrier bool // emit compiler error instead of write barrier
Dupok bool // duplicate definitions ok

View File

@ -2582,17 +2582,17 @@ func lookdot(n *Node, t *Type, dostrcmp int) *Type {
}
}
pll := n
ll := n.Left
for ll.Left != nil {
for ll.Left != nil && (ll.Op == ODOT || ll.Op == ODOTPTR || ll.Op == OIND) {
pll = ll
ll = ll.Left
}
if ll.Implicit {
if Isptr[ll.Type.Etype] && ll.Type.Sym != nil && ll.Type.Sym.Def != nil && ll.Type.Sym.Def.Op == OTYPE {
// It is invalid to automatically dereference a named pointer type when selecting a method.
// Make n->left == ll to clarify error message.
n.Left = ll
return nil
}
if pll.Implicit && Isptr[ll.Type.Etype] && ll.Type.Sym != nil && ll.Type.Sym.Def != nil && ll.Type.Sym.Def.Op == OTYPE {
// It is invalid to automatically dereference a named pointer type when selecting a method.
// Make n->left == ll to clarify error message.
n.Left = ll
return nil
}
n.Right = methodname(n.Right, n.Left.Type)

View File

@ -609,8 +609,8 @@ func walkexpr(np **Node, init **NodeList) {
// Transform direct call of a closure to call of a normal function.
// transformclosure already did all preparation work.
// Append captured variables to argument list.
n.List = concat(n.List, n.Left.Func.Enter)
// Prepend captured variables to argument list.
n.List = concat(n.Left.Func.Enter, n.List)
n.Left.Func.Enter = nil
@ -2194,13 +2194,20 @@ func needwritebarrier(l *Node, r *Node) bool {
return false
}
// No write barrier for implicit or explicit zeroing.
if r == nil || iszero(r) {
// No write barrier for implicit zeroing.
if r == nil {
return false
}
// No write barrier for initialization to constant.
if r.Op == OLITERAL {
// Ignore no-op conversions when making decision.
// Ensures that xp = unsafe.Pointer(&x) is treated
// the same as xp = &x.
for r.Op == OCONVNOP {
r = r.Left
}
// No write barrier for zeroing or initialization to constant.
if iszero(r) || r.Op == OLITERAL {
return false
}

View File

@ -154,7 +154,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyMaxDepth = 200
//line go.y:2306
//line go.y:2308
func fixlbrace(lbr int) {
// If the opening brace was an LBODY,
// set up for another one now that we're done.
@ -2538,6 +2538,7 @@ yydefault:
yyVAL.node.Nbody = yyDollar[3].list
yyVAL.node.Func.Endlineno = lineno
yyVAL.node.Noescape = noescape
yyVAL.node.Func.Norace = norace
yyVAL.node.Func.Nosplit = nosplit
yyVAL.node.Func.Nowritebarrier = nowritebarrier
yyVAL.node.Func.Systemstack = systemstack
@ -2545,7 +2546,7 @@ yydefault:
}
case 205:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1401
//line go.y:1402
{
var t *Node
@ -2578,7 +2579,7 @@ yydefault:
}
case 206:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1432
//line go.y:1433
{
var rcvr, t *Node
@ -2616,7 +2617,7 @@ yydefault:
}
case 207:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1470
//line go.y:1471
{
var s *Sym
var t *Type
@ -2643,7 +2644,7 @@ yydefault:
}
case 208:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1495
//line go.y:1496
{
yyVAL.node = methodname1(newname(yyDollar[4].sym), yyDollar[2].list.N.Right)
yyVAL.node.Type = functype(yyDollar[2].list.N, yyDollar[6].list, yyDollar[8].list)
@ -2661,7 +2662,7 @@ yydefault:
}
case 209:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1513
//line go.y:1514
{
yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
yyVAL.node = Nod(OTFUNC, nil, nil)
@ -2670,13 +2671,13 @@ yydefault:
}
case 210:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1521
//line go.y:1522
{
yyVAL.list = nil
}
case 211:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1525
//line go.y:1526
{
yyVAL.list = yyDollar[2].list
if yyVAL.list == nil {
@ -2685,51 +2686,51 @@ yydefault:
}
case 212:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1534
//line go.y:1535
{
yyVAL.list = nil
}
case 213:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1538
//line go.y:1539
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node))
}
case 214:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1542
//line go.y:1543
{
yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
yyVAL.list = yyDollar[2].list
}
case 215:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1549
//line go.y:1550
{
closurehdr(yyDollar[1].node)
}
case 216:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1555
//line go.y:1556
{
yyVAL.node = closurebody(yyDollar[3].list)
fixlbrace(yyDollar[2].i)
}
case 217:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1560
//line go.y:1561
{
yyVAL.node = closurebody(nil)
}
case 218:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1571
//line go.y:1572
{
yyVAL.list = nil
}
case 219:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1575
//line go.y:1576
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
if nsyntaxerrors == 0 {
@ -2737,61 +2738,62 @@ yydefault:
}
nointerface = false
noescape = false
norace = false
nosplit = false
nowritebarrier = false
systemstack = false
}
case 221:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1590
//line go.y:1592
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 223:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1597
//line go.y:1599
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 224:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1603
//line go.y:1605
{
yyVAL.list = list1(yyDollar[1].node)
}
case 225:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1607
//line go.y:1609
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 227:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1614
//line go.y:1616
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 228:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1620
//line go.y:1622
{
yyVAL.list = list1(yyDollar[1].node)
}
case 229:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1624
//line go.y:1626
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 230:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1630
//line go.y:1632
{
var l *NodeList
var n *Node
l = yyDollar[1].list
if l == nil {
if l == nil || l.N.Sym.Name == "?" {
// ? symbol, during import (list1(nil) == nil)
n = yyDollar[2].node
if n.Op == OIND {
@ -2811,14 +2813,14 @@ yydefault:
}
case 231:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1654
//line go.y:1656
{
yyDollar[1].node.SetVal(yyDollar[2].val)
yyVAL.list = list1(yyDollar[1].node)
}
case 232:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1659
//line go.y:1661
{
yyDollar[2].node.SetVal(yyDollar[4].val)
yyVAL.list = list1(yyDollar[2].node)
@ -2826,7 +2828,7 @@ yydefault:
}
case 233:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1665
//line go.y:1667
{
yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil)
yyDollar[2].node.SetVal(yyDollar[3].val)
@ -2834,7 +2836,7 @@ yydefault:
}
case 234:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1671
//line go.y:1673
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.SetVal(yyDollar[5].val)
@ -2843,7 +2845,7 @@ yydefault:
}
case 235:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1678
//line go.y:1680
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.SetVal(yyDollar[5].val)
@ -2852,7 +2854,7 @@ yydefault:
}
case 236:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1687
//line go.y:1689
{
var n *Node
@ -2864,7 +2866,7 @@ yydefault:
}
case 237:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1697
//line go.y:1699
{
var pkg *Pkg
@ -2879,33 +2881,33 @@ yydefault:
}
case 238:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1712
//line go.y:1714
{
yyVAL.node = embedded(yyDollar[1].sym, localpkg)
}
case 239:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1718
//line go.y:1720
{
yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node)
ifacedcl(yyVAL.node)
}
case 240:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1723
//line go.y:1725
{
yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym))
}
case 241:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1727
//line go.y:1729
{
yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[2].sym))
Yyerror("cannot parenthesize embedded type")
}
case 242:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1734
//line go.y:1736
{
// without func keyword
yyDollar[2].list = checkarglist(yyDollar[2].list, 1)
@ -2915,7 +2917,7 @@ yydefault:
}
case 244:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1748
//line go.y:1750
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
@ -2923,7 +2925,7 @@ yydefault:
}
case 245:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1754
//line go.y:1756
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
@ -2931,56 +2933,56 @@ yydefault:
}
case 247:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1763
//line go.y:1765
{
yyVAL.list = list1(yyDollar[1].node)
}
case 248:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1767
//line go.y:1769
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 249:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1772
//line go.y:1774
{
yyVAL.list = nil
}
case 250:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1776
//line go.y:1778
{
yyVAL.list = yyDollar[1].list
}
case 251:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1784
//line go.y:1786
{
yyVAL.node = nil
}
case 253:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1789
//line go.y:1791
{
yyVAL.node = liststmt(yyDollar[1].list)
}
case 255:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1794
//line go.y:1796
{
yyVAL.node = nil
}
case 261:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1805
//line go.y:1807
{
yyDollar[1].node = Nod(OLABEL, yyDollar[1].node, nil)
yyDollar[1].node.Sym = dclstack // context, for goto restrictions
}
case 262:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1810
//line go.y:1812
{
var l *NodeList
@ -2993,7 +2995,7 @@ yydefault:
}
case 263:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1821
//line go.y:1823
{
// will be converted to OFALL
yyVAL.node = Nod(OXFALL, nil, nil)
@ -3001,38 +3003,38 @@ yydefault:
}
case 264:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1827
//line go.y:1829
{
yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil)
}
case 265:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1831
//line go.y:1833
{
yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil)
}
case 266:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1835
//line go.y:1837
{
yyVAL.node = Nod(OPROC, yyDollar[2].node, nil)
}
case 267:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1839
//line go.y:1841
{
yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil)
}
case 268:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1843
//line go.y:1845
{
yyVAL.node = Nod(OGOTO, yyDollar[2].node, nil)
yyVAL.node.Sym = dclstack // context, for goto restrictions
}
case 269:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1848
//line go.y:1850
{
yyVAL.node = Nod(ORETURN, nil, nil)
yyVAL.node.List = yyDollar[2].list
@ -3054,7 +3056,7 @@ yydefault:
}
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1870
//line go.y:1872
{
yyVAL.list = nil
if yyDollar[1].node != nil {
@ -3063,7 +3065,7 @@ yydefault:
}
case 271:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1877
//line go.y:1879
{
yyVAL.list = yyDollar[1].list
if yyDollar[3].node != nil {
@ -3072,163 +3074,163 @@ yydefault:
}
case 272:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1886
//line go.y:1888
{
yyVAL.list = list1(yyDollar[1].node)
}
case 273:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1890
//line go.y:1892
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 274:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1896
//line go.y:1898
{
yyVAL.list = list1(yyDollar[1].node)
}
case 275:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1900
//line go.y:1902
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 276:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1906
//line go.y:1908
{
yyVAL.list = list1(yyDollar[1].node)
}
case 277:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1910
//line go.y:1912
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 278:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1916
//line go.y:1918
{
yyVAL.list = list1(yyDollar[1].node)
}
case 279:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1920
//line go.y:1922
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 280:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1929
//line go.y:1931
{
yyVAL.list = list1(yyDollar[1].node)
}
case 281:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1933
//line go.y:1935
{
yyVAL.list = list1(yyDollar[1].node)
}
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1937
//line go.y:1939
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 283:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1941
//line go.y:1943
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 284:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1946
//line go.y:1948
{
yyVAL.list = nil
}
case 285:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1950
//line go.y:1952
{
yyVAL.list = yyDollar[1].list
}
case 290:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1964
//line go.y:1966
{
yyVAL.node = nil
}
case 292:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1970
//line go.y:1972
{
yyVAL.list = nil
}
case 294:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1976
//line go.y:1978
{
yyVAL.node = nil
}
case 296:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1982
//line go.y:1984
{
yyVAL.list = nil
}
case 298:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1988
//line go.y:1990
{
yyVAL.list = nil
}
case 300:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1994
//line go.y:1996
{
yyVAL.list = nil
}
case 302:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2000
//line go.y:2002
{
yyVAL.val.U = nil
}
case 304:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2010
//line go.y:2012
{
importimport(yyDollar[2].sym, yyDollar[3].val.U.(string))
}
case 305:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2014
//line go.y:2016
{
importvar(yyDollar[2].sym, yyDollar[3].typ)
}
case 306:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2018
//line go.y:2020
{
importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node)
}
case 307:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:2022
//line go.y:2024
{
importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node)
}
case 308:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2026
//line go.y:2028
{
importtype(yyDollar[2].typ, yyDollar[3].typ)
}
case 309:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2030
//line go.y:2032
{
if yyDollar[2].node == nil {
dclcontext = PEXTERN // since we skip the funcbody below
@ -3249,27 +3251,27 @@ yydefault:
}
case 310:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2051
//line go.y:2053
{
yyVAL.sym = yyDollar[1].sym
structpkg = yyVAL.sym.Pkg
}
case 311:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2058
//line go.y:2060
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
importsym(yyDollar[1].sym, OTYPE)
}
case 317:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2078
//line go.y:2080
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
}
case 318:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2082
//line go.y:2084
{
// predefined name like uint8
yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
@ -3282,43 +3284,43 @@ yydefault:
}
case 319:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2093
//line go.y:2095
{
yyVAL.typ = aindex(nil, yyDollar[3].typ)
}
case 320:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2097
//line go.y:2099
{
yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ)
}
case 321:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2101
//line go.y:2103
{
yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ)
}
case 322:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2105
//line go.y:2107
{
yyVAL.typ = tostruct(yyDollar[3].list)
}
case 323:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2109
//line go.y:2111
{
yyVAL.typ = tointerface(yyDollar[3].list)
}
case 324:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2113
//line go.y:2115
{
yyVAL.typ = Ptrto(yyDollar[2].typ)
}
case 325:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2117
//line go.y:2119
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[2].typ
@ -3326,7 +3328,7 @@ yydefault:
}
case 326:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2123
//line go.y:2125
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
@ -3334,7 +3336,7 @@ yydefault:
}
case 327:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2129
//line go.y:2131
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
@ -3342,7 +3344,7 @@ yydefault:
}
case 328:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2137
//line go.y:2139
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
@ -3350,13 +3352,13 @@ yydefault:
}
case 329:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2145
//line go.y:2147
{
yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list)
}
case 330:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2151
//line go.y:2153
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ))
if yyDollar[1].sym != nil {
@ -3366,7 +3368,7 @@ yydefault:
}
case 331:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2159
//line go.y:2161
{
var t *Type
@ -3383,7 +3385,7 @@ yydefault:
}
case 332:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2176
//line go.y:2178
{
var s *Sym
var p *Pkg
@ -3407,43 +3409,43 @@ yydefault:
}
case 333:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2200
//line go.y:2202
{
yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(functype(fakethis(), yyDollar[3].list, yyDollar[5].list)))
}
case 334:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2204
//line go.y:2206
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))
}
case 335:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2209
//line go.y:2211
{
yyVAL.list = nil
}
case 337:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2216
//line go.y:2218
{
yyVAL.list = yyDollar[2].list
}
case 338:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2220
//line go.y:2222
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)))
}
case 339:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2230
//line go.y:2232
{
yyVAL.node = nodlit(yyDollar[1].val)
}
case 340:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2234
//line go.y:2236
{
yyVAL.node = nodlit(yyDollar[2].val)
switch yyVAL.node.Val().Ctype() {
@ -3463,7 +3465,7 @@ yydefault:
}
case 341:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2252
//line go.y:2254
{
yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg))
if yyVAL.node.Op != OLITERAL {
@ -3472,7 +3474,7 @@ yydefault:
}
case 343:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2262
//line go.y:2264
{
if yyDollar[2].node.Val().Ctype() == CTRUNE && yyDollar[4].node.Val().Ctype() == CTINT {
yyVAL.node = yyDollar[2].node
@ -3485,37 +3487,37 @@ yydefault:
}
case 346:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2278
//line go.y:2280
{
yyVAL.list = list1(yyDollar[1].node)
}
case 347:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2282
//line go.y:2284
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 348:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2288
//line go.y:2290
{
yyVAL.list = list1(yyDollar[1].node)
}
case 349:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2292
//line go.y:2294
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 350:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2298
//line go.y:2300
{
yyVAL.list = list1(yyDollar[1].node)
}
case 351:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2302
//line go.y:2304
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}

57
src/cmd/dist/build.go vendored
View File

@ -9,6 +9,7 @@ import (
"flag"
"fmt"
"os"
"os/exec"
"path/filepath"
"strings"
)
@ -1012,7 +1013,7 @@ func cmdbootstrap() {
"*** %s still exists. ***\n"+
"It probably contains stale files that may confuse the build.\n"+
"Please (check what's there and) remove it and try again.\n"+
"See http://golang.org/s/go14nopkg\n",
"See https://golang.org/s/go14nopkg\n",
pathf("%s/src/pkg", goroot))
}
@ -1022,6 +1023,7 @@ func cmdbootstrap() {
setup()
checkCC()
bootstrapBuildTools()
// For the main bootstrap, building for host os/arch.
@ -1051,7 +1053,7 @@ func cmdbootstrap() {
xprintf("\n")
}
xprintf("##### Building compilers and go_bootstrap for host, %s/%s.\n", gohostos, gohostarch)
xprintf("##### Building go_bootstrap for host, %s/%s.\n", gohostos, gohostarch)
for _, dir := range buildorder {
install(dir)
}
@ -1067,6 +1069,57 @@ func cmdbootstrap() {
}
}
// Copied from go/build/build.go.
// Cannot use go/build directly because cmd/dist for a new release
// builds against an old release's go/build, which may be out of sync.
var cgoEnabled = map[string]bool{
"darwin/386": true,
"darwin/amd64": true,
"darwin/arm": true,
"darwin/arm64": true,
"dragonfly/amd64": true,
"freebsd/386": true,
"freebsd/amd64": true,
"linux/386": true,
"linux/amd64": true,
"linux/arm": true,
"linux/arm64": true,
"linux/ppc64le": true,
"android/386": true,
"android/amd64": true,
"android/arm": true,
"netbsd/386": true,
"netbsd/amd64": true,
"netbsd/arm": true,
"openbsd/386": true,
"openbsd/amd64": true,
"solaris/amd64": true,
"windows/386": true,
"windows/amd64": true,
}
func needCC() bool {
switch os.Getenv("CGO_ENABLED") {
case "1":
return true
case "0":
return false
}
return cgoEnabled[gohostos+"/"+gohostarch]
}
func checkCC() {
if !needCC() {
return
}
if _, err := exec.Command(defaultcc, "--help").Output(); err != nil {
fatal("cannot invoke C compiler %q: %v\n\n"+
"Go needs a system C compiler for use with cgo.\n"+
"To set a C compiler, export CC=the-compiler.\n"+
"To disable cgo, export CGO_ENABLED=0.\n", defaultcc, err)
}
}
func defaulttarg() string {
// xgetwd might return a path with symlinks fully resolved, and if
// there happens to be symlinks in goroot, then the hasprefix test

View File

@ -37,7 +37,6 @@ var bootstrapDirs = []string{
"compile/internal/ppc64",
"compile/internal/ssa",
"compile/internal/x86",
"internal/asm",
"internal/gcprog",
"internal/obj",
"internal/obj/arm",
@ -51,10 +50,6 @@ var bootstrapDirs = []string{
"link/internal/ld",
"link/internal/ppc64",
"link/internal/x86",
"old5a",
"old6a",
"old8a",
"old9a",
}
func bootstrapBuildTools() {

33
src/cmd/dist/test.go vendored Normal file → Executable file
View File

@ -259,7 +259,7 @@ func (t *tester) registerStdTest(pkg string) {
"test",
"-short",
t.tags(),
t.timeout(120),
t.timeout(180),
"-gcflags=" + os.Getenv("GO_GCFLAGS"),
}
if t.race {
@ -418,17 +418,13 @@ func (t *tester) registerTests() {
return t.cgoTestSO("misc/cgo/testso")
},
})
if t.goos == "darwin" {
fmt.Println("Skipping misc/cgo/testsovar test. See issue 10360 for details.")
} else {
t.tests = append(t.tests, distTest{
name: "testsovar",
heading: "../misc/cgo/testsovar",
fn: func() error {
return t.cgoTestSO("misc/cgo/testsovar")
},
})
}
t.tests = append(t.tests, distTest{
name: "testsovar",
heading: "../misc/cgo/testsovar",
fn: func() error {
return t.cgoTestSO("misc/cgo/testsovar")
},
})
}
if t.supportedBuildmode("c-archive") {
t.registerTest("testcarchive", "../misc/cgo/testcarchive", "./test.bash")
@ -516,6 +512,9 @@ func (t *tester) dirCmd(dir string, bin string, args ...string) *exec.Cmd {
}
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if vflag > 1 {
errprintf("%s\n", strings.Join(cmd.Args, " "))
}
return cmd
}
@ -731,7 +730,7 @@ func (t *tester) cgoTestSOSupported() bool {
// No exec facility on Android or iOS.
return false
}
if t.goos == "ppc64le" || t.goos == "ppc64" {
if t.goarch == "ppc64le" || t.goarch == "ppc64" {
// External linking not implemented on ppc64 (issue #8912).
return false
}
@ -816,6 +815,14 @@ func (t *tester) raceTest() error {
if err := t.dirCmd("src", "go", "test", "-race", "-short", "flag", "os/exec").Run(); err != nil {
return err
}
if t.cgoEnabled {
env := mergeEnvLists([]string{"GOTRACEBACK=2"}, os.Environ())
cmd := t.dirCmd("misc/cgo/test", "go", "test", "-race", "-short")
cmd.Env = env
if err := cmd.Run(); err != nil {
return err
}
}
if t.extLink() {
// Test with external linking; see issue 9133.
if err := t.dirCmd("src", "go", "test", "-race", "-short", "-ldflags=-linkmode=external", "flag", "os/exec").Run(); err != nil {

View File

@ -299,7 +299,7 @@ var tests = []test{
}
func TestDoc(t *testing.T) {
if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" {
if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
t.Skip("TODO: on darwin/arm, test fails: no such package cmd/doc/testdata")
}
for _, test := range tests {

View File

@ -23,6 +23,9 @@
// first argument must be a full package path. This is similar to the
// command-line usage for the godoc command.
//
// For commands, unless the -cmd flag is present "go doc command"
// shows only the package-level docs for the package.
//
// For complete documentation, run "go help doc".
package main
@ -43,6 +46,7 @@ import (
var (
unexported bool // -u flag
matchCase bool // -c flag
showCmd bool // -cmd flag
)
// usage is a replacement usage function for the flags package.
@ -76,6 +80,7 @@ func do(writer io.Writer, flagSet *flag.FlagSet, args []string) (err error) {
matchCase = false
flagSet.BoolVar(&unexported, "u", false, "show unexported symbols as well as exported")
flagSet.BoolVar(&matchCase, "c", false, "symbol matching honors case (paths not affected)")
flagSet.BoolVar(&showCmd, "cmd", false, "show symbols with package docs even if package is a command")
flagSet.Parse(args)
buildPackage, userPath, symbol := parseArgs(flagSet.Args())
symbol, method := parseSymbol(symbol)

View File

@ -20,6 +20,12 @@ import (
"unicode/utf8"
)
const (
punchedCardWidth = 80 // These things just won't leave us alone.
indentedWidth = punchedCardWidth - len(indent)
indent = " "
)
type Package struct {
writer io.Writer // Destination for output.
name string // Package name, json for encoding/json.
@ -135,7 +141,7 @@ func (pkg *Package) emit(comment string, node ast.Node) {
}
if comment != "" {
pkg.newlines(2) // Guarantee blank line before comment.
doc.ToText(&pkg.buf, comment, " ", "\t", 80)
doc.ToText(&pkg.buf, comment, " ", indent, indentedWidth)
}
pkg.newlines(1)
}
@ -200,11 +206,19 @@ func (pkg *Package) oneLineTypeDecl(spec *ast.TypeSpec) {
// packageDoc prints the docs for the package (package doc plus one-liners of the rest).
func (pkg *Package) packageDoc() {
defer pkg.flush()
pkg.packageClause(false)
if pkg.showInternals() {
pkg.packageClause(false)
}
doc.ToText(&pkg.buf, pkg.doc.Doc, "", "\t", 80)
pkg.newlines(2)
doc.ToText(&pkg.buf, pkg.doc.Doc, "", indent, indentedWidth)
pkg.newlines(1)
if !pkg.showInternals() {
// Show only package docs for commands.
return
}
pkg.newlines(1)
pkg.valueSummary(pkg.doc.Consts)
pkg.valueSummary(pkg.doc.Vars)
pkg.funcSummary(pkg.doc.Funcs)
@ -212,6 +226,14 @@ func (pkg *Package) packageDoc() {
pkg.bugs()
}
// showInternals reports whether we should show the internals
// of a package as opposed to just the package docs.
// Used to decide whether to suppress internals for commands.
// Called only by Package.packageDoc.
func (pkg *Package) showInternals() bool {
return pkg.pkg.Name != "main" || showCmd
}
// packageClause prints the package clause.
// The argument boolean, if true, suppresses the output if the
// user's argument is identical to the actual package path or

75
src/cmd/fix/gotypes.go Normal file
View File

@ -0,0 +1,75 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"go/ast"
"strconv"
)
func init() {
register(gotypesFix)
}
var gotypesFix = fix{
"gotypes",
"2015-07-16",
gotypes,
`Change imports of golang.org/x/tools/go/{exact,types} to go/{constant,types}`,
}
func gotypes(f *ast.File) bool {
truth := fixGoTypes(f)
if fixGoExact(f) {
truth = true
}
return truth
}
func fixGoTypes(f *ast.File) bool {
return rewriteImport(f, "golang.org/x/tools/go/types", "go/types")
}
func fixGoExact(f *ast.File) bool {
// This one is harder because the import name changes.
// First find the import spec.
var importSpec *ast.ImportSpec
walk(f, func(n interface{}) {
if importSpec != nil {
return
}
spec, ok := n.(*ast.ImportSpec)
if !ok {
return
}
path, err := strconv.Unquote(spec.Path.Value)
if err != nil {
return
}
if path == "golang.org/x/tools/go/exact" {
importSpec = spec
}
})
if importSpec == nil {
return false
}
// We are about to rename exact.* to constant.*, but constant is a common
// name. See if it will conflict. This is a hack but it is effective.
exists := renameTop(f, "constant", "constant")
suffix := ""
if exists {
suffix = "_"
}
// Now we need to rename all the uses of the import. RewriteImport
// affects renameTop, but not vice versa, so do them in this order.
renameTop(f, "exact", "constant"+suffix)
rewriteImport(f, "golang.org/x/tools/go/exact", "go/constant")
// renameTop will also rewrite the imported package name. Fix that;
// we know it should be missing.
importSpec.Name = nil
return true
}

View File

@ -0,0 +1,89 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func init() {
addTestCases(gotypesTests, gotypes)
}
var gotypesTests = []testCase{
{
Name: "gotypes.0",
In: `package main
import "golang.org/x/tools/go/types"
import "golang.org/x/tools/go/exact"
var _ = exact.Kind
func f() {
_ = exact.MakeBool(true)
}
`,
Out: `package main
import "go/types"
import "go/constant"
var _ = constant.Kind
func f() {
_ = constant.MakeBool(true)
}
`,
},
{
Name: "gotypes.1",
In: `package main
import "golang.org/x/tools/go/types"
import foo "golang.org/x/tools/go/exact"
var _ = foo.Kind
func f() {
_ = foo.MakeBool(true)
}
`,
Out: `package main
import "go/types"
import "go/constant"
var _ = foo.Kind
func f() {
_ = foo.MakeBool(true)
}
`,
},
{
Name: "gotypes.0",
In: `package main
import "golang.org/x/tools/go/types"
import "golang.org/x/tools/go/exact"
var _ = exact.Kind
var constant = 23 // Use of new package name.
func f() {
_ = exact.MakeBool(true)
}
`,
Out: `package main
import "go/types"
import "go/constant"
var _ = constant_.Kind
var constant = 23 // Use of new package name.
func f() {
_ = constant_.MakeBool(true)
}
`,
},
}

View File

@ -38,6 +38,7 @@ Additional help topics:
buildmode description of build modes
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages description of package lists
testflag description of testing flags
@ -55,8 +56,8 @@ Usage:
Build compiles the packages named by the import paths,
along with their dependencies, but it does not install the results.
If the arguments are a list of .go files, build treats them as a list
of source files specifying a single package.
If the arguments to build are a list of .go files, build treats
them as a list of source files specifying a single package.
When the command line specifies a single main package,
build writes the resulting executable to output.
@ -96,11 +97,10 @@ and test commands:
-x
print the commands.
-asmflags 'flag list'
arguments to pass on each go tool asm invocation.
-buildmode mode
build mode to use. See 'go help buildmode' for more.
-linkshared
link against shared libraries previously created with
-buildmode=shared
-compiler name
name of compiler to use, as in runtime.Compiler (gccgo or gc).
-gccgoflags 'arg list'
@ -115,24 +115,36 @@ and test commands:
option that requires non-default compile flags has a similar effect.
-ldflags 'flag list'
arguments to pass on each go tool link invocation.
-asmflags 'flag list'
arguments to pass on each go tool asm invocation.
-linkshared
link against shared libraries previously created with
-buildmode=shared
-pkgdir dir
install and load all packages from dir instead of the usual locations.
For example, when building with a non-standard configuration,
use -pkgdir to keep generated packages in a separate location.
-tags 'tag list'
a list of build tags to consider satisfied during the build.
For more information about build tags, see the description of
build constraints in the documentation for the go/build package.
-toolexec 'cmd args'
a program to use to invoke toolchain programs like 5a, 5g, and 5l.
For example, instead of running 5g, the go command will run
'cmd args /path/to/5g <arguments for 5g>'.
a program to use to invoke toolchain programs like vet and asm.
For example, instead of running asm, the go command will run
'cmd args /path/to/asm <arguments for asm>'.
The list flags accept a space-separated list of strings. To embed spaces
in an element in the list, surround it with either single or double quotes.
For more about specifying packages, see 'go help packages'.
For more about where packages and binaries are installed,
run 'go help gopath'. For more about calling between Go and C/C++,
run 'go help c'.
run 'go help gopath'.
For more about calling between Go and C/C++, run 'go help c'.
Note: Build adheres to certain conventions such as those described
by 'go help gopath'. Not all projects can follow these conventions,
however. Installations that have their own conventions or that use
a separate software build system may choose to use lower-level
invocations such as 'go tool compile' and 'go tool link' to avoid
some of the overheads and design decisions of the build tool.
See also: go install, go get, go clean.
@ -192,8 +204,8 @@ Usage:
Doc prints the documentation comments associated with the item identified by its
arguments (a package, const, func, type, var, or method) followed by a one-line
summary of each of the first-level items "under" that item (package-level declarations
for a package, methods for a type, etc.).
summary of each of the first-level items "under" that item (package-level
declarations for a package, methods for a type, etc.).
Doc accepts zero, one, or two arguments.
@ -202,27 +214,30 @@ Given no arguments, that is, when run as
go doc
it prints the package documentation for the package in the current directory.
If the package is a command (package main), the exported symbols of the package
are elided from the presentation unless the -cmd flag is provided.
When run with one argument, the argument is treated as a Go-syntax-like representation
of the item to be documented. What the argument selects depends on what is installed
in GOROOT and GOPATH, as well as the form of the argument, which is schematically
one of these:
When run with one argument, the argument is treated as a Go-syntax-like
representation of the item to be documented. What the argument selects depends
on what is installed in GOROOT and GOPATH, as well as the form of the argument,
which is schematically one of these:
go doc <pkg>
go doc <sym>[.<method>]
go doc [<pkg>].<sym>[.<method>]
The first item in this list matched by the argument is the one whose documentation
is printed. (See the examples below.) For packages, the order of scanning is
determined lexically, but the GOROOT tree is always scanned before GOPATH.
The first item in this list matched by the argument is the one whose
documentation is printed. (See the examples below.) For packages, the order of
scanning is determined lexically, but the GOROOT tree is always scanned before
GOPATH.
If there is no package specified or matched, the package in the current directory
is selected, so "go doc Foo" shows the documentation for symbol Foo in the current
package.
If there is no package specified or matched, the package in the current
directory is selected, so "go doc Foo" shows the documentation for symbol Foo in
the current package.
The package path must be either a qualified path or a proper suffix of a path. The
go tool's usual package mechanism does not apply: package path elements like . and
... are not implemented by go doc.
The package path must be either a qualified path or a proper suffix of a
path. The go tool's usual package mechanism does not apply: package path
elements like . and ... are not implemented by go doc.
When run with two arguments, the first must be a full package path (not just a
suffix), and the second is a symbol or symbol and method; this is similar to the
@ -240,7 +255,8 @@ Examples:
Show documentation for current package.
go doc Foo
Show documentation for Foo in the current package.
(Foo starts with a capital letter so it cannot match a package path.)
(Foo starts with a capital letter so it cannot match
a package path.)
go doc encoding/json
Show documentation for the encoding/json package.
go doc json
@ -249,6 +265,10 @@ Examples:
Show documentation and method summary for json.Number.
go doc json.Number.Int64 (or go doc json.number.int64)
Show documentation for json.Number's Int64 method.
go doc cmd/doc
Show package docs for the doc command.
go doc -cmd cmd/doc
Show package docs and exported symbols within the doc command.
go doc template.new
Show documentation for html/template's New function.
(html/template is lexically before text/template)
@ -260,6 +280,10 @@ Examples:
Flags:
-c
Respect case when matching symbols.
-cmd
Treat a command (package main) like a regular package.
Otherwise package main's exported symbols are hidden
when showing the package's top-level documentation.
-u
Show documentation for unexported as well as exported
symbols and methods.
@ -458,6 +482,10 @@ rule is that if the local installation is running version "go1", get
searches for a branch or tag named "go1". If no such version exists it
retrieves the most recent version of the package.
If the vendoring experiment is enabled (see 'go help gopath'),
then when go get checks out or updates a Git repository,
it also updates any git submodules referenced by the repository.
For more about specifying packages, see 'go help packages'.
For more about how 'go get' finds source code to
@ -595,7 +623,8 @@ Run compiles and runs the main package comprising the named Go source files.
A Go source file is defined to be a file ending in a literal ".go" suffix.
By default, 'go run' runs the compiled binary directly: 'a.out arguments...'.
If the -exec flag is given, 'go run' invokes the binary using xprog: 'xprog a.out arguments...'.
If the -exec flag is given, 'go run' invokes the binary using xprog:
'xprog a.out arguments...'.
If the -exec flag is not given, GOOS or GOARCH is different from the system
default, and a program named go_$GOOS_$GOARCH_exec can be found
on the current search path, 'go run' invokes the binary using that program,
@ -659,9 +688,8 @@ In addition to the build flags, the flags handled by 'go test' itself are:
Compile the test binary to the named file.
The test still runs (unless -c or -i is specified).
The test binary also accepts flags that control execution of the test; these
flags are also accessible by 'go test'. See 'go help testflag' for details.
flags are also accessible by 'go test'. See 'go help testflag' for details.
If the test binary needs any other flags, they should be presented after the
package names. The go tool treats as a flag the first argument that begins with
@ -785,10 +813,9 @@ the extension of the file name. These extensions are:
Go source files.
.c, .h
C source files.
If the package uses cgo, these will be compiled with the
OS-native compiler (typically gcc); otherwise they will be
compiled with the Go-specific support compiler,
5c, 6c, or 8c, etc. as appropriate.
If the package uses cgo or SWIG, these will be compiled with the
OS-native compiler (typically gcc); otherwise they will
trigger an error.
.cc, .cpp, .cxx, .hh, .hpp, .hxx
C++ source files. Only useful with cgo or SWIG, and always
compiled with the OS-native compiler.
@ -797,10 +824,9 @@ the extension of the file name. These extensions are:
compiled with the OS-native compiler.
.s, .S
Assembler source files.
If the package uses cgo, these will be assembled with the
If the package uses cgo or SWIG, these will be assembled with the
OS-native assembler (typically gcc (sic)); otherwise they
will be assembled with the Go-specific support assembler,
5a, 6a, or 8a, etc., as appropriate.
will be assembled with the Go assembler.
.swig, .swigcxx
SWIG definition files.
.syso
@ -827,10 +853,10 @@ standard Go tree.
Each directory listed in GOPATH must have a prescribed structure:
The src/ directory holds source code. The path below 'src'
The src directory holds source code. The path below src
determines the import path or executable name.
The pkg/ directory holds installed package objects.
The pkg directory holds installed package objects.
As in the Go tree, each target operating system and
architecture pair has its own subdirectory of pkg
(pkg/GOOS_GOARCH).
@ -839,11 +865,11 @@ If DIR is a directory listed in the GOPATH, a package with
source in DIR/src/foo/bar can be imported as "foo/bar" and
has its compiled form installed to "DIR/pkg/GOOS_GOARCH/foo/bar.a".
The bin/ directory holds compiled commands.
The bin directory holds compiled commands.
Each command is named for its source directory, but only
the final element, not the entire path. That is, the
command with source in DIR/src/foo/quux is installed into
DIR/bin/quux, not DIR/bin/foo/quux. The foo/ is stripped
DIR/bin/quux, not DIR/bin/foo/quux. The "foo/" prefix is stripped
so that you can add DIR/bin to your PATH to get at the
installed commands. If the GOBIN environment variable is
set, commands are installed to the directory it names instead
@ -873,6 +899,162 @@ in the list.
See https://golang.org/doc/code.html for an example.
Internal Directories
Code in or below a directory named "internal" is importable only
by code in the directory tree rooted at the parent of "internal".
Here's an extended version of the directory layout above:
/home/user/gocode/
src/
crash/
bang/ (go code in package bang)
b.go
foo/ (go code in package foo)
f.go
bar/ (go code in package bar)
x.go
internal/
baz/ (go code in package baz)
z.go
quux/ (go code in package main)
y.go
The code in z.go is imported as "foo/internal/baz", but that
import statement can only appear in source files in the subtree
rooted at foo. The source files foo/f.go, foo/bar/x.go, and
foo/quux/y.go can all import "foo/internal/baz", but the source file
crash/bang/b.go cannot.
See https://golang.org/s/go14internal for details.
Vendor Directories
Go 1.5 includes experimental support for using local copies
of external dependencies to satisfy imports of those dependencies,
often referred to as vendoring. Setting the environment variable
GO15VENDOREXPERIMENT=1 enables that experimental support.
When the vendor experiment is enabled,
code below a directory named "vendor" is importable only
by code in the directory tree rooted at the parent of "vendor",
and only using an import path that omits the prefix up to and
including the vendor element.
Here's the example from the previous section,
but with the "internal" directory renamed to "vendor"
and a new foo/vendor/crash/bang directory added:
/home/user/gocode/
src/
crash/
bang/ (go code in package bang)
b.go
foo/ (go code in package foo)
f.go
bar/ (go code in package bar)
x.go
vendor/
crash/
bang/ (go code in package bang)
b.go
baz/ (go code in package baz)
z.go
quux/ (go code in package main)
y.go
The same visibility rules apply as for internal, but the code
in z.go is imported as "baz", not as "foo/vendor/baz".
Code in vendor directories deeper in the source tree shadows
code in higher directories. Within the subtree rooted at foo, an import
of "crash/bang" resolves to "foo/vendor/crash/bang", not the
top-level "crash/bang".
Code in vendor directories is not subject to import path
checking (see 'go help importpath').
When the vendor experiment is enabled, 'go get' checks out
submodules when checking out or updating a git repository
(see 'go help get').
The vendoring semantics are an experiment, and they may change
in future releases. Once settled, they will be on by default.
See https://golang.org/s/go15vendor for details.
Environment variables
The go command, and the tools it invokes, examine a few different
environment variables. For many of these, you can see the default
value of on your system by running 'go env NAME', where NAME is the
name of the variable.
General-purpose environment variables:
GCCGO
The gccgo command to run for 'go build -compiler=gccgo'.
GOARCH
The architecture, or processor, for which to compile code.
Examples are amd64, 386, arm, ppc64.
GOBIN
The directory where 'go install' will install a command.
GOOS
The operating system for which to compile code.
Examples are linux, darwin, windows, netbsd.
GOPATH
See 'go help gopath'.
GORACE
Options for the race detector.
See https://golang.org/doc/articles/race_detector.html.
GOROOT
The root of the go tree.
Environment variables for use with cgo:
CC
The command to use to compile C code.
CGO_ENABLED
Whether the cgo command is supported. Either 0 or 1.
CGO_CFLAGS
Flags that cgo will pass to the compiler when compiling
C code.
CGO_CPPFLAGS
Flags that cgo will pass to the compiler when compiling
C or C++ code.
CGO_CXXFLAGS
Flags that cgo will pass to the compiler when compiling
C++ code.
CGO_LDFLAGS
Flags that cgo will pass to the compiler when linking.
CXX
The command to use to compile C++ code.
Architecture-specific environment variables:
GOARM
For GOARCH=arm, the ARM architecture for which to compile.
Valid values are 5, 6, 7.
GO386
For GOARCH=386, the floating point instruction set.
Valid values are 387, sse2.
Special-purpose environment variables:
GOROOT_FINAL
The root of the installed Go tree, when it is
installed in a location other than where it is built.
File names in stack traces are rewritten from GOROOT to
GOROOT_FINAL.
GO15VENDOREXPERIMENT
Set to 1 to enable the Go 1.5 vendoring experiment.
GO_EXTLINK_ENABLED
Whether the linker should use external linking mode
when using -linkmode=auto with code that uses cgo.
Set to 0 to disable external linking mode, 1 to enable it.
Import path syntax
@ -977,7 +1159,7 @@ example.org/repo or repo.git.
When a version control system supports multiple protocols,
each is tried in turn when downloading. For example, a Git
download tries git://, then https://, then http://.
download tries https://, then git+ssh://.
If the import path is not a known code hosting site and also lacks a
version control qualifier, the go tool attempts to fetch the import
@ -993,6 +1175,10 @@ root. It must be a prefix or an exact match of the package being
fetched with "go get". If it's not an exact match, another http
request is made at the prefix to verify the <meta> tags match.
The meta tag should appear as early in the file as possible.
In particular, it should appear before any raw JavaScript or CSS,
to avoid confusing the go command's restricted parser.
The vcs is one of "git", "hg", "svn", etc,
The repo-root is the root of the version control system
@ -1002,10 +1188,10 @@ For example,
import "example.org/pkg/foo"
will result in the following request(s):
will result in the following requests:
https://example.org/pkg/foo?go-get=1 (preferred)
http://example.org/pkg/foo?go-get=1 (fallback)
http://example.org/pkg/foo?go-get=1 (fallback, only with -insecure)
If that page contains the meta tag
@ -1039,6 +1225,11 @@ unless it is being referred to by that import path. In this way, import comments
let package authors make sure the custom import path is used and not a
direct path to the underlying code hosting site.
If the vendoring experiment is enabled (see 'go help gopath'),
then import path checking is disabled for code found within vendor trees.
This makes it possible to copy code into alternate locations in vendor trees
without needing to update import comments.
See https://golang.org/s/go14customimport for details.

View File

@ -35,8 +35,8 @@ var cmdBuild = &Command{
Build compiles the packages named by the import paths,
along with their dependencies, but it does not install the results.
If the arguments are a list of .go files, build treats them as a list
of source files specifying a single package.
If the arguments to build are a list of .go files, build treats
them as a list of source files specifying a single package.
When the command line specifies a single main package,
build writes the resulting executable to output.
@ -76,11 +76,10 @@ and test commands:
-x
print the commands.
-asmflags 'flag list'
arguments to pass on each go tool asm invocation.
-buildmode mode
build mode to use. See 'go help buildmode' for more.
-linkshared
link against shared libraries previously created with
-buildmode=shared
-compiler name
name of compiler to use, as in runtime.Compiler (gccgo or gc).
-gccgoflags 'arg list'
@ -95,24 +94,36 @@ and test commands:
option that requires non-default compile flags has a similar effect.
-ldflags 'flag list'
arguments to pass on each go tool link invocation.
-asmflags 'flag list'
arguments to pass on each go tool asm invocation.
-linkshared
link against shared libraries previously created with
-buildmode=shared
-pkgdir dir
install and load all packages from dir instead of the usual locations.
For example, when building with a non-standard configuration,
use -pkgdir to keep generated packages in a separate location.
-tags 'tag list'
a list of build tags to consider satisfied during the build.
For more information about build tags, see the description of
build constraints in the documentation for the go/build package.
-toolexec 'cmd args'
a program to use to invoke toolchain programs like 5a, 5g, and 5l.
For example, instead of running 5g, the go command will run
'cmd args /path/to/5g <arguments for 5g>'.
a program to use to invoke toolchain programs like vet and asm.
For example, instead of running asm, the go command will run
'cmd args /path/to/asm <arguments for asm>'.
The list flags accept a space-separated list of strings. To embed spaces
in an element in the list, surround it with either single or double quotes.
For more about specifying packages, see 'go help packages'.
For more about where packages and binaries are installed,
run 'go help gopath'. For more about calling between Go and C/C++,
run 'go help c'.
run 'go help gopath'.
For more about calling between Go and C/C++, run 'go help c'.
Note: Build adheres to certain conventions such as those described
by 'go help gopath'. Not all projects can follow these conventions,
however. Installations that have their own conventions or that use
a separate software build system may choose to use lower-level
invocations such as 'go tool compile' and 'go tool link' to avoid
some of the overheads and design decisions of the build tool.
See also: go install, go get, go clean.
`,
@ -157,6 +168,7 @@ var buildRace bool // -race flag
var buildToolExec []string // -toolexec flag
var buildBuildmode string // -buildmode flag
var buildLinkshared bool // -linkshared flag
var buildPkgdir string // -pkgdir flag
var buildContext = build.Default
var buildToolchain toolchain = noToolchain{}
@ -196,24 +208,25 @@ func init() {
// addBuildFlags adds the flags common to the build, clean, get,
// install, list, run, and test commands.
func addBuildFlags(cmd *Command) {
// NOTE: If you add flags here, also add them to testflag.go.
cmd.Flag.BoolVar(&buildA, "a", false, "")
cmd.Flag.BoolVar(&buildN, "n", false, "")
cmd.Flag.IntVar(&buildP, "p", buildP, "")
cmd.Flag.StringVar(&buildContext.InstallSuffix, "installsuffix", "", "")
cmd.Flag.BoolVar(&buildV, "v", false, "")
cmd.Flag.BoolVar(&buildX, "x", false, "")
cmd.Flag.BoolVar(&buildWork, "work", false, "")
cmd.Flag.Var((*stringsFlag)(&buildAsmflags), "asmflags", "")
cmd.Flag.Var((*stringsFlag)(&buildGcflags), "gcflags", "")
cmd.Flag.Var((*stringsFlag)(&buildLdflags), "ldflags", "")
cmd.Flag.Var((*stringsFlag)(&buildGccgoflags), "gccgoflags", "")
cmd.Flag.Var((*stringsFlag)(&buildContext.BuildTags), "tags", "")
cmd.Flag.Var(buildCompiler{}, "compiler", "")
cmd.Flag.BoolVar(&buildRace, "race", false, "")
cmd.Flag.Var((*stringsFlag)(&buildToolExec), "toolexec", "")
cmd.Flag.StringVar(&buildBuildmode, "buildmode", "default", "")
cmd.Flag.Var((*stringsFlag)(&buildGcflags), "gcflags", "")
cmd.Flag.Var((*stringsFlag)(&buildGccgoflags), "gccgoflags", "")
cmd.Flag.StringVar(&buildContext.InstallSuffix, "installsuffix", "", "")
cmd.Flag.Var((*stringsFlag)(&buildLdflags), "ldflags", "")
cmd.Flag.BoolVar(&buildLinkshared, "linkshared", false, "")
cmd.Flag.StringVar(&buildPkgdir, "pkgdir", "", "")
cmd.Flag.BoolVar(&buildRace, "race", false, "")
cmd.Flag.Var((*stringsFlag)(&buildContext.BuildTags), "tags", "")
cmd.Flag.Var((*stringsFlag)(&buildToolExec), "toolexec", "")
cmd.Flag.BoolVar(&buildWork, "work", false, "")
}
func addBuildFlagsNX(cmd *Command) {
@ -501,11 +514,14 @@ func runInstall(cmd *Command, args []string) {
for _, p := range pkgs {
if p.Target == "" && (!p.Standard || p.ImportPath != "unsafe") {
if p.cmdline {
switch {
case p.gobinSubdir:
errorf("go install: cannot install cross-compiled binaries when GOBIN is set")
case p.cmdline:
errorf("go install: no install location for .go files listed on command line (GOBIN not set)")
} else if p.ConflictDir != "" {
case p.ConflictDir != "":
errorf("go install: no install location for %s: hidden by %s", p.Dir, p.ConflictDir)
} else {
default:
errorf("go install: no install location for directory %s outside GOPATH\n"+
"\tFor more details see: go help gopath", p.Dir)
}
@ -559,12 +575,14 @@ func runInstall(cmd *Command, args []string) {
// If it exists and is an executable file, remove it.
_, targ := filepath.Split(pkgs[0].ImportPath)
targ += exeSuffix
fi, err := os.Stat(targ)
if err == nil {
m := fi.Mode()
if m.IsRegular() {
if m&0111 != 0 || goos == "windows" { // windows never sets executable bit
os.Remove(targ)
if filepath.Join(pkgs[0].Dir, targ) != pkgs[0].Target { // maybe $GOBIN is the current directory
fi, err := os.Stat(targ)
if err == nil {
m := fi.Mode()
if m.IsRegular() {
if m&0111 != 0 || goos == "windows" { // windows never sets executable bit
os.Remove(targ)
}
}
}
}
@ -707,6 +725,9 @@ func goFilesPackage(gofiles []string) *Package {
fatalf("%s is a directory, should be a Go file", file)
}
dir1, _ := filepath.Split(file)
if dir1 == "" {
dir1 = "./"
}
if dir == "" {
dir = dir1
} else if dir != dir1 {
@ -1431,7 +1452,7 @@ func (b *builder) build(a *action) (err error) {
// NOTE(rsc): On Windows, it is critically important that the
// gcc-compiled objects (cgoObjects) be listed after the ordinary
// objects in the archive. I do not know why this is.
// http://golang.org/issue/2601
// https://golang.org/issue/2601
objects = append(objects, cgoObjects...)
// Add system object files.
@ -1935,7 +1956,7 @@ func (b *builder) runOut(dir string, desc string, env []string, cmdargs ...inter
// Sleeping when we observe the race seems to be the most reliable
// option we have.
//
// http://golang.org/issue/3001
// https://golang.org/issue/3001
//
if err != nil && nbusy < 3 && strings.Contains(err.Error(), "text file busy") {
time.Sleep(100 * time.Millisecond << uint(nbusy))
@ -2159,11 +2180,6 @@ func (gcToolchain) gc(b *builder, p *Package, archive, obj string, asmhdr bool,
return ofile, output, err
}
// verifyAsm specifies whether to check the assemblers written in Go
// against the assemblers written in C. If set, asm will run both asm and (say) 6a
// and fail if the two produce different output files.
const verifyAsm = true
func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error {
// Add -I pkg/GOOS_GOARCH so #include "textflag.h" works in .s files.
inc := filepath.Join(goroot, "pkg", "include")
@ -2172,31 +2188,12 @@ func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error {
if err := b.run(p.Dir, p.ImportPath, nil, args...); err != nil {
return err
}
// Disable checks when additional flags are passed, as the old assemblers
// don't implement some of them (e.g., -shared).
if verifyAsm && len(buildAsmflags) == 0 {
old := ""
switch goarch {
case "arm":
old = "old5a"
case "amd64", "amd64p32":
old = "old6a"
case "386":
old = "old8a"
case "ppc64", "ppc64le":
old = "old9a"
}
if old != "" {
if err := toolVerify(b, p, old, ofile, args); err != nil {
return err
}
}
}
return nil
}
// toolVerify checks that the command line args writes the same output file
// if run using newTool instead.
// Unused now but kept around for future use.
func toolVerify(b *builder, p *Package, newTool string, ofile string, args []interface{}) error {
newArgs := make([]interface{}, len(args))
copy(newArgs, args)
@ -2836,7 +2833,7 @@ func (b *builder) ccompilerCmd(envvar, defcmd, objdir string) []string {
// On OS X, some of the compilers behave as if -fno-common
// is always set, and the Mach-O linker in 6l/8l assumes this.
// See http://golang.org/issue/3253.
// See https://golang.org/issue/3253.
if goos == "darwin" {
a = append(a, "-fno-common")
}
@ -3109,7 +3106,7 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, pcCFLAGS, pcLDFLAGS, cgofi
// NOTE(rsc): The importObj is a 5c/6c/8c object and on Windows
// must be processed before the gcc-generated objects.
// Put it first. http://golang.org/issue/2601
// Put it first. https://golang.org/issue/2601
outObj = stringList(nonGccObjs, ofile)
return outGo, outObj, nil

View File

@ -10,11 +10,10 @@ var cmdDoc = &Command{
CustomFlags: true,
Short: "show documentation for package or symbol",
Long: `
Doc prints the documentation comments associated with the item identified by its
arguments (a package, const, func, type, var, or method) followed by a one-line
summary of each of the first-level items "under" that item (package-level declarations
for a package, methods for a type, etc.).
summary of each of the first-level items "under" that item (package-level
declarations for a package, methods for a type, etc.).
Doc accepts zero, one, or two arguments.
@ -23,27 +22,30 @@ Given no arguments, that is, when run as
go doc
it prints the package documentation for the package in the current directory.
If the package is a command (package main), the exported symbols of the package
are elided from the presentation unless the -cmd flag is provided.
When run with one argument, the argument is treated as a Go-syntax-like representation
of the item to be documented. What the argument selects depends on what is installed
in GOROOT and GOPATH, as well as the form of the argument, which is schematically
one of these:
When run with one argument, the argument is treated as a Go-syntax-like
representation of the item to be documented. What the argument selects depends
on what is installed in GOROOT and GOPATH, as well as the form of the argument,
which is schematically one of these:
go doc <pkg>
go doc <sym>[.<method>]
go doc [<pkg>].<sym>[.<method>]
The first item in this list matched by the argument is the one whose documentation
is printed. (See the examples below.) For packages, the order of scanning is
determined lexically, but the GOROOT tree is always scanned before GOPATH.
The first item in this list matched by the argument is the one whose
documentation is printed. (See the examples below.) For packages, the order of
scanning is determined lexically, but the GOROOT tree is always scanned before
GOPATH.
If there is no package specified or matched, the package in the current directory
is selected, so "go doc Foo" shows the documentation for symbol Foo in the current
package.
If there is no package specified or matched, the package in the current
directory is selected, so "go doc Foo" shows the documentation for symbol Foo in
the current package.
The package path must be either a qualified path or a proper suffix of a path. The
go tool's usual package mechanism does not apply: package path elements like . and
... are not implemented by go doc.
The package path must be either a qualified path or a proper suffix of a
path. The go tool's usual package mechanism does not apply: package path
elements like . and ... are not implemented by go doc.
When run with two arguments, the first must be a full package path (not just a
suffix), and the second is a symbol or symbol and method; this is similar to the
@ -61,7 +63,8 @@ Examples:
Show documentation for current package.
go doc Foo
Show documentation for Foo in the current package.
(Foo starts with a capital letter so it cannot match a package path.)
(Foo starts with a capital letter so it cannot match
a package path.)
go doc encoding/json
Show documentation for the encoding/json package.
go doc json
@ -70,6 +73,10 @@ Examples:
Show documentation and method summary for json.Number.
go doc json.Number.Int64 (or go doc json.number.int64)
Show documentation for json.Number's Int64 method.
go doc cmd/doc
Show package docs for the doc command.
go doc -cmd cmd/doc
Show package docs and exported symbols within the doc command.
go doc template.new
Show documentation for html/template's New function.
(html/template is lexically before text/template)
@ -81,6 +88,10 @@ Examples:
Flags:
-c
Respect case when matching symbols.
-cmd
Treat a command (package main) like a regular package.
Otherwise package main's exported symbols are hidden
when showing the package's top-level documentation.
-u
Show documentation for unexported as well as exported
symbols and methods.

View File

@ -402,7 +402,7 @@ func (g *Generator) exec(words []string) {
"GOFILE=" + g.file,
"GOPACKAGE=" + g.pkg,
}
cmd.Env = mergeEnvLists(env, os.Environ())
cmd.Env = mergeEnvLists(env, origEnv)
err := cmd.Run()
if err != nil {
g.errorf("running %q: %s", words[0], err)

View File

@ -51,6 +51,10 @@ rule is that if the local installation is running version "go1", get
searches for a branch or tag named "go1". If no such version exists it
retrieves the most recent version of the package.
If the vendoring experiment is enabled (see 'go help gopath'),
then when go get checks out or updates a Git repository,
it also updates any git submodules referenced by the repository.
For more about specifying packages, see 'go help packages'.
For more about how 'go get' finds source code to
@ -77,10 +81,20 @@ func runGet(cmd *Command, args []string) {
fatalf("go get: cannot use -f flag without -u")
}
// Disable any prompting for passwords by Git.
// Only has an effect for 2.3.0 or later, but avoiding
// the prompt in earlier versions is just too hard.
// See golang.org/issue/9341.
os.Setenv("GIT_TERMINAL_PROMPT", "0")
// Phase 1. Download/update.
var stk importStack
mode := 0
if *getT {
mode |= getTestDeps
}
for _, arg := range downloadPaths(args) {
download(arg, &stk, *getT)
download(arg, nil, &stk, mode)
}
exitIfErrors()
@ -96,12 +110,13 @@ func runGet(cmd *Command, args []string) {
}
args = importPaths(args)
packagesForBuild(args)
// Phase 3. Install.
if *getD {
// Download only.
// Check delayed until now so that importPaths
// has a chance to print errors.
// and packagesForBuild have a chance to print errors.
return
}
@ -152,8 +167,15 @@ var downloadRootCache = map[string]bool{}
// download runs the download half of the get command
// for the package named by the argument.
func download(arg string, stk *importStack, getTestDeps bool) {
p := loadPackage(arg, stk)
func download(arg string, parent *Package, stk *importStack, mode int) {
load := func(path string, mode int) *Package {
if parent == nil {
return loadPackage(path, stk)
}
return loadImport(path, parent.Dir, parent, stk, nil, mode)
}
p := load(arg, mode)
if p.Error != nil && p.Error.hard {
errorf("%s", p.Error)
return
@ -177,7 +199,7 @@ func download(arg string, stk *importStack, getTestDeps bool) {
// Only process each package once.
// (Unless we're fetching test dependencies for this package,
// in which case we want to process it again.)
if downloadCache[arg] && !getTestDeps {
if downloadCache[arg] && mode&getTestDeps == 0 {
return
}
downloadCache[arg] = true
@ -186,10 +208,13 @@ func download(arg string, stk *importStack, getTestDeps bool) {
wildcardOkay := len(*stk) == 0
isWildcard := false
// Note: Do not stk.push(arg) and defer stk.pop() here.
// The push/pop below are using updated values of arg in some cases.
// Download if the package is missing, or update if we're using -u.
if p.Dir == "" || *getU {
// The actual download.
stk.push(p.ImportPath)
stk.push(arg)
err := downloadPackage(p)
if err != nil {
errorf("%s", &PackageError{ImportStack: stk.copy(), Err: err.Error()})
@ -197,6 +222,17 @@ func download(arg string, stk *importStack, getTestDeps bool) {
return
}
// Warn that code.google.com is shutting down. We
// issue the warning here because this is where we
// have the import stack.
if strings.HasPrefix(p.ImportPath, "code.google.com") {
fmt.Fprintf(os.Stderr, "warning: code.google.com is shutting down; import path %v will stop working\n", p.ImportPath)
if len(*stk) > 1 {
fmt.Fprintf(os.Stderr, "warning: package %v\n", strings.Join(*stk, "\n\timports "))
}
}
stk.pop()
args := []string{arg}
// If the argument has a wildcard in it, re-evaluate the wildcard.
// We delay this until after reloadPackage so that the old entry
@ -223,7 +259,7 @@ func download(arg string, stk *importStack, getTestDeps bool) {
pkgs = pkgs[:0]
for _, arg := range args {
stk.push(arg)
p := loadPackage(arg, stk)
p := load(arg, mode)
stk.pop()
if p.Error != nil {
errorf("%s", p.Error)
@ -254,18 +290,31 @@ func download(arg string, stk *importStack, getTestDeps bool) {
}
// Process dependencies, now that we know what they are.
for _, dep := range p.deps {
for _, path := range p.Imports {
if path == "C" {
continue
}
// Don't get test dependencies recursively.
download(dep.ImportPath, stk, false)
// Imports is already vendor-expanded.
download(path, p, stk, 0)
}
if getTestDeps {
if mode&getTestDeps != 0 {
// Process test dependencies when -t is specified.
// (Don't get test dependencies for test dependencies.)
// We pass useVendor here because p.load does not
// vendor-expand TestImports and XTestImports.
// The call to loadImport inside download needs to do that.
for _, path := range p.TestImports {
download(path, stk, false)
if path == "C" {
continue
}
download(path, p, stk, useVendor)
}
for _, path := range p.XTestImports {
download(path, stk, false)
if path == "C" {
continue
}
download(path, p, stk, useVendor)
}
}

Some files were not shown because too many files have changed in this diff Show More