mirror of https://github.com/golang/go.git
[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:
commit
359747da15
87
AUTHORS
87
AUTHORS
|
|
@ -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>
|
||||
|
|
|
|||
107
CONTRIBUTORS
107
CONTRIBUTORS
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
957
api/next.txt
957
api/next.txt
|
|
@ -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
|
||||
369
doc/asm.html
369
doc/asm.html
|
|
@ -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&1<<2</code> is 4, not 0—it parses as <code>(3&1)<<2</code>
|
||||
not <code>3&(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><></code> to the name, as in <code>foo<>(SB)</code>, makes the name
|
||||
Adding <code><></code> to the name, as in <span style="white-space: nowrap"><code>foo<>(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->16</code>
|
||||
<br>
|
||||
<code>R0>>16</code>
|
||||
<br>
|
||||
<code>R0<<16</code>
|
||||
<br>
|
||||
<code>R0@>16</code>:
|
||||
For <code><<</code>, left shift <code>R0</code> by 16 bits.
|
||||
The other codes are <code>-></code> (arithmetic right shift),
|
||||
<code>>></code> (logical right shift), and
|
||||
<code>@></code> (rotate right).
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<code>R0->R1</code>
|
||||
<br>
|
||||
<code>R0>>R1</code>
|
||||
<br>
|
||||
<code>R0<<R1</code>
|
||||
<br>
|
||||
<code>R0@>R1</code>:
|
||||
For <code><<</code>, left shift <code>R0</code> by the count in <code>R1</code>.
|
||||
The other codes are <code>-></code> (arithmetic right shift),
|
||||
<code>>></code> (logical right shift), and
|
||||
<code>@></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>
|
||||
|
|
|
|||
|
|
@ -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 < 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 < numCPU; i++ {
|
||||
go v.DoSome(i*len(v)/numCPU, (i+1)*len(v)/numCPU, u, c)
|
||||
}
|
||||
// Drain the channel.
|
||||
for i := 0; i < NCPU; i++ {
|
||||
for i := 0; i < numCPU; i++ {
|
||||
<-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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
833
doc/go1.5.html
833
doc/go1.5.html
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
“Ogle” 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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>""</code>. The text between the quotes,
|
||||
which may not contain newlines, forms the
|
||||
quotes, as in <code>"bar"</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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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.
|
|
@ -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
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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) }
|
||||
|
|
|
|||
|
|
@ -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{}))
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
//+build gccgo
|
||||
|
||||
package dep
|
||||
|
||||
func ImplementedInAsm() {}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
//+build !gccgo
|
||||
|
||||
package dep
|
||||
|
||||
func ImplementedInAsm()
|
||||
|
|
@ -1,7 +1,12 @@
|
|||
package main
|
||||
|
||||
import "dep"
|
||||
import (
|
||||
"dep"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defer dep.ImplementedInAsm()
|
||||
runtime.GC()
|
||||
dep.V = dep.F() + 1
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
# define VAR __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
# define VAR
|
||||
# define VAR extern
|
||||
#endif
|
||||
|
||||
VAR const char *exported_var;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -1 +0,0 @@
|
|||
/usr/local/go/bin
|
||||
|
|
@ -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 .
|
||||
|
|
@ -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.
|
|
@ -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 |
|
|
@ -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]." && 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>
|
||||
|
|
@ -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
|
||||
-------------
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ var armJump = map[string]bool{
|
|||
"BGT": true,
|
||||
"BLE": true,
|
||||
"CALL": true,
|
||||
"JMP": true,
|
||||
}
|
||||
|
||||
func jumpArm(word string) bool {
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ var arm64Jump = map[string]bool{
|
|||
"CBZW": true,
|
||||
"CBNZ": true,
|
||||
"CBNZW": true,
|
||||
"JMP": true,
|
||||
}
|
||||
|
||||
func jumpArm64(word string) bool {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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".
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -693,7 +693,7 @@ var primes = []string{
|
|||
"10953742525620032441",
|
||||
"17908251027575790097",
|
||||
|
||||
// http://golang.org/issue/638
|
||||
// https://golang.org/issue/638
|
||||
"18699199384836356663",
|
||||
|
||||
"98920366548084643601728869055592650835572950932266967461790948584315647051443",
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1735,6 +1735,7 @@ func escwalk(e *EscState, level Level, dst *Node, src *Node) {
|
|||
}
|
||||
|
||||
case ODOT,
|
||||
ODOTTYPE,
|
||||
OSLICE,
|
||||
OSLICEARR,
|
||||
OSLICE3,
|
||||
|
|
|
|||
|
|
@ -660,6 +660,7 @@ var (
|
|||
nosplit bool
|
||||
nowritebarrier bool
|
||||
systemstack bool
|
||||
norace bool
|
||||
)
|
||||
|
||||
var debuglive int
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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' {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue